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

问题描述

我正在将一个小型多模块项目从 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(物料清单)导入。据我了解,这相当于一个 Maven 父母。 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 是什么?

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)