Removendo número da versão do nome de arquivo com Maven
-
19-09-2019 - |
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?
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.