我正在使用mapstruct将域对象映射到DTO 我已经正确生成了20多个映射器。
不再生成我的一个映射器,但是编译成功。
我使用maven并在showWarnings
配置中打开了maven-compiler-plugin
标志,但是我没有看到关于该特定映射器的警告(我确实看到了其他映射器的警告)。
是否可以从注释处理器获取一些有关未生成的映射器的信息?
我的映射器界面(名称更改):
@Mapper
public interface PersonMapper {
PersonMapper INSTANCE = Mappers.getMapper(PersonMapper.class);
PersonDTO map(Person entity);
Person map(PersonDTO dto);
}
我的Maven配置:
...
<dependency>
<groupId>org.mapstruct</groupId>
<artifactId>mapstruct-jdk8</artifactId>
<version>1.3.0.Final</version>
</dependency>
...
<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.3.0.Final</version>
</path>
</annotationProcessorPaths>
<showWarnings>true</showWarnings>
</configuration>
</plugin>
答案 0 :(得分:0)
您可以在即将发布的MapStruct版本中进行基本跟踪(详细模式)。检出documentation。您可以尝试在您的项目中使用最新的MapStruct母版,看看它是否提供有关为什么它不起作用的信息。
答案 1 :(得分:0)
对我来说,这是一个依赖问题。
我的Projet A依赖于另一个jar B,该jar包含我的mapper方法中的对象。 该依赖项B具有一个依赖项C,它为该对象的许多属性提供了mapstruct映射器。
在我的项目A中,我以某种方式将依赖项C的版本显式覆盖为旧版本。 因此,这意味着当前B版本的某些Obj属性与较早的C映射器不匹配。 Mapstruct什么也没说,只是停止生成展示。
不确定这是否很清楚...但是请检查依赖项。