2010-03-17 6 views
19

J'ai défini un descripteur d'assemblage jar-with-dependencies personnalisé. Cependant, quand je l'exécute avec l'ensemble de mvn: montage, je reçois:Assemblage Maven - Erreur lors de la lecture des assemblages

... 
[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. 

Mon jar-with-dependencies.xml est en src/main/resources/ensembles/.

Mon descripteur d'assemblage est le suivant:

<?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> 

Et mon projet pom.xml est:

<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> 

Lorsque l'assemblage mvn: assemblage est réalisé, les dépendances sont déballés et je reçois l'erreur précédente lorsque le déballage est terminé. De plus, si j'exécute mvn -e assembly: assembly, il est dit qu'aucun descripteur n'a été trouvé, mais il essaie de décompresser les dépendances et un JAR avec des dépendances est créé mais il ne contient pas META-INF/services/* comme spécifié dans le descripteur:

[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 

Je ne vois pas mon erreur. Est-ce que quelqu'un a une solution?

+0

Vérifiez ceci: https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html –

Répondre

20

Il y a deux problèmes ici. Tout d'abord, lorsque vous utilisez votre propre descripteur, vous devez spécifier le chemin d'accès à votre fichier descripteur personnalisé (par ailleurs, vous pouvez utiliser n'importe quel emplacement, mais mettre le descripteur dans src/main/resources n'est peut-être pas le meilleur choix, vous ne voulez pas vraiment le descripteur à empaqueter dans votre application, j'utiliserais l'emplacement standard qui est src/main/assembly comme mentionné dans this page).

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

Deuxièmement, votre élément configuration est actuellement à l'intérieur d'un bloc execution et est donc spécifique à cette exécution . En d'autres termes, il ne s'appliquera pas si vous exécutez assembly:assembly sur la ligne de commande. Donc, si vous voulez appeler assembly:assembly avec un descripteur personnalisé, utilisez:

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

Ou déplacer le configuration extérieur de l'élément execution (pour rendre la configuration globale):

<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> 
+1

J'ai modifié le chemin et déplacé jar-with-dependencies.xml dans src/main/assembly/comme vous le mentionnez mais j'ai toujours la même erreur. C'est très incroyable. – Laurent

+1

Je ne suis pas sûr que ce soit une erreur de chemin. Si je signale un mauvais chemin, l'exécution est arrêté avant de déballer les dépendances par le message suivant: erreur fichier descripteur d'ensemble de positionnement ... (Aucun fichier ou répertoire) Alors que dans mon cas avec le chemin correct, je reçois: Erreur lors de la lecture des assemblys: Aucun descripteur d'assembly trouvé. – Laurent

+0

J'ai le même problème. Le plugin d'assemblage semble être buggé, ou très inutilisable. –

Questions connexes