Mapstruct:考虑定义一个类型为''FooMapper"在你的配置中



我正试图让Mapstruct与gradle一起工作。当我在eclipse中从引导指示板运行服务时,这些实现生成并工作得很好,但是当使用gradlew bootrun运行时,它们不生成,并且找不到bean。下面是错误:

*************************** 应用程序无法启动


描述:

字段fooMapper在ServiceImpl需要一个类型为' fooMapper '的bean

注入点有如下注解:- @org.springframework.beans.factory.annotation.Autowired(要求= true)

行动:

考虑在你的配置中定义一个'FooMapper'类型的bean。

这是我的构建。gradle文件:

plugins {
id "org.springframework.boot"
id "groovy"
id "com.diffplug.eclipse.apt" version "3.31.0" 
}
configurations {
// configuration to enable running bootRun locally
// with embedded h2 database
runlocal
}
ext {
mapstructVersion = "1.5.0.Beta1"
}
dependencies {
implementation "org.mapstruct:mapstruct:${mapstructVersion}"
annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}"
testImplementation "org.testng:testng:6.10", "org.easytesting:fest-assert:1.4"
implementation project(":common")
implementation "org.springframework.boot:spring-boot-starter-web:$springBootVersion"
implementation "org.springframework.boot:spring-boot-starter-jdbc:$springBootVersion"
implementation "org.springframework.boot:spring-boot-starter-data-jpa:$springBootVersion"
implementation "org.springframework.boot:spring-boot-starter-actuator:$springBootVersion"
implementation "org.springframework.boot:spring-boot-starter-validation:$springBootVersion"
implementation "org.codehaus.gpars:gpars:1.2.1"
developmentOnly "org.springframework.boot:spring-boot-devtools:$springBootVersion"

runlocal project(":test-db")

testImplementation project(":test-db")
}
sourceSets.main.groovy.srcDirs += ["build/generated/sources"]
bootRun {
classpath = sourceSets.main.runtimeClasspath + configurations.runlocal
}
tasks.withType(JavaCompile) {
options.compilerArgs = [
"-Amapstruct.suppressGeneratorTimestamp=true",
"-Amapstruct.defaultComponentModel=spring",
"-Amapstruct.verbose=true"
]
}

是因为我的代码是用groovy写的吗?但是为什么它会与eclipse中的引导仪表板一起工作呢?我正在使用@Mapper(componentModel = 'spring'),但这并没有解决这个问题。使用1.4.2版本。FINAL也不行。任何帮助都将非常感激!

在eclipse中有同样的问题,解决了配置我的项目属性:

去:Java Compiler>注解处理

SetEnable Project specific settings真正的

去:Java Compiler>注释处理>工厂路径

添加外部jar:在这里找到您的mapstruct-processor-1.4.2-Final.jar的位置在gradle缓存目录中,我使用debian 11,我的路径是:

/.gradle/caches/modules-2/files-2.1/org.mapstruct/mapstruct-processor/1.4.2.Final/e55bd90d51cddd638c07d5bd89fc7535d4e3d069/mapstruct-processor-1.4.2.Final.jar

应用并关闭,gradle应该重新构建项目,生成两个新文件夹。Apt_generated。Apt_generated_tests在包资源管理器上使用映射程序代码

相关内容

  • 没有找到相关文章

最新更新