Maven Assembly Plugin
  1. Maven Assembly Plugin
  2. MASSEMBLY-97

multiproject with assembly fails in mysterious ways

    Details

    • Type: Bug Bug
    • Status: Closed Closed
    • Priority: Critical Critical
    • Resolution: Won't Fix
    • Affects Version/s: 2.1
    • Fix Version/s: 2.2-beta-1
    • Component/s: None
    • Labels:
      None
    • Testcase included:
      yes
    • Number of attachments :
      3

      Description

      The attached project has a (very simple) multiproject build.

      If you edit the root pom.xml and comment out project2, then "mvn install" will execute correctly and build and assemble the jar files, and deploy them to the local repo.

      If you have both project1 and project2, then something odd happens - it fails building the package for item1, but the error report is that there is a missing dependency for item2's package - which it hasn't built yet.

      This means that 'root level' builds for us can't be executed from a clean system as they always fall over.

        Issue Links

          Activity

          Hide
          Sei Syvalta added a comment -

          I'm seeing this too. It applies also to maven 2.0.4 with assembly plugin 2.0.1.

          I have attached a simplified example project based on the one submitted by Nigel Magnay. It demonstrates the bug with 3 modules only.

          The bug occurs when there are three modules in a reactor build (the simplest case):

          • the 1st module has assembly attached to package phase (assembly or attach goal)
          • the second module has dependency to module 1
          • the third module has dependency to module 2

          In this case the build fails. If the dependency in module 3 is changed to module 1, everything works as expected. This might be caused by a bug in some other component (dependency management?) as it seems to affect also some other plugins.

          I would really appreciate if someone would have time to take a look at this. Additionally, it would be really nice to have a release of the assembly-plugin, as the attached goal is really useful and using snapshot plugins is bit risky in a production build environment.

          Show
          Sei Syvalta added a comment - I'm seeing this too. It applies also to maven 2.0.4 with assembly plugin 2.0.1. I have attached a simplified example project based on the one submitted by Nigel Magnay. It demonstrates the bug with 3 modules only. The bug occurs when there are three modules in a reactor build (the simplest case): the 1st module has assembly attached to package phase (assembly or attach goal) the second module has dependency to module 1 the third module has dependency to module 2 In this case the build fails. If the dependency in module 3 is changed to module 1, everything works as expected. This might be caused by a bug in some other component (dependency management?) as it seems to affect also some other plugins. I would really appreciate if someone would have time to take a look at this. Additionally, it would be really nice to have a release of the assembly-plugin, as the attached goal is really useful and using snapshot plugins is bit risky in a production build environment.
          Hide
          Sei Syvalta added a comment -

          attached example project for assembly 2.0.1

          Show
          Sei Syvalta added a comment - attached example project for assembly 2.0.1
          Hide
          Sei Syvalta added a comment -

          attached example project for assembly 2.1-SNAPSHOT

          Show
          Sei Syvalta added a comment - attached example project for assembly 2.1-SNAPSHOT
          Hide
          Sei Syvalta added a comment -

          Still occurs with assembly 2.1final.

          Show
          Sei Syvalta added a comment - Still occurs with assembly 2.1final.
          Hide
          David Boden added a comment -

          The goals are fixed by removing the @aggregator annotation from the class documentation. For example, removing it from AssemblyMojo.java.

          The aggregator annotation implies that the plugin is only able to build the aggregator pom in a multi-project build. This is not the case. The assembly plugin can run on sub-projects.

          Show
          David Boden added a comment - The goals are fixed by removing the @aggregator annotation from the class documentation. For example, removing it from AssemblyMojo.java. The aggregator annotation implies that the plugin is only able to build the aggregator pom in a multi-project build. This is not the case. The assembly plugin can run on sub-projects.
          Hide
          David Boden added a comment -

          I have worked around this by using "single" as the goal rather than "assembly". The "single" goal has been added as a workaround for this issue until the maven core can provide better multi-project support.

          This works for me:

          <plugin>
          <artifactId>maven-assembly-plugin</artifactId>
          <executions>
          <execution>
          <phase>package</phase>
          <goals>
          <goal>single</goal>
          </goals>
          </execution>
          </executions>
          <configuration>
          <archive>
          <manifestFile>META-INF/MANIFEST.MF</manifestFile>
          </archive>
          <descriptors>
          <descriptor>../SSBuild/bundle-assembly.xml</descriptor>
          </descriptors>
          </configuration>
          </plugin>

          Show
          David Boden added a comment - I have worked around this by using "single" as the goal rather than "assembly". The "single" goal has been added as a workaround for this issue until the maven core can provide better multi-project support. This works for me: <plugin> <artifactId>maven-assembly-plugin</artifactId> <executions> <execution> <phase>package</phase> <goals> <goal>single</goal> </goals> </execution> </executions> <configuration> <archive> <manifestFile>META-INF/MANIFEST.MF</manifestFile> </archive> <descriptors> <descriptor>../SSBuild/bundle-assembly.xml</descriptor> </descriptors> </configuration> </plugin>
          Hide
          Sei Syvalta added a comment -

          There is no equivalent target for directory task. "directory-inline" is similar like "attached", which means that to completely workaround this bug would require yet another task "directory-single".

          Show
          Sei Syvalta added a comment - There is no equivalent target for directory task. "directory-inline" is similar like "attached", which means that to completely workaround this bug would require yet another task "directory-single".
          Hide
          John Casey added a comment -

          Use assembly:single or assembly:directory-single for this type of application. directory-single is added in 2.2-SNAPSHOT

          Show
          John Casey added a comment - Use assembly:single or assembly:directory-single for this type of application. directory-single is added in 2.2-SNAPSHOT

            People

            • Assignee:
              John Casey
              Reporter:
              Nigel Magnay
            • Votes:
              13 Vote for this issue
              Watchers:
              9 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: