web-dev-qa-db-fra.com

Supprimer le numéro de version du nom de fichier avec Maven

J'ai un projet avec 5 modules en maven. En ce moment, quand je fais une "installation propre de MVN", il génère une oreille contenant les deux pots, un war 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 l’un des bocaux et l’oreille finale pour omettre la version dans le nom du fichier. Ça devrait ressembler à ça:

projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web

Actuellement, j'utilise les plugins suivants pour construire: Maven-compiler-plugin et maven-release-plugin

Quel serait le meilleur moyen d’atteindre les résultats escomptés?

39
Bani

Dans votre module ear, vous pouvez utiliser l'élément project.build.finalName ou configurer le maven-ear-plugin qui prend en charge un paramètre finalName optional. Et pour configurer le nom final d'un fichier jar groupé, vous devez définir un jarModule et définir la propriété bundleFileName pour celui-ci.

La configuration finale pourrait ressembler à quelque chose comme ça (je vais vous montrer comment définir le nom final de l'oreille 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>
20
Pascal Thivent

Vous pouvez y parvenir en spécifiant la propriété finalName dans votre pom comme ceci:

<build>
    <finalName>${project.artifactId}</finalName>
</build>
89
Péter Török

Premier point: unique JAR/WAR.

Pour le créer sans nom de version, dans pom.xml, ajoutez simplement le code:

<build>
  <finalName>${project.artifactId}</finalName>
</build>

Ainsi, si vous compilez, par exemple, projectx_misc, vous obtenez projectx_misc.jar.

Qu'est-ce qui m'arrive? Lorsque je compile le même package à partir d'un projet POM (dans Netbeans), tous les fichiers JAR ont la version indiquée et le fichier EAR inclut les archives xxx-version.jar.

Alors, deuxième point: le problème EAR.

Dans le fichier pom.xml de l'EAR, modifiez le maven-ear-plugin en ajoutant à la configuration cette propriété:

<fileNameMapping>no-version</fileNameMapping>

Ceci est mon réglage de plugin 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>

Donc, maintenant, lorsque je compile toutes les archives d’un pom de projet, tous les numéros de version sont supprimés des fichiers jar.

0
Daniele Licitra