gpt4 book ai didi

gradle - 从 Gradle 4 迁移到 5。如何让 mapstruct 1.20.final 使用它

转载 作者:行者123 更新时间:2023-12-05 00:45:44 25 4
gpt4 key购买 nike

我们已经使用 mapstruct 1.20.final 大约 1.5 年的各种 Gradle 版本 - 最新的 gradle 4.10.2。我们想切换到 Gradle 5.4.1,它适用于除 mapstruct 之外的所有内容。我们的工作设置不干净。于是决定重新开始。旧的工作设置是 example 的混合形式在 Github 和现在 obsolete setup .

再次开始 http://mapstruct.org/news/2013-07-08-using-mapstruct-with-gradle作为基地。强烈感觉这与 Gradle 5 不兼容。 发行说明 Gradle 5 声明:Gradle 将不再自动应用编译类路径上的注释处理器 - 而是使用 CompileOptions.annotationProcessorPath。尝试按照 https://blog.gradle.org/incremental-compiler-avoidance#about-annotation-processors 中的描述进行操作.这适用于 4.10.2。使用 Gradle 5 这会导致以下错误:
任务 ':eu.educator.rest:compileJava' 执行失败。
无法通过 CompileOptions.compilerArgs 指定 -processorpath 或 --processor-path。请改用 CompileOptions.annotationProcessorPath 属性。

我们有一个多项目设置。在“rest”项目中,经过 sanitizer 的 build.gradle 如下所示:

plugins {
id 'net.ltgt.apt' version '0.21'
}

configurations {
apt
}

dependencies {
apt libraries.mapstruct_processor
compileOnly libraries.mapstruct_processor
}

compileJava {
options.annotationProcessorPath = configurations.apt
}

在过去 1.5 天内尝试了多种设置。不能让它工作。因此,如果有人有使用 Gradle 5 的 mapstruct,我真的很感激一个有效的 build.gradle、提示、指针。

附注。如何使用符合 Gradle 5 的版本替换以下内容。
tasks.withType(JavaCompile) {
options.compilerArgs = [
'-Amapstruct.suppressGeneratorTimestamp=true'
]
}

最佳答案

由于最新的 Gradle 版本(我会说 >= 4.8),您可以按如下方式简化构建脚本;你不需要apt不再使用插件,只需使用 annotationProcessor Gradle 配置:

ext{
mapstructVersion = "1.2.0.Final"
}
dependencies{
// ...
// --- Mapstruct ---------------------------------
compileOnly("org.mapstruct:mapstruct-jdk8:${mapstructVersion}")
annotationProcessor "org.mapstruct:mapstruct-processor:${mapstructVersion}"
}
compileJava {
options.annotationProcessorPath = configurations.annotationProcessor

// if you need to configure mapstruct component model
options.compilerArgs << "-Amapstruct.defaultComponentModel=spring"
}

注意:默认情况下,Gradle 会在目录中生成源代码: build/generated/sources/annotationProcessor/java/main
但这是可配置的,例如:
compileJava { 
// ...
options.setAnnotationProcessorGeneratedSourcesDirectory( file("$projectDir/src/generated/java"))

关于gradle - 从 Gradle 4 迁移到 5。如何让 mapstruct 1.20.final 使用它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56170222/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com