gpt4 book ai didi

spring-boot - 无法在带有注解处理器配置的Gradle 5中使用Maven BOM

转载 作者:行者123 更新时间:2023-12-03 02:43:46 24 4
gpt4 key购买 nike

我正在尝试将Maven BOM与gradle 5.1.1一起使用,如下所述

ext {
set('spring-boot-dependencies.version', '2.1.2.RELEASE')
}

apply plugin: 'java'

group 'com.acme'
version '1.0.0-SNAPSHOT'

sourceCompatibility = 1.8

repositories {
mavenCentral()
jcenter()
}

dependencies {
// maven bom
implementation platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")

compileOnly('org.projectlombok:lombok')
annotationProcessor('org.projectlombok:lombok')
}

当我运行 ./gradlew dependencies --configuration=annotationProcessor./gradlew dependencies --configuration=compileOnly时,我分别得到以下内容
annotationProcessor - Annotation processors and their dependencies for source set 'main'.
\--- org.projectlombok:lombok FAILED
compileOnly - Compile only dependencies for source set 'main'.
+--- org.projectlombok:lombok FAILED

奇怪的是,IntelliJ可以正确解析 compileOnly依赖关系,但不能解析 annotationProcessor
我对所发生的事情感到很困惑。任何帮助表示赞赏

intellij gradle view

最佳答案

在Gradle中,平台(如常规依赖项)的作用域是给定的配置(以及扩展该配置的配置)。

在您的示例中,BOM仅在implementation中使用,因此只会为该配置及其扩展配置提供建议,例如compileClasspathruntimeClasspath

为了解决您的问题,您需要将BOM表声明为要从其推荐版本中受益的所有配置。

您可以通过重复声明来实现:

compileOnly platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")
annotationProcessor platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")

或者您可以创建一个专用配置,并使所有需要约束的配置扩展它:
configurations {
springBom
compileOnly.extendsFrom(springBom)
annotationProcessor.extendsFrom(springBom)
implementation.extendsFrom(springBom)
}

dependencies {
springBom platform("org.springframework.boot:spring-boot-dependencies:${project.'spring-boot-dependencies.version'}")
}

关于spring-boot - 无法在带有注解处理器配置的Gradle 5中使用Maven BOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54524555/

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