2012-06-02 4 views
0

가정하자 내가 메이븐 멀티 모듈 자바 EE 6 응용 프로그램을 가지고 : 당신이 볼 수 있듯이, 나는 자원 필터링을 사용하고메이븐 멀티 모듈 프로젝트 중복 귀 출력, 하나

foobar/ 
    foobar-ear/ 
     src/ 
      main/ 
       application/ 
        META-INF/ 
         MANIFEST.MF 
         glassfish-application.xml 
         glassfish-resources.xml 
       filters/ 
        dev.properties 
        prod.properties 
        test.properties 
     pom.xml 
    foobar-web/ 
    foobar-ejb/ 
    pom.xml 

.

<profiles> 
    <profile> 
     <id>dev</id> 
     <properties> 
      <env>dev</env> 
     </properties> 
     <activation> 
      <activeByDefault>true</activeByDefault> 
     </activation> 
    </profile> 
    <profile> 
     <id>test</id> 
     <properties> 
      <env>test</env> 
     </properties> 
    </profile> 
    <profile> 
     <id>demo</id> 
     <properties> 
      <env>demo</env> 
     </properties> 
    </profile> 
    <profile> 
     <id>prod</id> 
     <properties> 
      <env>prod</env> 
     </properties> 
    </profile> 
</profiles> 

을 그리고 각 하위 프로젝트의 치어 자원 필터링을 정의는 foobar - 귀에서 치어 빌드 프로파일을 정의합니다. 는 foobar-귀에서/pom.xml 파일 :

<build> 
    ... 

    <filters> 
     <filter>src/main/filters/${env}.properties</filter> 
    </filters> 
    <resources> 
     <resource> 
      <directory>src/main/application</directory> 
      <filtering>true</filtering> 
      <includes> 
       <include>**/*.xml</include> 
      </includes> 
     </resource> 
     <resource> 
      <directory>src/main/application</directory> 
      <filtering>false</filtering> 
      <excludes> 
       <exclude>**/*.xml</exclude> 
      </excludes> 
     </resource> 
    </resources> 

    ... 
</build> 

여기 의도는 필터링하는 foobar와 귀/SRC/메인/응용 프로그램/JDBC와 JavaMail에 구성 항목에 대한 자리 표시자를 포함 META-INF/글래스 피쉬-resources.xml에 필터 등록 정보 파일에 정의되어 있습니다.

내가 mvn -Pdev clean install를 사용하여 빌드, 내가 foobar와 귀에서이 출력을 얻을 : 당신이 볼 수 있듯이

foobar-ear/ 
    target/ 
     classes/ 
      META-INF/ 
       MANIFEST.MF 
       glassfish-application.xml 
       glassfish-resources.xml <- This one is filtered 
     foobar-ear/ 
      META-INF/ 
       MANIFEST.MF 
       glassfish-application.xml 
       glassfish-resources.xml <- This one is NOT filtered 
      lib/ 
      foobar-ejb.jar 
      foobar-web.war 
     application.xml 
     foobar-ear.ear      <- ear file. Contents same as foobar-ear/ 

는, 일반적인 출력 위치에 복사 한 자원이 필터링을하지만, EAR 디렉토리 레이아웃에서 그와 귀 파일이 아닙니다.

답변

0

<filtering>true</filtering>maven-ear-plugin 구성에 추가했는데 이제 작동합니다.

<build> 
    <plugins> 
     <plugin> 
      <groupId>org.apache.maven.plugins</groupId> 
      <artifactId>maven-ear-plugin</artifactId> 
      <version>2.7</version> 
      <configuration> 
       <filtering>true</filtering> 
       [...] 
      </configuration> 
     </plugin> 
     [...] 
    </plugins> 
    [...] 
</build> 

참조 : Filtering the sources