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)

Most upvoted comments

@driessamyn and @ktor could you check if the attached jar (renamed as a .zip for github reasons) works correctly?

We’re getting ready to release that, but my understanding of OSGi is tenuous and some additional verification would be a huge help.

Thanks!

liquibase-4.9.1-RC1.zip

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