提问者:小点点

GradleBOM项目


我正在做一个任务,其中父项目与所有所需的依赖项都在gradle中提到,这个项目用作父项目,基本上是一个BOM,其中包含所有提到的组件,可以在其他项目中用作依赖项

例如,在gradle文件中提到了Spring Boot父级和其他依赖项,我可以在其他项目中引用这个项目。

这些项目不是多模块结构。

Maven等效:

<dependencyManagement>
<dependencies>
  <dependency>
 </dependency>
</dependencies>
</dependencyManagement>

类似标签-pluginManagement、build、profile等

如果你可以参考我的资源或一些开端将是有帮助的。

谢谢。


共1个答案

匿名用户

可以使用以下平台实现跨项目共享公共依赖项版本:

平台是一种特殊的软件组件,可用于控制传递依赖版本。在大多数情况下,它完全由依赖约束组成,这些约束要么建议依赖版本,要么强制执行某些版本。因此,每当您需要在项目之间共享依赖版本时,这是一个完美的工具。

使用Java平台插件,您可以创建一个项目来完成此操作(Gradle没有1:1等效的父级):

// build.gradle
// Let's call this project com.example:my-parent-bom

plugins {
    id 'java-platform'
}

javaPlatform {
    allowDependencies()
}

dependencies {
    // Import other BOMs
    api platform('org.springframework.boot:spring-boot-dependencies:2.4.4')
    api platform('org.springframework.cloud:spring-cloud-dependencies:2020.0.2')

    // Define version for dependencies not managed by the above BOMs
    constraints {
        api 'commons-httpclient:commons-httpclient:3.1'
        runtime 'org.postgresql:postgresql:42.2.5'
    }
}

然后,您可以像任何其他Gradle项目一样发布此平台并使用它:

// some other build.gradle

plugins {
    id 'java'
}

dependencies {
    implementation platform('com.example:my-parent-bom')
}