Mapstruct没有为我的映射器接口之一生成实现。有办法知道原因吗?

时间:2019-08-19 09:36:43

标签: mapstruct

我正在使用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>

2 个答案:

答案 0 :(得分:0)

您可以在即将发布的MapStruct版本中进行基本跟踪(详细模式)。检出documentation。您可以尝试在您的项目中使用最新的MapStruct母版,看看它是否提供有关为什么它不起作用的信息。

答案 1 :(得分:0)

对我来说,这是一个依赖问题。

我的Projet A依赖于另一个jar B,该jar包含我的mapper方法中的对象。 该依赖项B具有一个依赖项C,它为该对象的许多属性提供了mapstruct映射器。

在我的项目A中,我以某种方式将依赖项C的版本显式覆盖为旧版本。 因此,这意味着当前B版本的某些Obj属性与较早的C映射器不匹配。 Mapstruct什么也没说,只是停止生成展示。

不确定这是否很清楚...但是请检查依赖项。