Maven assembly - Error reading assemblies

54,610

Solution 1

There are two problems here. First, when using your own descriptor, you must specify the path to your customized descriptor file (by the way, you can use any location but putting the descriptor in src/main/resources is maybe not the best choice, you don't really want the descriptor to be packaged in your application, I'd use the standard location which is src/main/assembly as mentioned in this page).

<descriptors>
  <descriptor>src/main/assembly/jar-with-dependencies.xml</descriptor>
</descriptors>

Second, your configuration element is currently inside an execution block and is thus specific to this execution. In other words, it won't apply if you run assembly:assembly on the command line. So, if you want to call assembly:assembly with a custom descriptor, either use:

mvn assembly:assembly -Ddescriptor=path/to/descriptor.xml

Or move the configuration outside the execution element (to make the configuration global):

<project>
  ...
  <build>
    ...
    <plugins>
      <plugin>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-5</version>
        <configuration>
          <descriptors>
            <descriptor>path/to/descriptor.xml</descriptor>
          </descriptors>
          ...
        </configuration>
      </plugin>
     </plugins>
     ...
   </build>
   ...
</project>

Solution 2

assembly is trying to open /assemblies/${ref}.xml in classpath check this

http://maven.apache.org/plugins/maven-assembly-plugin/xref/org/apache/maven/plugin/assembly/io/DefaultAssemblyReader.html

Share:
54,610

Related videos on Youtube

Laurent
Author by

Laurent

I run some businesses: https://contentshowcase.app https://medicalid.app https://noticeable.io

Updated on July 09, 2022

Comments

  • Laurent
    Laurent almost 2 years

    I have defined a personalized jar-with-dependencies assembly descriptor. However, when I execute it with mvn assembly:assembly, I get :

    ...
    [INFO] META-INF/ already added, skipping
    [INFO] META-INF/MANIFEST.MF already added, skipping
    [INFO] javax/ already added, skipping
    [INFO] META-INF/ already added, skipping
    [INFO] META-INF/MANIFEST.MF already added, skipping
    [INFO] META-INF/maven/ already added, skipping
    [INFO] [assembly:assembly {execution: default-cli}]
    [INFO] ------------------------------------------------------------------------
    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Error reading assemblies: No assembly descriptors found.
    

    My jar-with-dependencies.xml is in src/main/resources/assemblies/.

    My assembly descriptor is the following :

    <?xml version='1.0' encoding='UTF-8'?>
    <assembly>
        <id>jar-with-dependencies</id>
        <formats>
            <format>jar</format>
        </formats>
    
        <dependencySets>
            <dependencySet>
                <scope>runtime</scope>
                <unpack>true</unpack>
                <unpackOptions>
                    <excludes>
                        <exclude>**/LICENSE*</exclude>
                        <exclude>**/README*</exclude>
                    </excludes>
                </unpackOptions>
            </dependencySet>
        </dependencySets>
    
        <fileSets>
            <fileSet>
                <directory>${project.build.outputDirectory}</directory>
                <outputDirectory>/</outputDirectory>
            </fileSet>
            <fileSet>
                <directory>src/main/resources/META-INF/services</directory>
                <outputDirectory>META-INF/services</outputDirectory>
            </fileSet>
        </fileSets>
    
    </assembly>
    

    And my project pom.xml is :

    <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-assembly-plugin</artifactId>
        <version>2.2-beta-5</version>
        <executions>
            <execution>
                <id>jar-with-dependencies</id>
                <phase>package</phase>
                <goals>
                    <goal>single</goal>
                </goals>
                <configuration>
                    <descriptors>
                        <descriptor>jar-with-dependencies.xml</descriptor>
                    </descriptors>
                    <archive>
                        <manifest>
                            <mainClass>org.my.app.HowTo</mainClass>
                        </manifest>
                    </archive>
                </configuration>
            </execution>
        </executions>
    </plugin>
    

    When mvn assembly:assembly is performed, dependencies are unpacked and I get the previous error when unpack has finished.

    Moreover, if I execute mvn -e assembly:assembly it is say that no descriptors has been found, however it try to unpack dependencies and a JAR with dependencies is created but it doesn't contain META-INF/services/* as specified in descriptor :

    [ERROR] BUILD ERROR
    [INFO] ------------------------------------------------------------------------
    [INFO] Error reading assemblies: No assembly descriptors found.
    
    [INFO] ------------------------------------------------------------------------
    [INFO] Trace
    org.apache.maven.lifecycle.LifecycleExecutionException: Error reading assemblies: No assembly descriptors found.
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:719)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeStandaloneGoal(DefaultLifecycleExecutor.java:569)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoal(DefaultLifecycleExecutor.java:539)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoalAndHandleFailures(DefaultLifecycleExecutor.java:387)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeTaskSegments(DefaultLifecycleExecutor.java:284)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.execute(DefaultLifecycleExecutor.java:180)
        at org.apache.maven.DefaultMaven.doExecute(DefaultMaven.java:328)
        at org.apache.maven.DefaultMaven.execute(DefaultMaven.java:138)
        at org.apache.maven.cli.MavenCli.main(MavenCli.java:362)
        at org.apache.maven.cli.compat.CompatibleMain.main(CompatibleMain.java:60)
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
        at java.lang.reflect.Method.invoke(Method.java:597)
        at org.codehaus.classworlds.Launcher.launchEnhanced(Launcher.java:315)
        at org.codehaus.classworlds.Launcher.launch(Launcher.java:255)
        at org.codehaus.classworlds.Launcher.mainWithExitCode(Launcher.java:430)
        at org.codehaus.classworlds.Launcher.main(Launcher.java:375)
    Caused by: org.apache.maven.plugin.MojoExecutionException: Error reading assemblies: No assembly descriptors found.
        at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:356)
        at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490)
        at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
        ... 17 more
    Caused by: org.apache.maven.plugin.assembly.io.AssemblyReadException: No assembly descriptors found.
        at org.apache.maven.plugin.assembly.io.DefaultAssemblyReader.readAssemblies(DefaultAssemblyReader.java:206)
        at org.apache.maven.plugin.assembly.mojos.AbstractAssemblyMojo.execute(AbstractAssemblyMojo.java:352)
        ... 19 more
    

    I don't see my error. Does someone has a solution ?

  • Laurent
    Laurent about 14 years
    I have edited path and moved jar-with-dependencies.xml in src/main/assembly/ like you mention but I get always the same error. It is very amazing.
  • Laurent
    Laurent about 14 years
    I am not sure it is a path error. If I indicate a wrong path, execution is stopped before to unpack dependencies by the following message : Error locating assembly descriptor file ... (No such file or directory) Whereas in my case with correct path, I get : Error reading assemblies: No assembly descriptors found.
  • febot
    febot almost 11 years
    I have the same problem. The assembly plugin seems to be buggy, or very user unfriendly.
  • Vlad
    Vlad about 10 years
    Weird. It actually works when "mvn package" is run, but I get the same failure as everybody when doing "mvn assembly:single"
  • Tristan
    Tristan almost 9 years
    Actually, the standard location mentionned in the page you are pointing is : src/assembly ("Assembly descriptors"), not src/main/assembly. I guess it's because u can package for dev/test environments as well. Probably not related to the encoutered errors though.
  • Eric
    Eric over 6 years
    Put descriptor file in src/main/resources/assemblies is the only way to share it among multiple projects, refer: maven.apache.org/plugins/maven-assembly-plugin/examples/…