Pergunta

Eu tenho um projeto com 5 módulos em maven. Agora, quando eu faço um "mvn instalação limpa", ele gera uma orelha contendo os dois frascos, um de guerra e um sar dos outros módulos.

Todos os nomes de arquivo contêm a versão, por exemplo, projectx-ear-2.0.0.ear, projectx-client-2.0.0.jar, etc.

Eu preciso para renomear um dos frascos e do ouvido final para omitir a versão no nome do arquivo. Deve olhar como este:

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

Agora eu estou usando os seguintes plugins para construir: maven-compiler-plugin e maven-release-plugin

Qual seria a melhor maneira de alcançar os resultados que eu esperava?

Foi útil?

Solução

Em seu módulo de ouvido, você pode usar o elemento project.build.finalName ou você pode configurar o maven-orelha-plugin que suporta uma finalName parâmetro opcional. E para configurar o nome final de um frasco empacotado, você precisa definir uma jarModule e para definir a propriedade bundleFileName para ele.

O poder configuração final é algo como que (eu vou demonstrar como definir o nome do ouvido final no plug-in de configuração aqui):

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

Outras dicas

Você pode conseguir isto, especificando a propriedade finalName em sua pom assim:

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

Ponto um:. Único JAR / WAR

Para criá-lo, sem número de versão no nome, no pom.xml basta adicionar o código:

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

Então, se você compilar, por exemplo projectx_misc, você começa projectx_misc.jar .

O que acontece comigo? Quando eu compilar o mesmo pacote a partir de um projeto POM (no Netbeans), todos os frascos tem a versão em nome e o EAR incluem o xxx-version.jar arquivos.

Então, o ponto dois:. O problema EAR

No arquivo pom.xml do EAR, altere o maven-orelha-plugin acrescentando na configuração esta propriedade:

<fileNameMapping>no-version</fileNameMapping>

Esta é a minha configuração plug-in, por exemplo:

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

Então, agora quando eu compilar todos os arquivos a partir de um pom projeto, todos os números de versão são removidos dos frascos.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top