gpt4 book ai didi

gradle - 如何使用 Gradle 从 BOM 访问版本属性?

转载 作者:行者123 更新时间:2023-12-05 05:58:12 24 4
gpt4 key购买 nike

我正在将一个小型多模块项目从 Maven 迁移到 Gradle,以评估并(希望)学习一些东西。

subprojects {
group = "com.company.project-name"

apply plugin: "java"

repositories {
mavenCentral()
}

dependencies {
implementation platform("org.springframework.boot:spring-boot-dependencies:2.5.2")
compileOnly("org.projectlombok:lombok")
annotationProcessor("org.projectlombok:lombok")
}
}

这就是我目前所拥有的。尽管有一个小问题,它已经在工作了。如您所见,我正在导入 org.springframework.boot:spring-boot-dependencies 作为平台依赖项/BOM( Material list )。据我了解,这相当于 Maven parent 。 spring-boot-dependencies 已经定义了我在这个项目中使用的几乎所有内容。但是,我也在使用 Lombok 。幸运的是,Spring 也能解决这个问题。

对于 compileOnly 依赖项 org.projectlombok:lombok,这按预期工作。问题是 annotationProcessor。编译项目导致错误:

[...]
Execution failed for task [...].
> Could not resolve all files for configuration [...].
> Could not find org.projectlombok:lombok:.
Required by:
project [...]
[...]

如果我把它改成这样:

annotationProcessor("org.projectlombok:lombok:1.18.20")

... 它有效。但我希望 Gradle 使用 spring-boot-dependencies 中的 Lombok 版本定义,因为我不想自己再次定义它。对于 Maven,我可以只使用 Maven 属性 lombok.version。所以我也尝试了这样的事情:

annotationProcessor("org.projectlombok:lombok:${lombok.version}")

不幸的是,这会导致另一个错误:

A problem occurred evaluating root project [...].
> Could not get unknown property 'lombok' for object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.

从平台依赖项/BOM 访问定义的版本属性的 Gradle 是什么?

最佳答案

你试过这个吗:

annotationProcessor platform("org.springframework.boot:spring-boot-dependencies:2.5.2")

确保 annotationProcessor 位于依赖项的顶部。

    dependencies {
annotationProcessor platform("org.springframework.boot:spring-boot-dependencies:2.5.2")
annotationProcessor("org.projectlombok:lombok")

implementation platform("org.springframework.boot:spring-boot-dependencies:2.5.2")
compileOnly("org.projectlombok:lombok")
}

关于gradle - 如何使用 Gradle 从 BOM 访问版本属性?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68595775/

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