gradle - 如何为整个 Gradle 多模块项目只定义一次依赖版本?

标签 gradle dependency-management gradle-plugin

我决定从 Dependency Management Plugin 迁移至Gradle built-in BOM import support .自 Gradle 内置 BOM 导入支持 has better performance

我遇到了这个问题:

我找不到 dependency 的替代品和 dependencySet在原生 Gradle 中:

    dependencyManagement {
        dependencies {
            dependency("org.springframework:spring-core:4.0.3.RELEASE")
        }
    }
//or
    dependencyManagement {
         dependencies {
              dependencySet(group:'org.slf4j', version: '1.7.7') {
                   entry 'slf4j-api'
                   entry 'slf4j-simple'
              }
         }
    }

然后我可以使用没有版本的依赖
dependencies {
    compile 'org.springframework:spring-core'
}

我怎样才能得到幼稚 Gradle 中的相同行为 ?我的意思是:我想定义一个版本 一次正如我在使用 Dependency Management Plugin 时所做的那样

最佳答案

下面的解决方案有助于避免版本复制粘贴。但是它与依赖管理插件不同。

对于 Gradle Kotlin Dsl:

您可以创建buildSrc当您可以放置​​任何常量时,您可以使用自己的代码。

算法:

  • 创建文件夹buildSrc/src/main/kotlin
  • 创建文件buildSrc/src/main/kotlin/Versions.kt内容:
  • object Versions {
        const val junitVersion = "5.5.5" // just example
    }
    
  • 创建文件buildSrc/build.gradle.kts内容:
  • plugins {
        `kotlin-dsl`
    }
    
  • 在 gradle.kts 文件中使用以下语法:
  • dependencies {
        testImplementation("org.junit.jupiter:junit-jupiter:${Versions.junitVersion}")
    }
    

    对于 Gradle Groovy:
  • 创建文件gradle.properties
  • 使用类似 okhttp_version=4.2.0 的语法将版本放在那里
  • 在您的 gradle 文件中使用以下语法:
  • dependencies {
        compile group: 'com.squareup.okhttp3', name: 'okhttp', version: okhttp_version
    }
    

    关于gradle - 如何为整个 Gradle 多模块项目只定义一次依赖版本?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60454712/

    相关文章:

    gradle - Grails 梯度 "a task with that name already exists"

    java - Android,Gradle : java. lang.NullPointerException(无错误信息)

    gradle - 在 gradle 中使用分发插件创建存档时更改 zip 的名称

    iOS CocoaPods - 如何找出特定 pod 的可用版本,而不是 cocoapods 本身?

    java - 最短的方法来看看 Maven 在 Eclipse 中的霸主地位?

    parsing - 向 Clojure 项目添加依赖项

    gradle - 将发布配置移动到 gradle 中的一个位置

    Jenkins - 代理背后的 Gradle 插件

    java - Gradle idea插件排除了其他子项目的传递依赖不排除

    android - Gradle:如何只为 android 生成 apk,而不包括其他平台,如 iOS、HTML 等