Files
spring-boot-demo/db-migrations-flyway-liquibase/docs/12-the-oss-license-service.md
T
asmhatreandClaude Sonnet 5 3908331431 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
2026-09-15 07:08:57 +00:00

36 lines
2.3 KiB
Markdown

# 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.