Maven으로 파일 이름에서 버전 번호를 제거합니다
-
19-09-2019 - |
문제
Maven에 5 개의 모듈이있는 프로젝트가 있습니다. 지금 "MVN Clean Install"을 할 때 다른 모듈에서 두 개의 항아리, 하나의 전쟁 및 SAR이 포함 된 귀를 생성합니다.
모든 파일 이름에는 버전 (예 : ProjectX-Ear-2.0.0.ear, ProjectX-Client-2.0.0.jar 등이 포함됩니다.
파일 이름의 버전을 생략하려면 항아리 중 하나와 마지막 귀의 이름을 바꿔야합니다. 다음과 같아야합니다.
projectx-ear.ear
|
+-- projectx-client.jar
|
+-- projectx-misc-2.0.0.jar
|
+-- projectx-sar-2.0.0.sar
|
\-- projectx-web-2.0.0.web
지금은 다음 플러그인을 사용하여 빌드합니다 : Maven-Compiler-Plugin 및 Maven reelease-Plugin
내가 기대하는 결과를 달성하는 가장 좋은 방법은 무엇입니까?
해결책
귀 모듈에서 project.build.finalName
요소 또는 구성 할 수 있습니다 Maven-Ear-Plugin 지원 a finalName
선택적 매개 변수. 번들 항아리의 최종 이름을 구성하려면 jarModule
그리고 설정합니다 bundleFileName
그것에 대한 재산.
최종 구성은 그와 비슷한 것처럼 보일 수 있습니다 (여기에서 플러그인 구성에서 최종 귀 이름을 설정하는 방법을 보여 드리겠습니다).
<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>
다른 팁
당신은 그것을 지정하여이를 달성 할 수 있습니다 finalName
다음과 같은 POM의 속성 :
<build>
<finalName>${project.artifactId}</finalName>
</build>
포인트 1 : 단일 항아리/전쟁.
pom.xml에서 이름으로 버전 번호없이 만들려면 코드를 추가합니다.
<build>
<finalName>${project.artifactId}</finalName>
</build>
따라서 컴파일하면 ProjectX_MISC와 같이 projectx_misc.jar .
나에게 어떻게됩니까? POM 프로젝트 (NetBeans)에서 동일한 패키지를 컴파일하면 모든 항아리는 이름에 버전을 가지고 있으며 귀에는 xxx-version.jar 아카이브가 포함됩니다.
그래서, 포인트 2 : 귀 문제.
귀의 pom.xml 파일에서 Maven-Ear-Plugin 구성 에이 속성 추가 :
<fileNameMapping>no-version</fileNameMapping>
예를 들어 내 플러그인 설정입니다.
<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>
이제 프로젝트 POM에서 모든 아카이브를 컴파일하면 모든 버전 번호가 항아리에서 제거됩니다.