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?

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top