如何使用Maven属性作为Gradle变量

问题描述 投票:0回答:1

我使用 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 中可用

maven gradle
1个回答
0
投票

设置方法如下: 第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
}
© www.soinside.com 2019 - 2024. All rights reserved.