java - org - packaging ear</ packaging
Eliminando el número de versión del nombre de archivo con Maven (3)
En su módulo de oído, puede usar el elemento project.build.finalName
o puede configurar el maven-ear-plugin que admite un parámetro opcional finalName
. Y para configurar el nombre final de un jar agrupado, deberás definir un jarModule
y establecer la propiedad bundleFileName
para ello.
La configuración final podría ser algo así (aquí demostraré cómo establecer el nombre final del oído en la configuración del complemento):
<project>
[...]
<dependencies>
<dependency>
<groupId>yourgroupid</groupId>
<artifactId>projectx-client</artifactId>
<version>2.0.0</version><!-- not mandatory if inherited -->
</dependency>
[...]
</dependencies>
[...]
<build>
[...]
<plugins>
[...]
<plugin>
<artifactId>maven-ear-plugin</artifactId>
<version>2.4</version>
<configuration>
<finalName>projectx-ear</finalName>
<modules>
<jarModule>
<groupId>yourgroupid</groupId>
<artifactId>projectx-client</artifactId>
<bundleFileName>anotherName.jar</bundleFileName>
</jarModule>
</modules>
</configuration>
</plugin>
[...]
</project>
Tengo un proyecto con 5 módulos en maven. En este momento, cuando hago una "instalación limpia mvn", genera un oído que contiene los dos tarros, una guerra y un sar de los otros módulos.
Todos los nombres de archivos contienen la versión, por ejemplo, projectx-ear-2.0.0.ear, projectx-client-2.0.0.jar, etc.
Necesito cambiar el nombre de uno de los frascos y el oído final para omitir la versión en el nombre del archivo. Debe tener un aspecto como este:
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
/-- projectx-web-2.0.0.web
Ahora mismo estoy usando los siguientes complementos para compilar: maven-compiler-plugin y maven-release-plugin
¿Cuál sería la mejor manera de lograr los resultados que espero?
Puedes lograr esto especificando la propiedad finalName
en tu pom así:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Punto uno: solo JAR / WAR.
Para crearlo sin el número de versión en nombre, en pom.xml simplemente agregue el código:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Por lo tanto, si compila, por ejemplo projectx_misc, obtiene projectx_misc.jar .
¿Que me pasa? Cuando compilo el mismo paquete de un proyecto POM (en Netbeans), todos los archivos tienen la versión en el nombre y el EAR incluye los archivos xxx-version.jar.
Entonces, punto dos: el problema EAR.
En el archivo pom.xml del EAR, cambie el complemento maven-ear agregando en la configuración esta propiedad:
<fileNameMapping>no-version</fileNameMapping>
Esta es mi configuración de plugin, por ejemplo:
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-ear-plugin</artifactId>
<version>2.8</version>
<configuration>
<version>6</version>
<defaultLibBundleDir>lib</defaultLibBundleDir>
<fileNameMapping>no-version</fileNameMapping>
</configuration>
</plugin>
Entonces, cuando compilo todos los archivos de un proyecto, todos los números de versión se eliminan de los archivos jar.