Hello all,
I am using Maven 3 with Nexus 2.
I am building a cli tool (let's call it cli) , which has dependencies on
some other libraries (let's call them dependencyA and dependencyB)
To make my cli tool work in every environment, I rely on the manifest
classpath, generated with :
<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-jar-plugin</artifactId>
  <configuration>
    <archive>
      <manifest>
        <addClasspath>true</addClasspath>
      </manifest>
    </archive>
  </configuration>
</plugin>

and then I package everything (cli and its dependencies) using an assembly

my launcher script looks like :
java -jar cli*.jar (the * is there so that I won't need to update the
script for any versions)

If I build everything locally, in version 1.1.0-SNAPSHOT, here is the
manifest classpath entry :
Class-Path: dependencyA-1.1.0-SNAPSHOT.jar dependencyB-1.1.0-S
 NAPSHOT.jar  slf4j-jdk14-1.6.6.jar slf4j-api-1.6.6.jar

locally, everything is fine

Now, if I download the assembly, built by a CI tool and published to Nexus,
the manifest is still the same, but look at the names of the dependencies :
~> ls lib/
cli-1.1.0-20130105.224257-7.jar  dependencyA-1.1.0-20130105.224257-7.jar
dependencyB-1.1.0-20130105.224257-7.jar

As you can imagine, the cli won't find it's dependencies since their
version does not match any more the manifest's (SNAPSHOT in the manifest,
1.1.0-20130105.224257-7 is what we have)

It seems like this issue was fixed some time ago :
http://jira.codehaus.org/browse/MJAR-28

Is is a regression ?

Thanks a lot for your help!
Anthony

Reply via email to