如何将测试生成的源保留在生成的源目标文件夹中

时间:2018-06-28 20:36:02

标签: java maven m2e mapstruct

我正在使用MapStruct生成一些Entity到DTO映射器。我定义了一个抽象映射器,并使用测试实体,测试dto和测试映射器为其创建了一些测试。这些测试文件位于src / test / java文件夹中,但是当MapStruct生成测试映射器的实现时,它将生成的源放置在target / Generated-sources文件夹中,而不是target / Generated-test-sources文件夹中。这将导致该类被编译为我不想要的实际jar文件。

[更新] 我举了一个在这里重现问题的例子:

https://github.com/niltz/so-51090868-example

当我在命令行上使用maven运行构建时,似乎工作正常,但是当我将pom导入Spring Tool Suite时,我遇到了问题。

2 个答案:

答案 0 :(得分:1)

我对src/test/java/中的下一堂课进行了快速测试

 @Mapper
 public abstract class AbstactClass {

 }

我的maven pom中具有以下依赖项和插件:

      <plugin>
          <groupId>org.apache.maven.plugins</groupId>
          <artifactId>maven-compiler-plugin</artifactId>
          <version>3.5.1</version>
          <configuration>
            <source>1.8</source>
            <target>1.8</target>
            <annotationProcessorPaths>
              <path>
                <groupId>org.mapstruct</groupId>
                <artifactId>mapstruct-processor</artifactId>
                <version>1.1.0.Final</version>
              </path>
            </annotationProcessorPaths>
          </configuration>
        </plugin>

    <dependency>
      <groupId>org.mapstruct</groupId>
      <artifactId>mapstruct-jdk8</artifactId>
      <version>1.1.0.Final</version>
    </dependency>

并运行mvn clean install。生成的类在target/generated-test-sources中。 如果您提供有关班级和设置的更多信息,我可以提供更多帮助。

答案 1 :(得分:1)

在使用JDT APT,maven-compiler-plugin和较旧版本的eclipse时,m2e eclipse插件似乎有问题。

https://marketplace.eclipse.org/content/m2e-apt

显然,我需要确保使用Eclipse Photon或更高版本,或者可以使用maven-processor-plugin代替。我选择了升级Eclipse,现在看来可以了。

https://bsorrentino.github.io/maven-annotation-plugin/