我想在不同的阶段运行maven编译器插件,并使用不同的sourceDirector和destinationDirector,以便可以使用除src / main /
java和src / test / java之外的目录的代码.
我认为这个解决方案看起来像下面那样,我将其连接到的阶段是预集成测试.但是,testSourceDirectory和testOutputDirectory的属性似乎没有以这种方式指定,因为它们位于POM的部分.
<plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-compiler-plugin</artifactId> <executions> <execution> <id>compile mytests</id> <goals> <goal>testCompile</goal> </goals> <phase>pre-integration-test</phase> <configuration> <testSourceDirectory>${basedir}/src/inttest/java</testSourceDirectory> <testOutputDirectory>${basedir}/target/inttest-classes</testOutputDirectory> </configuration> </execution> </executions> </plugin>
有没有办法让这个插件在不同的阶段编译不同的目录,而不影响它的默认操作?
解决方法
源目录位于< build>>内的编译器插件之外.元素,所以这不行.
您可以使用build-helper-maven-plugin的add-source和add-test-source为集成测试指定其他源目录,但这不会删除现有的源目录.
<plugin> <groupId>org.codehaus.mojo</groupId> <artifactId>build-helper-maven-plugin</artifactId> <version>1.3</version> <executions> <execution> <id>add-it-source</id> <phase>pre-integration-test</phase> <goals> <goal>add-source</goal> </goals> <configuration> <sources> <source>${basedir}/src/inttest/java</source> </sources> </configuration> </execution> </executions> </plugin>
如果将add-test-source目标绑定在testCompile目标之前运行,则将包括集成测试.注意你希望它们被输出到target / test-classes,所以surefire插件会找到它们.