The set of directory elements live in the parent build element, which set various directory structures for the POM as a whole. Since they do not exist in profile builds, these cannot be altered by profiles.
그러니까 sourceDirectory, testSourceDirectory 엘리먼트는 profile 엘리먼트하위의 build에는 존재하지 않기 때문에 프로파일에서 변경이 불가하다는 것이다.
<sourceDirectory>${basedir}/src/main/java</sourceDirectory>
<scriptSourceDirectory>${basedir}/src/main/scripts</scriptSourceDirectory>
<testSourceDirectory>${basedir}/src/test/java</testSourceDirectory>
<outputDirectory>${basedir}/target/classes</outputDirectory>
<testOutputDirectory>${basedir}/target/test-classes</testOutputDirectory>
...
</build>
</project>
과연 바꿀 수 없을까? 바꿀 수 있다!
parent build 엘리먼트에서 소스 디렉토리의 경로를 프로퍼티로 설정하고 프로파일에서 프로퍼티를 재정의하면 된다.
<java.src.dir>src</java.src.dir>
<scripts.src.dir>scripts</scripts.src.dir>
<test.src.dir>test</test.src.dir>
<java.output.dir>web/WEB-INF/classes</java.output.dir>
<test.output.dir>bin/test</test.output.dir>
</properties>
<build>
<sourceDirectory>${java.src.dir}</sourceDirectory>
<scriptSourceDirectory>${scripts.src.dir}</scriptSourceDirectory>
<testSourceDirectory>${test.src.dir}</testSourceDirectory>
<outputDirectory>${java.output.dir}</outputDirectory>
<testOutputDirectory>${test.output.dir}</testOutputDirectory>
...
</build>
<profiles>
<profile>
... ...
<properties>
<java.src.dir>src2</java.src.dir>
<scripts.src.dir>scripts</scripts.src.dir>
<test.src.dir>test2</test.src.dir>
<java.output.dir>/weblogic/deploy/app/WEB-INF/classes</java.output.dir>
<test.output.dir>bin/test2</test.output.dir>
</properties>
</profile>
메이븐에서는 만약 profile별로 다른 소스 디렉토리 구조를 가져야한다면 별도의 프로젝트로 분리할 것을 권장하고 있다. 그 말이 맞는 것같다.
'Build&Deploy > Maven' 카테고리의 다른 글
Maven : 메이븐으로 외부 메이븐 프로젝트 빌드하기 (0) | 2008.10.01 |
---|---|
Maven : test, deploy phase 건너뛰기 (0) | 2008.10.01 |
Maven : 임의의 파일을 포함하는 zip 파일 만들기 (0) | 2008.10.01 |
Maven : StatSCM 플러그인으로 CVS저장소 통계 리포트 생성시 IOException (0) | 2008.10.01 |
Maven : wagon으로 리모트에 파일 전송시 CVS폴더 포함 (0) | 2008.10.01 |