현재 WAR 파일을 생성하는 Maven 빌드 (버전 2.2.1)가 있습니다. 출력 디렉토리는 target/
이므로 빌드 이슈 target/MyWar.WAR
으로 끝납니다.WAR 패키지 제품에 Maven 프로파일 사용
A.xml
파일의 특정 버전을 필요로하는 특정 빌드 "형식"을 용이하게하기 위해 POM.xml 파일에 두 개의 프로파일을 추가합니다. 중간 빌드 디렉토리 target/MyWar/
에서이 3 개 개의 파일은 다음과 같습니다 A.xml를 사용해야 지정된 프로파일없이 메이븐에서
A.xml
A_1.xml
A_2.xml
건물, 그리고 현재 않습니다. 나는 maven-antrun-plugin
(프로필 1)을 사용하여 A.xml을 A_1.xml로 바꾸고, 프로필 2의 경우 A.xml을 A_2.xml로 바꿉니다. (_1와 _2 접미사를 제거.)
이 프로필 (1)의 실행의 예입니다
<profile>
<id>Profile1</id>
<build>
...
<execution>
<id>Profile1-Replace</id>
<phase>package</phase>
<goals>
<goal>run</goal>
</goals>
<configuration>
<tasks>
<delete
file="${project.build.outputDirectory}/../MyWar/A.xml" />
<copy
file="${project.build.outputDirectory}/../MyWar/A_1.xml"
tofile="${project.build.outputDirectory}/../MyWar/A.xml" />
</tasks>
</configuration>
</execution>
...
</build>
</profile>
이 올바르게 중간 목표/MyWar/디렉토리에있는 파일을 대체하지만, 어떤 이유로 최종 WAR에 대한 그 제품은 target
에서 이 아니며은 이러한 변화를 반영합니다.
'패키지'단계에서 실행하는 것이 너무 늦어서 WAR이 이미 작성된 것과 같습니다. A.xml 파일 (및 중간 빌드 디렉토리)이 아직 작성되지 않았기 때문에 단계를 '컴파일'또는 '테스트'로 변경하면 바로 이전 단계가 불평합니다.
Maven 2 또는 Maven 1? Maven 2의 경우 어떤 버전입니까? 최근 버전의 Maven 2에서는 요소의 플러그인 순서에 따라 동일한 단계에있을 때 플러그인이 실행되는 순서가 결정됩니다. –
Pace
Maven 2.2.1, 내 질문이 업데이트되었습니다. –
A.xml 파일 하나를 보관할 수도 있지만 리소스 필터링 (http://www.sonatype.com/books/mvnref-book/reference/resource-filtering-sect-description.html) 대신 프로필, 원하는 효과를 얻으려면? – Upgradingdave