2012-09-17 2 views
3

Maven을 사용하여 두 개의 다른 web.xml 파일이있는 두 개의 WAR 파일을 만들어야합니다. 그렇지 않으면 WAR 파일도 동일합니다.Maven : 각각 다른 web.xml로 2 개의 war 파일을 생성 하시겠습니까?

WAR 파일은 예상대로 생성되지만 두 번째 파일은 첫 번째 파일과 동일한 web.xml 파일을 갖습니다.

두 번째 WAR에 Maven WAR 플러그인이 두 번째 파일을 사용하도록하려면 어떻게해야합니까? 한 번에 작성한 두 파일이 필요하므로 프로파일을 사용할 수 없습니다.

내 현재 코드 :

<plugin> 
    <groupId>org.apache.maven.plugins</groupId> 
    <artifactId>maven-war-plugin</artifactId> 
    <version>2.2</version> 
    <configuration> 
    <warSourceDirectory>${basedir}/WEB</warSourceDirectory> 
    <warName>main</warName> 
    <webXml>${basedir}/CONF/web.xml</webXml> 
    </configuration> 
    <executions> 
    <execution> 
     <id>hist-war</id> 
     <phase>package</phase> 
     <goals> 
     <goal>war</goal> 
     </goals> 
     <configuration> 
     <warName>hist</warName> 
     <warSourceDirectory>${basedir}/WEB</warSourceDirectory> 
     <webXml>${basedir}/CONF/hist.web.xml</webXml> 
     </configuration> 
    </execution> 
    </executions> 
</plugin> 
+0

방금 ​​다른 옵션을 발견했으며 내 경우 (이 [링크] (http://maven.apache.org/plugins/maven-war-plugin/faq.html#filtering))에서 작동하는 것으로 보입니다. 'filteringDeploymentDescriptors' 설정 속성. – KirEvse

답변

4

Maven WAR pluginoverlay 기능을 사용하십시오.

두 가지 WAR 프로젝트가 필요합니다. 첫 번째 파일은 원본 파일이며 web.xml 파일이 올바른 위치에 있습니다. 이것은 구성면에서 특별한 요구 사항이 없습니다. 예상대로 빌드되었는지 확인하십시오.

WEB-INF 디렉토리에는 두 번째 필드에만 POM과 web.xml이 포함됩니다. 이 프로젝트의 POM은 war로 지정된 유형 및 런타임으로 지정된 범위의 첫 번째 프로젝트에 대한 종속성을 포함해야합니다. Maven WAR 플러그인을 명시 적으로 구성 할 필요는 없습니다.

+0

web.xml을 오버레이 할 수 없으므로 작동하지 않을 수 있습니다 (이 [link]를 기반으로 함 (http://java.dzone.com/articles/mavens-war-overlay-what-are)) 및이 인용구 : "이 문제가 발생할 수있는 또 하나의 문제는 web.xml을 다루는 것입니다. 오버레이의 web.xml 파일은 복사되지 않으며 어떤 방식으로도 병합되지 않으므로 오버레이에 특정 웹이있는 경우 .xml 파일 정보를 수동으로 web.xml에 추가하거나 web-overlay 파일에 내용을 추가 한 태그를 사용할 수 있습니다 .xml을 오버레이 전쟁 프로젝트에 추가하십시오. " – KirEvse

+0

내가 제안하고있는 것은 대체물 인'web.xml' 파일 만있는 새로운 WAR를 오버레이하는 것입니다. 귀하의 의견에 언급 된 이유와 정확히 일치해야합니다. –

+0

올바른 이름의 hist.web.xml 파일을 올바른 이름으로 포함하도록 오버레이를 어떻게 구성합니까? 나는''을 사용하고 모든 것을 포함해야한다고 가정하고있다. 하지만 web.xml 부분에 대해서는 잘 모르겠습니다. 나는 내가 다른 게시물을 묘사 한 방식을 발견했을 때 정확히 그것을하려고 노력했다. 그러나, 나는 그것이 오버레이와 함께 작동하는 방법을 찾는데 여전히 관심이있다. 감사! – KirEvse

0

전쟁 플러그인을 사용하여 개는 다양한이있는 것 같다. 이 경우에는 적절한 전쟁을 구축하기 위해 2 개의 별도 하위 모듈을 사용합니다.

+0

외부 실행 설정 섹션의 webXml에 기본값이 있어야하므로 (실행이 실패한 경우) 작동하지 않습니다. 그 섹션이 포함되면 3 개의 다른 이름으로 된 3 개의 전쟁이 생길 것입니다. 그 중 하나에는 기본 이슈 ID 이름이 있습니다. 그것은 항상 실행되고있는 디폴트 전쟁 목표가 있기 때문입니다. – KirEvse

+0

@KirEvse - 내 대답 업데이트 – jtahlborn

관련 문제