Add db-migrations-flyway-liquibase: Flyway vs Liquibase migrations, rollbacks and baselines on Spring Boot 4.1
Companion code for the Flyway vs Liquibase article: checksum validation, out-of-order and repeatable migrations, baselining an existing schema, Flyway Community's undo/diff/deploy stubs, concurrent-startup locking for both tools, Liquibase changeset identity and rollback (auto-generated vs explicit), a verified Liquibase 5.0.3 filename-caching defect, the new OSS license service, the FSL license change, and running both tools against one database. Co-Authored-By: Claude Sonnet 5 <[email protected]> Claude-Session: https://claude.ai/code/session_01Q6XdRjtsp4862EM44T7i9a
This commit is contained in:
@@ -0,0 +1,35 @@
|
||||
# 12. The OSS license service
|
||||
|
||||
[← 11. Liquibase locking](11-liquibase-locking.md) · [Index](../README.md) · Next: [13. The FSL license change →](13-the-fsl-license-change.md)
|
||||
|
||||
Chapter [7](07-why-there-is-no-undo.md) found that Flyway Community gates certain commands behind
|
||||
a runtime `FlywayRedgateEditionRequiredException`. Liquibase Community 5.0 shipped something new
|
||||
alongside its license change (chapter [13](13-the-fsl-license-change.md)): a `liquibase.license`
|
||||
package, inside `liquibase-core` itself, that didn't exist in 4.x.
|
||||
[`LiquibaseLicenseServiceTest`](../src/test/java/com/ankurm/dbmigrations/liquibase/LiquibaseLicenseServiceTest.java)
|
||||
doesn't read about what that package does — it asks the actual service Spring Boot's
|
||||
`LiquibaseAutoConfiguration` runs on top of, directly:
|
||||
|
||||
```
|
||||
implementation: liquibase.license.OSSLicenseService
|
||||
licenseIsInstalled(): false
|
||||
licenseIsValid("any"): false
|
||||
getLicenseInfo(): ""
|
||||
```
|
||||
|
||||
(from [`docs/output/14-liquibase-oss-license-service.txt`](output/14-liquibase-oss-license-service.txt))
|
||||
|
||||
On the classpath this module uses — Community only, no Liquibase Pro artifact anywhere — the
|
||||
license service Liquibase actually wires up is `OSSLicenseService`, which reports itself as
|
||||
unlicensed and returns an empty license description. **This test found no evidence of functional
|
||||
gating anywhere in the classpath this module runs on**: `update()`, `rollback()`, and every
|
||||
changeset type this module exercises worked identically whether or not a license was present,
|
||||
because none of them ever asked the license service anything. That's a meaningfully different
|
||||
shape from Flyway's stub-and-throw pattern in chapter [7](07-why-there-is-no-undo.md) — Liquibase
|
||||
Pro's paid features live in separate, additional artifacts rather than as gated stubs inside the
|
||||
Community jar.
|
||||
|
||||
## Going deeper
|
||||
|
||||
- This test is a snapshot of Liquibase 5.0.3's Community classpath, not a guarantee about future releases — the license service's existence at all, brand new in 5.0, is itself evidence that Liquibase's commercial boundary is actively being redrawn (chapter [13](13-the-fsl-license-change.md) covers why).
|
||||
- [Liquibase Pro feature comparison](https://www.liquibase.com/liquibase-pricing) (`rel="nofollow"`) — what Pro actually adds, as separate functionality rather than unlocked stubs.
|
||||
Reference in New Issue
Block a user