2010-03-17 9 views
19

He definido un descriptor de ensamblado de jar-with-dependencias personalizado. Sin embargo, cuando yo haga con el montaje mvn: montaje, me sale:Ensamblaje de Maven - Error al leer ensamblajes

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

Mi jar-con-dependencies.xml está en src/main/resources/conjuntos/.

Mi descriptor de montaje es el siguiente:

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

Y mi pom.xml proyecto es:

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

Cuando mvn montaje: se realiza el montaje, las dependencias se descomprimen y se produce el error anterior cuando el desempaquetado ha terminado.

Además, si ejecuto mvn -e assembly: assembly es decir que no se ha encontrado ningún descriptor, sin embargo, trata de descomprimir dependencias y se crea un JAR con dependencias pero no contiene META-INF/services/* como se especifica en el 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 

No veo mi error. ¿Alguien tiene una solución?

+0

Verifique esto: https://maven.apache.org/plugins/maven-assembly-plugin/examples/sharing-descriptors.html –

Respuesta

20

Aquí hay dos problemas. Primero, al usar su propio descriptor, debe especificar la ruta al su archivo de descriptor personalizado (por cierto, puede usar cualquier ubicación pero poner el descriptor en src/main/resources quizás no sea la mejor opción, realmente no desea el descriptor que se empacará en su aplicación, usaría la ubicación estándar que es src/main/assembly como se menciona en this page).

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

En segundo lugar, el elemento de configuration se encuentra actualmente dentro de un bloque de execution y es por lo tanto específico para este ejecución. En otras palabras, no se aplicará si ejecuta assembly:assembly en la línea de comando. Por lo tanto, si desea llamar assembly:assembly con un descriptor de costumbre, ya sea para uso:

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

O mover el configuration fuera del elemento execution (para hacer la configuración global):

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

He editado la ruta y movido jar-with-dependencies.xml en src/main/assembly/como mencionas pero siempre recibo el mismo error. Es muy sorprendente. – Laurent

+1

No estoy seguro de que sea un error de ruta. Si indico un camino equivocado, la ejecución se detiene antes de desempaquetar dependencias por el siguiente mensaje: Error archivo descriptor de la disposición de fijación ... (No existe el fichero o directorio) Mientras que en mi caso con la ruta correcta, me sale: Error al leer ensamblajes: no se encontraron descriptores de ensamblado. – Laurent

+0

Tengo el mismo problema. El plugin de ensamblaje parece tener errores o ser muy hostil con el usuario. –

Cuestiones relacionadas