liquibase: OSGi data in MANIFEST.MF is incorrect in version 4.7.0
Environment
Liquibase Version: 4.7.0
Liquibase Integration & Version: liquibase-core
Liquibase Extension(s) & Version: n/a
Database Vendor & Version: n/a
Operating System Type & Version: MacOs, openjdk 11.0.11 2021-04-20 LTS
Description
The MANIFEST.MF
file inside liquibase-core-4.7.0.jar
is not valid.
Something around versioning seems to have gone wrong.
Specifically:
Bundle-Version: 0.0.0.SNAPSHOT
should be Bundle-Version: 4.7.0
Liquibase packages inside the Import-Package
list have incorrect version definition. E.g.
...,liquibase.change;resolution:=optional;version="[4.7.0,1),...
the version specification should be [4.7,5)
and there is an issue with quotation marks as the opening quotes after version=
don’t get closed.
A locally compiled earlier version has this instead:
`…liquibase.change;resolution:=optional;version=“[4.5,5)”,…
This means the bundle cannot be resolved. Trying do to so using bnd shows an error like this:
Resolution failed. Capabilities satisfying the following requirements could not be found:
[<<INITIAL>>]
⇒ ...
⇒ osgi.wiring.package: (&(osgi.wiring.package=...)
⇒ [... version=5.0.0.0-SNAPSHOT]
⇒ osgi.wiring.package: (&(osgi.wiring.package=liquibase.database)(version>=4.7.0)(!(version>=5.0.0)))
⇒ [org.liquibase.core version=0.0.0.SNAPSHOT]
⇒ osgi.wiring.package: (osgi.wiring.package=1))
Steps To Reproduce
To see the contents of the file:
- download
liquibase-core-4.7.0.jar
from Maven Central - extract/unpack files inside
liquibase-core-4.7.0.jar
- open
META-INF/MANIFEST.MF
Loading the resolution issue:
- Create an OSGi test that references liquibase.
- Run the test
Actual Behavior
- Bundle doesn’t resolve
Expected/Desired Behavior
- Bundle should be resolved correctly
About this issue
- Original URL
- State: closed
- Created 2 years ago
- Reactions: 1
- Comments: 18 (12 by maintainers)
I ran a test with the attached and it worked. Thanks for this, much appreciated!
I could create a standalone OSGi test that you may be able to integrate with your pipeline if you think that would be useful?
I believe the problem is here: https://github.com/liquibase/liquibase/blob/16b3e843d63dc4419c264bd8170c357a17c5325a/.github/util/ManifestReversion.java#L33
I checked the MANIFEST.MF file for the wrapping up 4.9.0 release and the quoting is correct in the final build. I’m going to close this issue as fixed in 4.8.0 since it was about the problems in the MANIFEST.MF file, but I’ll open a new ticket for what you found @ktor .