의 사용을 찾을 수 있습니다. compile
뒤에 원래 원본 파일을 복원하십시오. 뭐 그런 (프로파일에 그것을 넣어) :
<plugin>
<artifactId>maven-antrun-plugin</artifactId>
<version>1.4</version>
<executions>
<execution>
<id>replace-source-file</id>
<phase>process-sources</phase>
<configuration>
<tasks>
<move file="src/main/java/com/stackoverflow/App.java" tofile="src/main/java/com/stackoverflow/App.java.moved"/>
<copy file="src/main/java2/com/stackoverflow/App.java" todir="src/main/java/com/stackoverflow/"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
<execution>
<id>restore-source-file</id>
<phase>compile</phase>
<configuration>
<tasks>
<move file="src/main/java/com/stackoverflow/App.java.moved" tofile="src/main/java/com/stackoverflow/App.java"/>
</tasks>
</configuration>
<goals>
<goal>run</goal>
</goals>
</execution>
</executions>
</plugin>
업데이트 : 주석의 OP에 의해 언급 한 바와 같이,이 방법의 주요 단점이있다. 컴파일 오류가있는 경우 잘못된 소스 파일 (및 *.java.moved
파일)은 src/main/java
디렉토리에 있습니다. 이것은 문제입니다.
더 깨끗한 대안은 전용 모듈에서 소스의 두 버전을 모두 이동하고 프로필에 따라 하나 또는 다른 모듈을 종속성으로 선언하는 것입니다 (보통 아티팩트는 기본적으로 활성화 된 프로필에 포함됩니다). 나는 심지어 컴파일러 제외를 망치지 않을 것이다. 이것은 효과적이고 깨끗합니다.
고맙습니다, 그게 큰 함정을 가지고 있습니다 : 컴파일 오류가 있다면 잘못된 소스 파일 (그리고 * .java .moved 파일)은 src/main/java 디렉토리에 있습니다. – Marko
@ user385480 Arghhh, 실제로, 그것에 대해 생각하지 않았다. 내 대답을 업데이트 할게. –