wake-up-neo.com

Versionsnummer mit Maven aus dem Dateinamen entfernen

Ich habe ein Projekt mit 5 Modulen in Maven. Im Moment, wenn ich eine "mvn clean install" durchführe, wird ein Ohr mit den beiden Gläsern, einem Krieg und einem Sar aus den anderen Modulen generiert.

Alle Dateinamen enthalten die Version, z. B. projectx-ear-2.0.0.ear, projectx-client-2.0.0.jar usw.

Ich muss eine der Gläser und das letzte Ohr umbenennen, um die Version im Dateinamen wegzulassen. Es sollte so aussehen:

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

Im Moment verwende ich die folgenden Plugins zur Erstellung: Maven-Compiler-Plugin und Maven-Release-Plugin

Was wäre der beste Weg, um die erwarteten Ergebnisse zu erzielen?

39
Bani

In Ihrem Ohrmodul können Sie entweder das Element project.build.finalName verwenden oder das optionale maven-ear-plugin konfigurieren, das einen optionalen Parameter finalName unterstützt. Und um den endgültigen Namen einer gebündelten jar zu konfigurieren, müssen Sie eine jarModule definieren und die bundleFileName-Eigenschaft dafür festlegen.

Die endgültige Konfiguration könnte in etwa so aussehen (ich werde hier zeigen, wie Sie den endgültigen Ohrnamen in der Plug-In-Konfiguration festlegen): 

<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

Sie können dies erreichen, indem Sie die finalName-Eigenschaft in Ihrem Pom wie folgt angeben:

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

Punkt eins: Single JAR/WAR.

Um es ohne Versionsnummer im Namen zu erstellen, fügen Sie in pom.xml einfach den Code hinzu:

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

Wenn Sie also zum Beispiel projectx_misc kompilieren, erhalten Sie projectx_misc.jar.

Was passiert mit mir? Wenn ich dasselbe Paket aus einem POM-Projekt (in Netbeans) kompiliere, haben alle Jars die Version im Namen, und die EAR enthält die Archive xxx-version.jar.

Also Punkt zwei: das EAR-Problem.

Ändern Sie in der Datei pom.xml der EAR das maven-ear-plugin und fügen Sie in der Konfiguration diese Eigenschaft hinzu:

<fileNameMapping>no-version</fileNameMapping>

Dies ist meine Plugin-Einstellung zum Beispiel:

<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>

Wenn ich nun alle Archive aus einem Project-Pom kompiliere, werden alle Versionsnummern aus den Gläsern entfernt.

0
Daniele Licitra