我使用 Maven 的 BOM 来控制共享同一平台的多个 Gradle 项目的依赖项版本。除了控制插件版本之外,一切都运行良好。某些 Gradle 插件(例如 Spring Boot 插件)需要与其他 Spring Boot 依赖项版本匹配的版本。我想知道是否有办法使用 Maven 的 POM 属性作为 Gradle 变量。下面的代码显然不起作用。
BOM(我的-bom-1.0.0.pom):
<project>
....
<properties>
<spring-boot.version>3.3.3</spring-boot.version>
...
</properties>
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-dependencies</artifactId>
<version>${spring-boot.version}</version>
<type>pom</type>
<scope>import</scope>
</dependency>
...
Gradle 的 build.gradle
plugins {
id 'java'
id ("org.springframework.boot") version "${spring-boot.version}"
}
dependencyManagement {
imports {
mavenBom "my-bom:1.0.0"
}
}
在这种形式下,build.gradle中的
${spring-boot.version}
无法解析,因为它是在POM中定义的。我想知道是否有办法让它在 Gradle 中可用
设置方法如下: 第1步:导入BOM 在 build.gradle 中,导入已有的 BOM: 绝妙
dependencyManagement {
imports {
mavenBom "my-bom:1.0.0"
}
}
第2步:定义自定义任务来读取BOM 您可以创建自定义任务来读取 BOM 并提取版本: 绝妙
def springBootVersion
task readBom {
doLast {
def pomFile = new File("${projectDir}/path/to/my-bom-1.0.0.pom")
def pom = new XmlSlurper().parse(pomFile)
springBootVersion = pom.properties.'spring-boot.version'.text()
}
}
readBom.dependsOn 'assemble' // Ensure this runs before the build
第3步:使用解压版本 现在您可以在插件块中使用 springBootVersion 变量: 绝妙
plugins {
id 'java'
id "org.springframework.boot" version springBootVersion
}