2012-03-06 4 views
1

나는 이것이 잘못된 것으로 생각 될지도 모른다는 것을 이해하지만, 설치하려고 할 때 WAR로 패키징 될뿐만 아니라 단일 WAR을 포함하는 EAR로 추가되는 Maven POM (모듈)을 갖도록 시도합니다.분류기를 사용하여 해당 WAR를 하나의 모듈로 포함하는 WAR 및 EAR을 생성합니다.

명확히하기 : 프로젝트의 각 기존 WAR를 자신의 EAR에 래핑하려고합니다.

내 욕망의 이유는 릴리스 된 WAR을 패키지화하여 EAR에 포함되도록 (즉, 개발 용이성을 위해 독립적 인 WAR 아티팩트를 생성하기 위해) WAR를 패키지하는 방식을 재구성하려는 것이기 때문입니다. WAR에 의존하는 새로운 모듈을 생성하고 EAR에 패키지를 만들고 싶지 않습니다. 왜냐하면 WAR가 많기 때문입니다.

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 
    <parent> 
     ... 
    </parent> 
    <modelVersion>4.0.0</modelVersion> 
    <artifactId>se-index-webapp</artifactId> 
    <packaging>war</packaging> 

    <build> 
     <plugins> 

      <plugin> 
       <artifactId>maven-war-plugin</artifactId> 
       <configuration> 
        ... 
       </configuration> 
      </plugin> 

      <plugin> 
       <artifactId>maven-ear-plugin</artifactId> 
       <version>2.7</version> 
       <configuration> 
        <finalName>search-index.ear</finalName> 
        <classifier>ear</classifier> 
        <unpackTypes>war</unpackTypes> 
        <modules> 
         <webModule> 
          <groupId>${project.groupId}</groupId> 
          <artifactId>${artifactId}</artifactId> 
          <uri>search-index.war</uri> 
          <bundleFileName>search-index.war</bundleFileName> 
          <contextRoot>/SearchIndex</contextRoot> 
         </webModule> 
        </modules> 
       </configuration> 
       <dependencies> 
        <dependency> 
         <groupId>${project.groupId}</groupId> 
         <artifactId>${artifactId}</artifactId> 
         <version>${project.version}</version> 
         <type>war</type> 
        </dependency> 
       </dependencies> 
      </plugin> 

     </plugins> 
    </build> 

    <dependencies> 
     ... 
    </dependencies> 

</project> 

내가 오류 얻을 :

현재 나는 분류 사용 성공없이 기존 WAR 모듈 중 하나, 를 들어,이 노력하고

Artifact[war:myproject:se-index-webapp] is not a dependency of the project 

을 무엇인가 I 가능 하려고?

+0

전쟁 프로젝트의 pom.xml에 전쟁 만 처리하고 배포시 별도의 "deploy-as-ear"pom.xml을 호출하는 것을 고려하십시오. –

+0

청소기를 사용하려는 경우이 방법을 사용할 수 없습니다. 내 지식에 당신이하려고하는 것은 암묵적으로 무한 의존성주기를 만들어 내기 때문에 불가능합니다. Maven 사용자 ML –

+0

에서 더 나은 옵션을 찾을 수 있습니다. 직장에서 귀 내부의 프로젝트 종속성과 아티팩트를 패키지화하고 이슈 형식을 기반으로 배포 설명자를 생성하는 사용자 지정 Maven 플러그인을 만들었습니다. 마른 전쟁을 일으키기 위해 구성된 전쟁 플러그인과 함께하면 효과적입니다. 프로젝트는 기본적으로 비슷한 pakcaging을 사용하는 oracle jdeveloper로 생성되었습니다. 어떻게 든 게시 할 수 있는지 확인해야합니다. –

답변

0

다음과 같은 구조로 결과를 별도의 EAR 모듈을 가지고 메이븐 규칙을 기반으로 변경해야 할 첫 번째 일은 : 당신 모드 전쟁 모듈은 매우 간단에

+-- root (pom.xml) 
     +--- mod-ear (pom.xml) packaging: ear 
     +--- mod-war (pom.xml) packaging: war 

당신이 종속성을 정의 할 수 있습니다보다가 제공함으로써

<dependencies> 
     <dependency> 
      <groupId>..</groupId> 
      <artifactId>..</artifactId> 
      <version>..</version> 
     </dependency> 
    ... 
    </dependencies> 

귀에 속하는 정보와 귀 모듈에 속하는 정보를 분리 한이 접근법의 장점.

결과적으로 루트 수준에서 mvn 클린 패키지를 수행하거나 mvn install/deploy를 수행하여 귀뿐만 아니라 ear도 저장소에 배포 할 수 있습니다.

+0

답변을 주셔서 감사합니다.하지만 어떻게해야하는지 이해합니다. 그러나, 나는이 EAR에 하나의 WAR를 감싸기 위해 추가 모듈을 피하고자한다. (왜냐하면 내가 EAR을 감싸는 많은 것을 가지고 있기 때문이다.) –

+1

당신이 좋아하는 것은 무엇이든간에 당신은 Maven과 싸우기 시작할 것이다. ;-) The 숫자가 인수가 아닙니다 ... – khmarbaise