Suppression de numéro de version du nom de fichier avec Maven
-
19-09-2019 - |
Question
I ai un projet de 5 modules maven. En ce moment, quand je fais un « mvn clean install », il génère une oreille contenant les deux pots, une guerre et un sar des autres modules.
Tous les noms de fichiers contiennent la version, par exemple, ProjectX-ear-2.0.0.ear, ProjectX-client-2.0.0.jar, etc.
Je dois renommer un des bocaux et l'oreille finale omettre la version dans le nom du fichier. Il devrait ressembler à ceci:
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 ce moment je suis en utilisant les plug-ins suivants pour construire: maven-plugin-compilateur et maven-release-plugin
Quelle serait la meilleure façon d'atteindre les résultats que j'ATTENDRE?
La solution
Dans votre module d'oreille, vous pouvez utiliser l'élément project.build.finalName
ou vous pouvez configurer le maven-plugin-oreille qui prend en charge un finalName
paramètre optionnel. Et pour configurer le nom final d'un pot fourni, vous devrez définir un jarModule
et définir la propriété de bundleFileName
pour elle.
La puissance de configuration finale ressemble à quelque chose comme ça (je vais montrer comment définir le nom de l'oreille finale dans la configuration du plugin ici):
<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>
Autres conseils
Vous pouvez y parvenir en spécifiant la propriété finalName
dans votre pom comme ceci:
<build>
<finalName>${project.artifactId}</finalName>
</build>
point:. Unique JAR / WAR
Pour créer sans numéro de version dans le nom, en pom.xml ajoutez simplement le code:
<build>
<finalName>${project.artifactId}</finalName>
</build>
Donc, si vous compilez, par exemple projectx_misc, vous obtenez projectx_misc.jar .
Qu'est-ce qui arrive à moi? Quand je compilez le même paquet d'un projet POM (en Netbeans), tous les bocaux ont la version dans le nom et l'AER comprennent les archives xxx-version.jar.
Alors, le deuxième point. Le problème EAR
Dans le fichier pom.xml de l'AER, changer le maven-plugin-oreille ajouter dans la configuration de cette propriété:
<fileNameMapping>no-version</fileNameMapping>
Ceci est mon plugin réglage par exemple:
<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>
Alors, maintenant, quand je compile toutes les archives d'un pom du projet, tous les numéros de version sont retirés des pots.