Uploaded image for project: 'UIMA'
  1. UIMA
  2. UIMA-2963

upgrade maven-dependency-plugin to >= 2.6

    XMLWordPrintableJSON

Details

    Description

      Currently the UIMA-wide parent pom specifies maven-dependency-plugin version 2.3. The currently released version is 2.8. As of version 2.6, a new configuration parameter, useBaseName, is available which prevents resolution of versions 2.4.1-SNAPSHOT from being converted to 2.4.1-20130303.12345678 where the last 2 numbers are the snapshot being used. This feature is needed to get SNAPSHOT builds working for the new design of Eclipse Runtime packaging - where the design embeds Jars inside Jars. Here are the details:

      We build OSGi bundles / Eclipse plugins, which sometimes are collections of other Jars. The current best practice is to embed those Jars without unpacking them, thus preserving any License/Notice files they may have, etc.

      Felix's maven-bundle-plugin supports this using the packaging "Jar", and the instructions _exportcontents, and Embed-Dependency. In this design, the dependency section of the POM contains references to all the Jars that have packages that are needed. The bundle plugin uses these instructions and the Maven dependency information to create a Manifest Bundle-ClassPath entry which has the names of the needed dependent Jars.

      Another build step, outside of the Felix bundle step, uses Maven dependency plugin's copy-dependencies, to copy the Jars to the target/classes spot, where the maven jar plugin looks for building the final Jar; this creates the Jars-inside-Jar structure.

      Unfortunately, when uploading Snapshots to Snapshot repositories, Maven renames the x.y.z-SNAPSHOT Jar to some name like x.y.z-20130303.12345678 where the last 2 numbers are the timestamp of the Jar.

      The default for older versions of the maven dependency plugin, when copying the Jar from a snapshot repository, is to keep the -20130303.12345678 style suffix, instead of using the base name -SNAPSHOT. This convention breaks the Felix bundle build, which put into the manifest in multiple spots the name using the -SNAPSHOT convention.

      More recent versions of the maven-dependency-plugin (after 2.6) have a new configuration parameter, useBaseName, that has Maven use the -SNAPSHOT name locally, when fetching from a remote repository. This is the default, in version 2.6 and later.

      Attachments

        Activity

          People

            schor Marshall Schor
            schor Marshall Schor
            Votes:
            0 Vote for this issue
            Watchers:
            1 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved: