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

前端之家收集整理的这篇文章主要介绍了java – Maven2编译器自定义执行源目录和目标目录前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想在不同的阶段运行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-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目标绑定在testCompile目标之前运行,则将包括集成测试.注意你希望它们被输出到target / test-classes,所以surefire插件会找到它们.

为了处理标准测试源的删除,我写了一个小插件修改模型以删除现有的testSource位置,然后再添加它们进行集成测试.

猜你在找的Java相关文章