运行 mvn install/mvn test 时出现 Maven 映射结构问题

问题描述 投票:0回答:4
java spring-boot maven maven-plugin mapstruct
4个回答
3
投票

我已经在这个问题上挣扎了很长时间,终于找到了一个适合我的解决方案:

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-compiler-plugin</artifactId>
  <version>3.8.1</version>
  <configuration>
    <source>11</source>
    <target>11</target>
    <generatedSourcesDirectory>${project.build.directory}/generated-sources</generatedSourcesDirectory>
    <annotationProcessorPaths>
      <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok</artifactId>
        <version>1.18.24</version>
      </path>
      <path>
        <groupId>org.projectlombok</groupId>
        <artifactId>lombok-mapstruct-binding</artifactId>
        <version>0.2.0</version>
      </path>
      <path>
        <groupId>org.mapstruct</groupId>
        <artifactId>mapstruct-processor</artifactId>
        <version>1.4.2.Final</version>
      </path>
    </annotationProcessorPaths>
  </configuration>
</plugin>

我添加了

generatedSourcesDirectory
参数,它开始工作。默认值是
${project.build.directory}/generated-sources/annotations
,我还有其他源生成,例如由
querydsl
目录之外的
annotations
生成。我决定删除这个路径元素,它很有帮助。


0
投票

我对lombok和mapstruct集成没有任何问题,我唯一的问题是运行mvn test或mvn install等maven命令时,它不会清理目标文件夹,然后mapstruct尝试重新创建实现文件。

所以,使用maven的选项

clean
。它将清除您的目标文件夹。
-> 例如
mvn clean install

看来你终于没有问题了...


0
投票

我也有类似的问题。我相信这是由多个插件生成代码、它们的输出目录和 maven-compiler-plugin 将 useIncrementalCompilation 设置为 true 引起的。就我而言,将 useIncrementalCompilation 设置为 false 有效,但不建议

就我而言,我使用的插件及其各自的输出目录如下:

插件 输出目录
avro-maven-插件 ${project.build.directory}/生成源
maven 编译器插件 ${project.build.directory}/ generated-sources/annotations
apt-maven-插件 ${project.build.directory}/ generated-sources/java

我怀疑问题是 avro-maven-plugin 输出到 maven-compiler-plugin 输出父目录。将每个插件设置为其自己的同级目录是有效的。

插件 输出目录
avro-maven-插件 ${project.build.directory}/ generated-sources/avro
maven 编译器插件 ${project.build.directory}/ generated-sources/annotations
apt-maven-插件 ${project.build.directory}/ generated-sources/java

0
投票

更改类

SimpleSourceDestinationMapperImpl
的名称,它将被修复,因为在构建时带有注释@Mapper的接口
SimpleSourceDestinationMapper
将生成已经存在的
SimpleSourceDestinationMapperImpl.java

© www.soinside.com 2019 - 2024. All rights reserved.