在 build.gradle 中使用 maven 属性

Dav*_*ave 6 gradle

我有一个build.grade引用 pom/bom 文件的文件。

我使用的是 gradle 4.6,所以我enableFeaturePreview("IMPROVED_POM_SUPPORT")在我的settings.gradle.

bom 文件包含dependencyManagement标签,一切正常。我可以为dependencyManagement标签中提到的库添加 gradle 依赖项,而无需指定版本,gradle 将从 bom 中获取它。

现在,我想使用一个不在 bomdependencyManagement标签中但与那个标签在同一个系列中的库。具体来说,sl4fj-api在bom中定义:

<dependency>
    <groupId>org.slf4j</groupId>
    <artifactId>slf4j-api</artifactId>
    <version>${version.lib.slf4j}</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

我想使用相同版本的 slf4j-ext 库:

compile "org.slf4j:slf4j-ext"
Run Code Online (Sandbox Code Playgroud)

以上是可能的吗?

我怀疑不是,但这似乎应该是可行的:

compile "org.slf4j:slf4j-ext:${version.lib.slf4j}"
Run Code Online (Sandbox Code Playgroud)

但遗憾的是,无法使用 project::getProperty 访问 bom 属性: Could not get unknown property 'version.lib.slf4j'

或者,考虑到slf4j-api依赖项,我可以在评估后获取它的版本号并使用该版本号添加另一个依赖项,还是这是一个订购困境?

有什么建议?

我发现了以下相关问题:

Gradle Maven Bom 属性

但我真的不想在每个子项目中对 bom 进行全面解析。

我还发现了以下“部分答案”:

如何将父 Maven 的属性获取到 Gradle

但在这里似乎依赖信息,包括版本,是从 bom/pom 复制的,而不是被引用。