plugins maven-2 assemblies maven-descriptor

plugins - Ensamblaje de Maven: error al leer ensamblajes



maven-2 assemblies (2)

Definí un descriptor de ensamblado de jar-with-dependencias personalizado. Sin embargo, cuando lo ejecuto con mvn assembly: assembly, obtengo:

... [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-with-dependencies.xml está en src / main / resources / assambles / .

Mi descriptor de ensamblaje 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 proyecto pom.xml 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 assembly: se realiza el ensamblaje, las dependencias se desempaquetan y obtengo el error anterior cuando el desempaquetado ha finalizado.

Además, si ejecuto mvn -e assembly: assembly es decir que no se han encontrado descriptores, sin embargo, intento descomprimir dependencias y se crea un JAR con dependencias, pero no contiene META-INF / services / * como se especifica en 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?


Hay dos problemas aquí. Primero, al usar su propio descriptor, debe especificar la ruta a su archivo 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 lo hace quiero que el descriptor sea empaquetado en su aplicación, usaría la ubicación estándar que es src/main/assembly como se menciona en esta página ).

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

En segundo lugar, su elemento de configuration se encuentra actualmente dentro de un bloque de execution y, por lo tanto, es específico de esta ejecución. En otras palabras, no se aplicará si ejecuta assembly:assembly en la línea de comando. Por lo tanto, si desea llamar a assembly:assembly con un descriptor personalizado, use:

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

O mueva la configuration fuera del elemento de execution (para hacer que la configuración sea 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>