Rimozione numero di versione dal nome del file con Maven
-
19-09-2019 - |
Domanda
Ho un progetto con 5 moduli in Maven. In questo momento, quando faccio un "mvn clean install", genera un orecchio che contiene i due vasi, una guerra e uno sar dagli altri moduli.
Tutti i nomi dei file contengono la versione, per esempio, ProjectX-ear-2.0.0.ear, ProjectX-client-2.0.0.jar, ecc.
Ho bisogno di rinominare uno dei vasi e l'orecchio finale di omettere la versione nel nome del file. Esso dovrebbe essere simile a questo:
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web
In questo momento sto utilizzando i seguenti plugin di costruire: Maven-compiler-plugin e maven-release-plugin
Quale sarebbe il modo migliore per raggiungere i risultati che mi aspetto?
Soluzione
Nel modulo orecchio, è possibile utilizzare l'elemento project.build.finalName
oppure è possibile configurare la Maven-ear-plugin che supporta un finalName
parametro opzionale. E per configurare il nome definitivo di un vaso in bundle, è necessario definire un jarModule
e impostare la proprietà bundleFileName
per esso.
La potenza configurazione finale sembra qualcosa di simile (ti spiegherò come impostare il nome all'orecchio finale nella configurazione del plugin qui):
<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>
Altri suggerimenti
È possibile raggiungere questo specificando la proprietà finalName
nel pom in questo modo:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Punto primo:. Singolo JAR / WAR
Per creare senza numero di versione nel nome, in pom.xml è sufficiente aggiungere il codice:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Quindi, se si compila, per esempio projectx_misc, si ottiene projectx_misc.jar .
Che cosa succede a me? Quando compilo lo stesso pacchetto da un progetto POM (in Netbeans), tutti i vasetti hanno la versione nel nome e l'orecchio includere gli archivi xxx-version.jar.
Quindi, punto due:. Il problema EAR
Nel file di pom.xml dell'AER, modificare il Maven-ear-plugin di aggiungere nella configurazione quest'affare:
<fileNameMapping>no-version</fileNameMapping>
Questa è la mia impostazione, per esempio plugin:
<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>
Così, ora quando compilo tutti gli archivi da una pom progetto, tutti i numeri di versione vengono rimossi dai vasi.