当前位置: 首页 > 知识库问答 >
问题:

Intellij没有挑选mapstruct生成的类

暨弘懿
2023-03-14

我试图修复Intellij和Mapstruct的一个问题。

之前我使用过Java8和Gradle4.6,并且Mapstruct运行良好。现在我已经将Java升级到11,Gradle升级到4.10.3。现在的问题是,在构建之后,当我运行应用程序时,我以unsatifiedDependencyException告终,因为某些映射器类不可用。我已经讨论了很多问题,其中大多数都建议将Intellij构建/运行操作委托给Gradle。但我希望Intellij运行应用程序和测试。这篇文章提出了我想要的解决方案,但是在应用了这个方案之后,我得到了一些不同的编译错误。

这是我的构建中的一个部分。gradle:

//mapstruct lib to generate mappings between Java bean types
compileOnly("org.mapstruct:mapstruct-processor:${mapStructVersion}")
annotationProcessor("org.mapstruct:mapstruct-processor:${mapStructVersion}")

//lib to support lombok
compileOnly 'org.projectlombok:lombok:1.18.6'
annotationProcessor 'org.projectlombok:lombok:1.18.6'

以前,映射器类是在src-->generated中生成的。现在升级之后,生成了src->中没有生成的映射器类。Gradle生成的类出现在root-->build中,在那里我可以看到映射器类。Intellij没有正确地选择生成的类,或者我缺少一些配置

请帮助我正确地修复路径。

PS:我正在使用Intellij 2019.1.2、Mapstruct 1.2.0.Final和Spring Boot 2.2.2.Release。

共有1个答案

百里君博
2023-03-14

尝试使用实现而不是compileonly在官方MapStruct示例中的用法:https://github.com/MapStruct/mapstruct-examples/blob/master/mapstruct-on-gradle/build.gradle

 类似资料:
  • 当我在中使用时,它会生成一个,我希望能够访问该文件以在单元测试中导入,但intellij看不到它

  • 我编写了所需的带有注释的接口和作为装饰器的抽象类。生成(mvn清理包)后,通过“默认”过程更新修饰的函数,得到的是参数和结果类型。我不知道,有什么问题。你能帮帮我吗? 环境:mapstruct版本1.4.2。lombok最终版本1.18.22(Spring boot 2.6.3)lombok mapstruct绑定:0.2.0 和 Mapper接口声明: 装饰师: } 以及生成的源:

  • 我想知道为什么我的映射器由映射结构生成的映射器不是用获取器和设置器生成的。 我认为正因为如此,当我去对邮递员发出GET请求时,它会返回所有不应该返回空值的空值。 我使用专家,java 8和Spring启动 pom.xml文件: 映射器: 实体DTO: 实体: 映射器实现: 如果有人知道怎么解决,请帮忙。谢谢;)

  • 我正在使用Mapstruct映射器开始我的第一步。我想把一个JPA数据实体类映射到一个DTO类。这是我的源类: 这是我的目标类: 任何帮助都将不胜感激!

  • 我对JOOQ框架(3.13.4)以及Spring Boot和Java8有问题。 问题是我试图使用java代码方式生成域类(而不是使用带有maven的codegen插件,这在自定义命名策略提供程序方面遇到了一些麻烦)。因此,首先让我向您展示包含(至少我相信它包含)所有必要bean的@Configuration类: 可路由数据源是一种扩展抽象路由数据源的类型,因为在这种情况下,我需要有可能在运行时更改

  • 当使用“JSR330”componentModel使用MapStruct生成映射器实现时,micronaut将在运行时尝试注入这些实现时抛出一个NoSuchBeanException。 一个解决办法是使用提供程序来提供映射器对象,但生成的代码应该可以工作。 映射器定义: 控制器: pom.xml摘录: 当调用控制器上的方法时,我会期望Micronaut找到Mapstruct生成的类(它用@sing