Extracción número de versión del nombre del archivo con Maven
-
19-09-2019 - |
Pregunta
Tengo un proyecto con 5 módulos de experto. En este momento, cuando hago un "mvn instalación limpia", que genera una oreja que contiene los dos frascos, uno de guerra y uno sar de los otros módulos.
Todos los nombres de los archivos contienen la versión, por ejemplo, ProjectX de oreja 2.0.0.ear, ProjectX-cliente-2.0.0.jar, etc.
Tengo que cambiar el nombre de uno de los frascos y el oído final a omitir la versión en el nombre del archivo. Se debe tener este aspecto:
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web
En este momento estoy usando los siguientes plugins para construir: Maven-compilador-plugin y experto de liberación-plugin
¿Cuál sería la mejor manera de lograr los resultados que cabe esperar?
Solución
En el módulo de oreja, puede pulsar el elemento de project.build.finalName
o puede configurar la maven-oreja-plugin que soporta un finalName
parámetro opcional. Y para configurar el nombre final de un tarro incluido, tendrá que definir un jarModule
y establecer la propiedad bundleFileName
por ello.
La fuerza configuración final se ve algo así (Voy a demostrar cómo configurar el nombre de la oreja final en la configuración del plugin aquí):
<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>
Otros consejos
Esto se puede conseguir mediante la especificación de la propiedad finalName
en su pom como esto:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Punto uno:. Sola JAR / WAR
Para crear sin número de versión en el nombre, en pom.xml sólo tiene que añadir el código:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Por lo tanto, si se compila, por ejemplo projectx_misc, se obtiene projectx_misc.jar .
¿Qué me pasa? Cuando compilo el mismo paquete de un proyecto POM (en Netbeans), todos los frascos tienen la versión en el nombre y el oído son los archivos xxx-version.jar.
Por lo tanto, el punto dos:. El problema EAR
En pom.xml de la EAR, cambiar el experta en la oreja-plugin añadir en la configuración de esta propiedad:
<fileNameMapping>no-version</fileNameMapping>
Esta es mi configuración de plug-in, 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>
Por lo tanto, ahora cuando compilar todos los archivos de un pom proyecto, todos los números de versión se eliminan de los frascos.