가정하자 내가 메이븐 멀티 모듈 자바 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 디렉토리 레이아웃에서 그와 귀 파일이 아닙니다.