正如标题所说,我在src/test/java
中有一个mapper接口,它不是由mapstruct处理器生成的。
在同一个项目中,生成src/main/java
中的所有映射器。这是预期的行为吗?
如何在测试源中生成映射器?
编辑(更多信息):
简化的Maven模块结构:
root_project
-> module_1
root_project
<build>
<pluginManagement>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.6.0</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>
<compilerArgs>
<compilerArg>
-Amapstruct.defaultComponentModel=spring
</compilerArg>
</compilerArgs>
</configuration>
</plugin>
...
module_1
的pom.xml基本上是空的:
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<scope>compile</scope>
</dependency>
答案 0 :(得分:4)
我遇到了同样的问题并修复了它改变maven编译器插件版本。 请注意版本:编译器3.5.1 和 Mapstruct 1.1.0.Final
<!-- compiler plugin -->
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<dependencies>
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.1.0.Final</version>
</dependency>
</dependencies>
<configuration>
<source>1.8</source>
<target>1.8</target>
<optimize>true</optimize>
<annotationProcessorPaths>
<path>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-processor</artifactId>
<version>1.1.0.Final</version>
</path>
</annotationProcessorPaths>
</configuration>
</plugin>