Hi all, I have the following complex but common pom hierarchy (sample) : The syntax is packaging:pom:level.#
pom:pom0.0 /\ / \ / \ / \ / \ jar:pom1.0 pom:pom1.1 /\ / \ / \ / \ / \ jar:pom2.0 jar:pom2.1 I'd like to use the assembly plugin to gather all the output jars in a single directory. (So every child/target/artifact.jar must copy to root/target/assembly/...) To do so I execute the assemby:assembly goal with the following descriptor : <assembly> <id>collect-alljars</id> <formats> <format>dir</format> </formats> <includeBaseDirectory>false</includeBaseDirectory> <moduleSets> <moduleSet> <binaries> <unpack>false</unpack> </binaries> </moduleSet> </moduleSets> </assembly> Unfortunately this always fails into an exception: "pom:pom1.1 does not have an artifact with a file. Please ensure the package phase (...)" This use case highlights 2 problems I think: 1. the assembly plugin does not support n depth hierarchy Actually pom:pom1.1 should not be included in the module list while jar:pom2.0 and jar:pom2.1 should. 2. the <binaries/> tag must not throw an exception if there is no file, I think To understand what's going on with bug #1, I decided to debug the plugin. The problem occurs in AbstractAssemblyMojo.processModules (...) line 471 The getModulesFromReactor() method is invoked but with recurse set to false! As a result when jar:pom2.0 is tested, the isProjectModule() method returns false, which is not correct (in our case). May be 'recurse' could be a plugin parameter? I don't know if everybody will call this a bug, nor if this list is the right place to report but I hope it will help. Thanks in advance if you have any workaround. Alexis