Ser*_*gio 6 dependency-management gradle spring-boot gradle-kotlin-dsl
我有一组相关的 Gradle 项目,并非所有项目都在同一个存储库中(因此不共享相同的gradle.properties文件settings.gradle.kts)。我的目标是让我的主要构建脚本(build.gradle.kts文件)完全清除依赖版本号,同时避免在多次设置或属性文件中指定相同的版本号。
我正在寻找实现此目标的最佳实践,考虑到这些版本号可能同时出现在 Gradle 依赖项或插件声明中,并且通常需要在它们之间保持同步。
作为一个用例,让我们配置需要 spring boot 的项目。在这种情况下,我可以使用 Gradle 平台项目来定义常见的依赖项版本。举个例子,build.gradle.kts我的平台项目看起来有点像这样:
plugins {
`java-platform`
}
javaPlatform {
allowDependencies()
}
dependencies {
api(platform("org.springframework.boot:spring-boot-dependencies:2.3.0.RELEASE"))
constraints {
api("io.mockk:mockk:1.10.0")
api("org.junit.jupiter:junit-jupiter:5.6.2")
api("io.kotest:kotest-runner-junit5-jvm:4.0.6")
...
}
}
Run Code Online (Sandbox Code Playgroud)
因此,我可以方便地在一个平台项目中指定所有 Spring Boot 依赖项 + 我自己的依赖项。
但是其他使用 spring boot 依赖项的项目也需要该org.springframework.boot插件,其版本最好与平台项目中所需的 spring boot 依赖项相同。
正如一开始所说,这些项目位于其他存储库中,因此它们不与平台项目共享相同的配置文件。在这些项目中,我在他们的文件中添加settings.gradle.kts以下块:
pluginManagement {
plugins {
id("org.springframework.boot").version("2.3.0.RELEASE")
...
}
}
Run Code Online (Sandbox Code Playgroud)
它有效,因为在导入平台项目后,我可以按照预期保持主构建文件的版本号干净(Spring Boot 依赖项和 Spring Boot 插件本身都不再需要指定其版本)。
然而,这样的感觉并不好。2.3.0.RELEASE现在,我在我的平台项目和使用 Spring boot 插件的项目设置文件中都硬编码了相同版本的 spring boot ( )。现在我遇到了保持两个位于不同项目中的号码同步的问题。
哪种 Gradle 解决这个问题的“正确”方法是?有没有办法让 Gradle 平台项目也以类似的方式指定插件版本号,可以在那里声明首选依赖项版本?
| 归档时间: |
|
| 查看次数: |
553 次 |
| 最近记录: |