Creating an archive of all jars and source jars for a multi-module project

15,838

Solution 1

I think you're on the right lines, the moduleSets options of the assembly plugin handles what you're after.

If you're looking for some useful documentation, the Module Selection section of the Maven book covers it quite thoroughly, including how to configure includes and excludes, handle binaries and sources, and exclude external dependencies.

Solution 2

I had this problem, for me, the solution was NOT put / at the beginning of your <fileset><directory>

If you do that will work on Windows, not on Unix/Linux!

<fileSet>
  <directory>src/main/</directory>
  <outputDirectory></outputDirectory>
  <includes>
    <include>VERSION</include>
  </includes>
</fileSet>

works whereas

<fileSet>
  <directory>/src/main/</directory>
  <outputDirectory></outputDirectory>
  <includes>
    <include>VERSION</include>
  </includes>
</fileSet>

causes

[ERROR] Failed to execute goal org.apache.maven.plugins:maven-assembly-plugin:2.3:single (execution-pluggin-assembly) on project test3: Failed to create assembly: Error creating assembly archive assembly: You must set at least one file. -> [Help 1]

Share:
15,838
Robert Munteanu
Author by

Robert Munteanu

Summary In one life, I am Robert Munteanu, software engineer for a respectable software company. I write clean Java code, I maintain application builds ... help my colleagues discover bugs with automated analysis tools. The other life is lived in open source, where I go by the developer alias "Rombert" and try go get my code in virtually every open source software I have an use for.

Updated on June 08, 2022

Comments

  • Robert Munteanu
    Robert Munteanu almost 2 years

    I'm building a Maven project which has half a dozen modules.

    I'm fine with importing it myself using either Maven or Ivy, but other teams would like to use those jars as well, but their practice is to commit the jars and source jars to version control.

    I'd like to generate a zip/tar assembly of all modules and their sources which they can use however they like.

    I've read Maven Assembly Plugin: Including Module Binaries but I'm shy of using it because:

    1. The linked FAQ entry returns a 404;
    2. I need to manually specify all modules.

    Is there an alternative?


    Update: I've tried using the built-in assembly descriptors

     mvn assembly:assembly -DprojectModulesOnly=true
     mvn assembly:assembly
    

    and both failed with

    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Failed to create assembly: Error creating assembly archive bin: You must set at least one file.
    

    right after all the module builds have run.