0

我有一个基于 Gradle 的项目,其根build.gradle声明依赖于 Spring Boot BOM:

ext {
  springBootVersion = '2.6.3'
}

subprojects {
  dependencies {
    implementation platform("org.springframework.boot:spring-boot-dependencies:$springBootVersion")
  }
}

然后在一个子项目中,我依赖于liquibase-coreliquibase-cdi

ext {
  liquiBaseVersion = '4.4.3'
}

dependencies {
  runtimeOnly "org.liquibase:liquibase-cdi:$liquiBaseVersion"
  runtimeOnly "org.liquibase:liquibase-core"
}

问题是liquibase-core从 Spring Boot BOM 中声明的版本自动获取 root build.gradle,但未liquibase-cdi在该 BOM 中指定,因此我必须显式声明其版本(否则gradle build失败)。

我想以某种方式使用liquibase-coreSpring Boot BOM 中指定的版本,liquibase-cdi这样可以使用 Maven 占位符引用父 pom.xml 中${liquibase.version}指定的属性来完成。<properties/>

有没有办法用 Gradle 做同样的事情?

4

1 回答 1

2

您可以使用

dependencyManagement.importedProperties['spring.version']

例如获取spring.version通过依赖管理插件管理的属性。

有关详细信息,请参阅https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/#accessing-properties

您还可以使用对依赖项管理的编程访问来查找 Liquibase 的托管版本:

def liquibaseVersion = managedVersions['org.liquibase:liquibase-core']

请参阅https://docs.spring.io/dependency-management-plugin/docs/current/reference/html/#working-with-managed-versions-programmatic-access

于 2022-02-08T14:35:27.030 回答