2011-03-02 5 views
19

나는 응용 프로그램과 함께 EAR을 가지고 있으며 WAR로 패키지 된 내 자신의 코드로이 응용 프로그램을 확장해야합니다. WAR를 EAR에 넣는 것을 도와 줄 수있는 maven 플러그인이 있습니까?Maven을 사용하여 EAR 내부에서 WAR를 추가하는 방법

수동 절차는 WAR를 EAR에 넣고 module을 application.xml에 추가하는 것입니다. 나는 그것을 자동화하고 싶다.

편집 : 작은 설명 - WAR 프로젝트에서 maven을 사용하고 있지만 EAR에 대해서는 이진 파일 만 있습니다.

답변

0

WAR를 의존성으로 추가하고 maven ear plugin을 사용하십시오. 그런 다음 ear:generate-application-xml 목표를 사용하고 마지막으로 ear:ear 목표를 사용합니다.

+0

어쩌면 나는 뭔가를 놓치고있다. 그러나 나는 Maven Ear Plugin을 사용하는 방법을 보지 못했다. 것은 내가 그 EAR에 대한 소스가 없다는 것입니다. – stalker

+1

EAR 파일이 있다면 압축을 풀 수 있습니다 : http://maven.apache.org/plugins/maven-ear-plugin/examples/unpacking-a-module.html 그리고 전쟁 추가, application.xml 변경 및 압축 다시. –

42

<packaging>ear</packaging> 인 새 모듈을 만들겠습니다. 예를 들어, 같은 받는다는 - 귀 플러그인을 포함,이 귀 모듈에 대한 빌드 플러그인에서 지금

<dependency> 
    <groupId>com.your.group.id</groupId> 
    <artifactId>your-war-artifact</artifactId> 
    <version>your-war-version</version> 
    <type>war</type> 
</dependency> 

:이 귀 모듈에 대한 종속성에서

, 당신의 war 모듈을 포함

<plugin> 
    <artifactId>maven-ear-plugin</artifactId> 
    <version>2.3.2</version> 
    <configuration> 
     <finalName>MyEarFile</finalName> 
     <version>5</version> 
     <generatedDescriptorLocation>${basedir}/src/main/application/META-INF</generatedDescriptorLocation> 
     <modules> 
      <webModule> 
       <groupId>com.your.group.id</groupId> 
       <artifactId>your-war-artifact</artifactId> 
       <uri>YouWarFile.war</uri> 
       <bundleFileName>YouWarFile.war</bundleFileName> 
       <contextRoot>/appname</contextRoot> 
      </webModule> 
     </modules> 
    </configuration> 
</plugin> 

필요에 따라 webModule의 특정 구성 값을 변경할 수 있습니다.

이제 부모 모듈 (<packaging>pom</packaging>)을 만들고 war 모듈과 ear 모듈을 추가하십시오. 전쟁과 귀 모듈 중 <parent>을 확실하게 설정해야합니다.

이 새 부모에 대해 mvn package을 실행하면 war 모듈에서 war 파일을 만들고 ear 모듈에서 ear 파일 (war 포함)을 빌드합니다.

+0

EAR pom.xml에 WAR를 추가해야합니까? 웹 모듈에있는 내 WAR의 위치를 ​​어떻게 알 수 있습니까? – Tushar

+0

시도해 보셨습니까? 네, 위에서 설명한 것처럼 귀 모듈에 의존성이 필요합니다. maven-ear-plugin은 war 파일에 대한 정확한 위치/경로를 필요로하지 않습니다. 이는 maven 아티팩트 (webModule 요소에 지정된 groupId 및 artifactId 사용)를 참조하기 때문입니다. – joelittlejohn

+0

@joelittlejohn 왜 유물'your-war-artifact'를 두 번 선언해야합니까? 의존성 섹션과'webModule' 섹션에서 다시 한 번? 설명해 주시겠습니까? – Geek