I'm trying to adapt the examples given at https://maven.apache.org/plugins/maven-assembly-plugin to work with my multi-module project.

Source was mostly easy -- I copied the <assembly/> into a file, tweaked its excludes (still wish it picked up the .gitinclude automagically), and it worked. I'd still like to change which directory the resulting archive files were written to, but that's a nitpick; maybe I can copy 'em to the "ant simulation" build/ directory afterward.


But binary is giving me a bit more trouble. This is working for others, so I presume it's another case of my just not understanding the idiom well enough.


All I did was add one more <descriptor/> to reference
src/assembly/bin.xml, and dropped there a copy of the <assembly>
taken from the page, modified to output to tar.gz and zip. I changed the
<include>s to reference my artifacts, and ran mvn package again.

Maven objects to my first child module:

> [ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:3.6.0:single (make-assembly) on project xalan-project: Failed to create assembly: Artifact: xalan:serializer:jar:2.7.3 (included by module) does not have an artifact with a file. Please ensure the package phase is run before the assembly is generated. -> [Help 1]


This confuses me. There is indeed a file there,
serializer/target/serializer-2.7.3.jar, which xalan:xalan seems to successfully use as the artifact for further compilation. Why isn't
maven-assembly-plugin finding and using it?

If I take out the <includes/> section entirely (trying to rely on defaults), I get the same error message.

Does a <binaries/> assembly need to be put on a later phase? Or a different execution?


Any advice would bemore than welcome...!


In my pom.xml, last plugin before </plugins></build>:
...
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>3.6.0</version>
        <inherited>false</inherited>
        <configuration>
          <descriptors>
            <descriptor>src/assembly/src.xml</descriptor>
            <descriptor>src/assembly/bin.xml</descriptor>
          </descriptors>
        </configuration>
        <executions>
          <execution>
<id>make-assembly</id> <!-- this is used for inheritance merges -->
            <phase>package</phase> <!-- bind to the packaging phase -->
            <goals>
              <goal>single</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
...

And my bin.xml:

<!-- Maven assembly plugin configuration for executable packaging -->

<assembly xmlns="http://maven.apache.org/ASSEMBLY/2.2.0";
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
xsi:schemaLocation="http://maven.apache.org/ASSEMBLY/2.2.0 http://maven.apache.org/xsd/assembly-2.2.0.xsd";>
  <id>bin</id>
  <formats>
    <format>tar.gz</format>
    <format>zip</format>
  </formats>
  <includeBaseDirectory>true</includeBaseDirectory>
  <moduleSets>
    <moduleSet>
<!-- Enable access to all projects in the current multimodule build! -->
      <useAllReactorProjects>true</useAllReactorProjects>

      <!-- Now, select which projects to include in this module-set. -->
      <!-- <includes> -->
      <!--   <include>xalan:serializer</include> -->
      <!--   <include>xalan:xalan</include> -->
      <!--   <include>xalan:samples</include> -->
      <!--   <include>xalan:xalan2jtaglet</include> -->
      <!--   <include>xalan:xalan-project</include> -->
      <!-- </includes> -->
      <binaries>
        <outputDirectory>modules/maven-assembly-plugin</outputDirectory>
        <unpack>false</unpack>
      </binaries>
    </moduleSet>
  </moduleSets>
</assembly>

---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscr...@maven.apache.org
For additional commands, e-mail: users-h...@maven.apache.org

Reply via email to