Gradle:Spring Boot 依赖管理插件中的访问版本声明

Sas*_*ota 6 gradle build.gradle spring-boot maven-bom

我有 spring boot 项目,我尝试使用spring boot 依赖管理插件来使用提供的依赖版本。

该插件“模拟”mavens BOM 行为,这意味着它以某种方式从 maven 父项目中检索 libs 版本(我不确定这是如何实现的,但通常版本取自pom.xml)。它确实具有jackson.version用于为com.fasterxml.jackson.dataformat组内的工件设置版本的属性。

我的项目使用来自同一组的工件,但它不包含在 BOM ( jackson-dataformat-yaml) 中,但我想使用相同的 jackson 版本。

我尝试添加这样的编译依赖项:

compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml:${jackson.version}"
Run Code Online (Sandbox Code Playgroud)

但构建失败:

无法为 org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler 类型的对象获取未知属性“jackson”。

问:有没有办法访问该属性?或者我还能如何重用 lib 版本?

更新 我不知道为什么我不从一开始就尝试这个,但它有效:

compile "com.fasterxml.jackson.dataformat:jackson-dataformat-yaml"
Run Code Online (Sandbox Code Playgroud)

但是我不知道为什么会这样(工件没有在任何地方声明)。

Opa*_*pal 0

发生这种情况是因为当.(eg ${a.b}) 在 groovy 中的字符串插值中使用时,它会将 before 视为.具有 follow 属性的对象.。所以${a.b}对象a应该有属性b,否则就会失败。在您的示例中jackson是一个实例String,它没有版本属性。要解决这个问题,您可以使用 例如jacksonVersionMap. 请参阅此处的演示。