2013-08-28 2 views
2

나는 Building a fat jar using maven의 예제를 따라 갔다. 이제 빌드하고/테스트하고 내 항아리를 설치하기 위해 다음을 실행할 수있다. 우리가 지금 지방 항아리를 구축하고 있기 때문에조건부로 Maven fat jar 빌드하기

mvn clean compile install 

그러나, install 이제 더 많이 걸립니다. 그것은 하나의 단지 의존하지 않고 단지를 구축하고 다른이를 수행하고 추가로 같은 지방 항아리를 구축 곳에 설치의 두 가지 버전을 가질 수 있습니다 : 나는 install-fatjar 유효한 단계 아니라는 것을 알고

mvn clean compile install 
mvn clean compile install-fatjar 

하지만 단지 원하는 내가 뭘 하려는지, 즉 팻 항아리가 옵션이 제공 될 때만 만들어지는 조건부 설치와 같은 아이디어를 준다.

답변

4

fat jar에 대한 프로파일을 작성하고이 프로파일에 fat jar를 작성하도록 maven 어셈블리 플러그인을 구성하십시오.

<profiles> 
    <profile> 
     <id>fatjar</id> 
     <build> 
      <plugins> 
       <plugin> 
        <artifactId>maven-assembly-plugin</artifactId> 
        <configuration> 
         <archive> 
          <manifest> 
           <mainClass>fully.qualified.MainClass</mainClass> 
          </manifest> 
         </archive> 
         <descriptorRefs> 
          <descriptorRef>jar-with-dependencies</descriptorRef> 
         </descriptorRefs>  
        </configuration> 
       </plugin> 
      </plugins> 
     </build> 
    </profile> 
</profiles> 

그런 다음 프로파일 fatjar 프로파일 ID를입니다

mvn -P fatjar clean install 

를 활성화하여 구축 할 수 있습니다 : 예를 들어

이 프로필을 사용합니다.

여러 프로파일은

mvn -P fatjar,release install 
+0

대단히 감사합니다. 그것은 광고 된대로 일했다! – Delip

1

은 일반적으로 우리가 주요 이슈로 지방 항아리 (또는, 동네 짱 - 항아리)를 사용하지 않는 활성화 할 수 있습니다.

어셈블리 또는 음영 플러그인을 사용하여 uber-jar 인 변형 된 (다른 분류 기준으로) 이슈의 변형을 만들 수 있습니다.

"보통"인공물은 그대로 두는 것이 좋습니다. uber-jar 가끔만 필요하다면, 프로파일에 "uber-jar"생성을위한 어셈블리/그늘 플러그인을 사용하고 필요할 때마다 프로파일을 활성화하십시오. 그러나 이것은 메인 아티펙트를 uber-jar로 만드는 대신에 "여분의"uber-jar를 생성합니다.

+0

감사합니다. 귀하의 제안이 옳았습니다. 사람들이 직접 사용할 수있는 대답이 있기 때문에 René의 대답을 수락합니다. – Delip

관련 문제