Uploaded image for project: 'Maven Assembly Plugin'
  1. Maven Assembly Plugin
  2. MASSEMBLY-809

Assembly plugin requires precise dependency order when classifier is used

    XMLWordPrintableJSON

Details

    • Bug
    • Status: Closed
    • Major
    • Resolution: Not A Bug
    • 2.5.5, 2.6
    • None
    • dependencySet
    • None

    Description

      Assembly plugin wrongly pack dependencies of project when classifier dependencies are defined in random order.
      For the plugin pack it in right way it requires ordering dependencies precisely where dependency without the classifier is used before the dependency with it.

      If wrong order is used then the result jar seems to contain both dependencies - with and without classifier. But the file without classifier is not contained and the content of it is equal to the one with the classifier.

      For building Narayana project there is used pom.xml with

          <dependency>
            <groupId>org.jboss.narayana.xts</groupId>
            <artifactId>jbossxts</artifactId>
            <version>${project.version}</version>
            <classifier>api</classifier>
          </dependency>
          <dependency>
            <groupId>org.jboss.narayana.xts</groupId>
            <artifactId>jbossxts</artifactId>
            <version>${project.version}</version>
          </dependency>
      

      pom.xml: https://github.com/jbosstm/narayana/blob/master/narayana-full/pom.xml
      bin.xml: https://github.com/jbosstm/narayana/blob/master/narayana-full/src/main/assembly/bin.xml

      For this descriptor the content of the result zip file is

          44658  06-01-2016 14:17   narayana-full-5.3.3.Final-SNAPSHOT/lib/xts/jbossxts-api.jar
          44658  06-01-2016 14:17   narayana-full-5.3.3.Final-SNAPSHOT/lib/xts/jbossxts.jar
      

      You can see the artifacts jbossxts-api and jbossxts are the same.

      If ordering is changed

         <dependency>
            <groupId>org.jboss.narayana.xts</groupId>
            <artifactId>jbossxts</artifactId>
            <version>${project.version}</version>
          </dependency>
          <dependency>
            <groupId>org.jboss.narayana.xts</groupId>
            <artifactId>jbossxts</artifactId>
            <version>${project.version}</version>
            <classifier>api</classifier>
          </dependency>
      

      then the generated zip file contain correct data.

         972473  06-01-2016 14:17   narayana-full-5.3.3.Final-SNAPSHOT/lib/xts/jbossxts.jar
          44658  06-01-2016 14:17   narayana-full-5.3.3.Final-SNAPSHOT/lib/xts/jbossxts-api.jar
      

      To reproduce:

      1. git clone git@github.com:jbosstm/narayana.git
      2. cd narayana
      3. ./build.sh clean install -Pcommunity -DskipTests -Didlj-enabled=true

      Now you can see
      unzip -l narayana-full/target/narayana-full-5.*zip | grep xts
      showing the same file.

      Edit narayana-full/pom.xml to change the place where classfier is used for the jbossxts artifact.
      You can do cd narayana-full; mvn clean install and when you checked the result zip there will be different content of both jbossxts files.

      Discussed at https://issues.jboss.org/browse/JBTM-2679

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              chalda Ondra Chaloupka
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated:
                Resolved: