문제

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에서 모든 아카이브를 컴파일하면 모든 버전 번호가 항아리에서 제거됩니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top