gpt4 book ai didi

java - Maven2编译器自定义执行源目录和目标目录

转载 作者:搜寻专家 更新时间:2023-10-30 21:26:19 25 4
gpt4 key购买 nike

我想在不同的阶段使用不同的 sourceDirectories 和 destinationDirectories 运行 maven 编译器插件,以便可以使用 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-helper-maven-plugin 的 add-sourceadd-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 目标绑定(bind)到 testCompile 目标之前运行,您的集成测试将被包括在内。请注意,您希望将它们输出到目标/测试类,以便 surefire 插件能够找到它们。

为了处理标准测试源的删除,我编写了一个小插件来修改模型以删除现有的 testSource 位置,然后再添加用于集成测试的位置。

关于java - Maven2编译器自定义执行源目录和目标目录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1277870/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com