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

从Gradle 4迁移到5。如何获得mapstruct1.20.final使用它

巫马淳
2023-03-14

我们使用了mapstruct 1.20。最终约1.5年,各种Gradle版本-最新Gradle 4.10.2。我们想切换到Gradle 5.4.1,它可以处理除mapstruct之外的所有内容。我们的工作环境不干净。于是决定重新开始。旧的工作设置是Github上的示例和现在过时的设置的混合形式。

重新开始http://mapstruct.org/news/2013-07-08-using-mapstruct-with-gradle作为基础。有这种强烈的感觉,这与Gradle 5不兼容。发行说明Gradle 5声明:Gradle将不再自动应用位于编译类路径-使用编译选项上的注释处理器。而是annotationProcessorPath。尝试按中所述操作https://blog.gradle.org/incremental-compiler-avoidance#about-注释处理器。这适用于4.10.2。对于Gradle 5,这会导致以下错误:任务执行失败:eu。教育工作者Rest:compileJava’。无法通过CompileOptions指定-processorpath或-processor path。编译器args。使用编译选项。改为annotationProcessorPath属性。

我们有一个多项目设置。在项目“Rest”中,经过消毒的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天内尝试了多种设置。无法使其工作。因此,如果任何人有mapstruct与Gradle 5一起工作,我真的非常感谢一个工作构建。gradle,提示,指针。

附:我如何用Gradle 5兼容版本替换以下内容。

tasks.withType(JavaCompile) {
    options.compilerArgs = [
            '-Amapstruct.suppressGeneratorTimestamp=true'
    ]
}

共有1个答案

施晗昱
2023-03-14

自最新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"))

 类似资料:
  • 我正在从3迁移到Hibernate 5.0.3.final。在3.x中,我使用joda-time在oracle DB中持久化LocalDateTime。现在我看到Hibernate5不支持Joda-Time。请告诉我最好的选择是什么? 下面是代码示例。

  • Overview Express 5.0 is still in the alpha release stage, but here is a preview of the changes that will be in the release and how to migrate your Express 4 app to Express 5. Express 5 is not very dif

  • 问题内容: 我正在将应用程序从Hibernate 3迁移到Hibernate5。我们使用class来获取。因此,使用对象来获取数据库表列信息,例如列大小,类型..etc。似乎在Hibernate 5 类中已弃用(已删除!)。Hibernate 5中是否有其他上课的选择?否则如何进入Hibernate 5 env? 问题答案: 当我们转向一种新的模式工具方法时,它在5.0中已被删除。Database

  • 问题内容: 我很了解Java。哪些警告和资源将帮助我尽可能轻松地跨过另一端(C#)。 问题答案: 最大提示:请使用go一词中的.NET命名约定。这样,您将不断被提示使用的是哪种语言。(听起来很愚蠢,但这确实有帮助。)尽可能多地接受该语言的习惯用法。 有许多专门针对您所处地区的人们的书籍-在亚马逊上搜索“ C#for Java”,您将获得很多成功。值得 仔细 阅读以确保您不认为C#和Java中的功能

  • 迁移包括以下部分: MIP 核心库迁移 将站点引用的 mip.js 和 mip.css 版本由 1.0 修改为 2.0。MIP 核心库 2.0 版本完全兼容 1.0 版本,开发者可放心升级。具体做法如下: mip.js 文件迁移 将站点中的所有如下引用: <script src="https://c.mipcdn.com/static/v1/mip.js"></script> 改为: <scrip

  • 问题内容: 我目前正在使用Dep,并且想开始使用Go模块。 我该如何迁移? 问题答案: 从Dep迁移到Go Modules非常容易。 运行并确保您使用的是Go 1.11版或更高版本。 将代码移到GOPATH或set之外。 :这将从Gopkg.lock导入依赖项。 :这将删除不必要的导入,并添加间接导入。 (可选)删除您的供应商文件夹(或移至回收站) :进行测试构建以查看其是否有效。 :删除用于De