java - proyecto - Cómo configurar maven: ruta de la raíz del ensamblaje en el jar
maven manual (2)
Agregue el elemento al ensamblaje como tal.
<assembly>
<id>js-jar</id>
<formats>
<format>jar</format>
</formats>
<baseDirectory>myBaseDir</baseDirectory>
<fileSets>
<fileSet>
<directory>src/main/resources/</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>META-INF/**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
Si desactiva <includeBaseDirectory>
, su archivo no tendrá ninguna raíz. Así que depende de lo que quieras. Por ejemplo, prefiero que mis archivos zip tengan un directorio base para que no contamine accidentalmente un directorio en el que está si olvida crear el directorio y el CD antes de descomprimirlo. Mucho más conveniente también.
Aquí está el pom.xml
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>org.springframework.webflow</groupId>
<artifactId>spring-js-resources-thin</artifactId>
<version>2.2.1.RELEASE</version>
<name>Spring js lib</name>
<description>Spring javascript library without dojo</description>
<build>
<plugins>
<plugin>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.2.1</version>
<configuration>
<descriptors>
<descriptor>src/main/assembly/assembly.xml</descriptor>
</descriptors>
</configuration>
</plugin>
</plugins>
</build>
</project>
y aquí está el assembly.xml
<assembly>
<id>js-jar</id>
<formats>
<format>jar</format>
</formats>
<fileSets>
<fileSet>
<directory>src/main/resources/</directory>
<outputDirectory>/</outputDirectory>
<includes>
<include>META-INF/**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
El problema es que cada vez que abro el archivo jar generado (spring-js-resources-thin-2.2.1.RELEASE-js-jar.jar), la carpeta raíz siempre se denomina artifactid-version
(spring-js-resources- thin-2.2.1.RELEASE), luego el META-INF.
Me pregunto si, de todos modos, puedo construir el archivo jar con el nombre de archivo artifactid-version.jar
, pero SIN la artifactid-version
en la ruta de clases, como todos los archivos jar en el repositorio de Maven. Creo que debería haber una opción o una forma de nombrar el <outputDirectory>
.
Debe indicar a maven-assembly-plugin que no incluya el directorio base en el archivo, lo que puede lograrse utilizando lo siguiente:
<assembly>
<id>js-jar</id>
<formats>
<format>jar</format>
</formats>
<includeBaseDirectory>false</includeBaseDirectory>
<fileSets>
<fileSet>
<directory>src/main/resources/</directory>
<outputDirectory>.</outputDirectory>
<includes>
<include>META-INF/**/*</include>
</includes>
</fileSet>
</fileSets>
</assembly>
Y la sugerencia sobre el uso de maven-jar-plugin es muy buena, porque parece un poco que se está haciendo un mal uso del plugin de maven-assembly.
En las versiones más recientes de maven-assembly-plugin deberías .
como la carpeta raíz. Si usas /
recibirás una advertencia.