Frage

Ich habe ein Projekt mit 5 Modulen in Maven. Gerade jetzt, wenn ich ein „mvn saubere Installation“ zu tun, erzeugt sie ein Ohr mit den beiden Glas, einen Krieg und ein sar von den anderen Modulen.

Alle Dateinamen enthalten die Version, zum Beispiel projectx-Ohr-2.0.0.ear, projectx-client-2.0.0.jar, etc.

Ich brauche eine der Gläser benennen und das endgültige Ohr die Version im Dateinamen zu verzichten. Es soll wie folgt 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 zu erstellen: Maven-Compiler-Plugin und Maven-Release-Plugin

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

War es hilfreich?

Lösung

In Ihrem Ohr-Modul können Sie entweder das project.build.finalName Element oder Sie können die maven-Ohr-Plugin , die ein finalName optionaler Parameter. Und der endgültige Name eines gebündelten jar zu konfigurieren, müssen Sie ein jarModule und die bundleFileName Eigenschaft für sie setzen.

Die endgültige Konfiguration könnte etwa so aussieht, dass (ich werde zeigen, wie das die endgültige Ohr Namen in der Plugin-Konfiguration hier eingestellt):

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

Andere Tipps

Sie können dies erreichen, indem die finalName Eigenschaft in Ihrem pom wie folgt spezifiziert:

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

Punkt eins:. Einzigen JAR / WAR

es in Namen ohne Versionsnummer zu erstellen, in pom.xml einfach den Code hinzufügen:

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

Also, wenn Sie kompilieren, zum Beispiel projectx_misc erhalten Sie projectx_misc.jar .

Was passiert mit mir? Wenn ich das gleiche Paket aus einem POM-Projekt (in Netbeans) kompilieren, alle Gläser haben die Version in dem Namen und der EAR sind die xxx-version.jar Archive.

So, Punkt zwei:. Das EAR Problem

In der pom.xml-Datei der EAR, ändern Sie die Maven-Ohr-Plugin Hinzufügen in der Konfiguration dieser Eigenschaft:

<fileNameMapping>no-version</fileNameMapping>

Das ist mein Plugin zum Beispiel festlegen:

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

So, jetzt, wenn ich alle Archive aus einem Projekt pom kompilieren, alle Versionsnummern werden aus den Gläsern entfernt.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top