在Gradle中,我如何在一个地方声明公共依赖关系?

在Maven中,当你可以在父POM的<dependencyManagement>部分中定义一个依赖项时,会有一个非常有用的特性,并且在没有指定版本或范围或者其他的情况下从子模块引用这个依赖项。

Gradle有哪些select?

你可以在父脚本中声明通用的依赖关系:

 ext.libraries = [ // Groovy map literal spring_core: "org.springframework:spring-core:3.1", junit: "junit:junit:4.10" ] 

从一个子脚本,你可以使用这样的依赖声明:

 dependencies { compile libraries.spring_core testCompile libraries.junit } 

要使用高级configuration选项共享依赖声明,可以使用DependencyHandler.create

 libraries = [ spring_core: dependencies.create("org.springframework:spring-core:3.1") { exclude module: "commons-logging" force = true } ] 

多个依赖关系可以在同一个名字下共享:

 libraries = [ spring: [ // Groovy list literal "org.springframework:spring-core:3.1", "org.springframework:spring-jdbc:3.1" ] ] 

dependencies { compile libraries.spring }会一次添加两个依赖项。

你不能以这种方式分享的信息是什么configuration(Maven术语中的范围 )依赖关系应该被分配。 不过,从我的经验来看,最好还是要明确一点。

这是一个迟到的回复,但你也可以看看: http : //plugins.gradle.org/plugin/io.spring.dependency-management它提供了导入maven“bom”的可能性,并重用了定义在'bom'中定义。 当从Maven逐渐迁移到Gradle时,这当然是一个很好的帮助! 享受它现在。

io.spring.gradle:dependency-management-plugin插件在新的Gradle 3.x系列中有问题,但对于2.x系列是稳定的。 参考查看bug报告删除对Gradle 3#115的支持

在春季( BOM使用的主要推动者)的情况下,您可以结束于:

 buildscript { repositories { mavenLocal() jcenter() } dependencies { classpath 'io.spring.gradle:dependency-management-plugin:1.0.0.RELEASE' } } repositories { mavenLocal() jcenter() } apply plugin: 'java' apply plugin: 'io.spring.dependency-management' dependencyManagement { imports { mavenBom 'io.spring.platform:platform-bom:Athens-SR3' } } dependencies { compile 'org.springframework.boot:spring-boot-starter-web' testCompile 'org.springframework.boot:spring-boot-starter-test' } 

请注意, io.spring.platform:platform-bom具有org.springframework.boot:spring-boot-starter-parent作为父级,因此它与Spring Boot兼容

您可以通过以下方式validation实际的依赖性parsing

 $ gradle dependencies $ gradle dependencies --configuration compile $ gradle dependencies -p $SUBPROJ $ gradle buildEnvironment $ gradle buildEnvironment -p $SUBPROJ 

或与任务:

 task showMeCache { configurations.compile.each { println it } } 

阅读官方Soring博客文章Gradle的更好的依赖关系pipe理,了解引入io.spring.gradle:dependency-management-plugin

你可以使用下面的代码来集中一个依赖项:

gradle.properties

 COMPILE_SDK_VERSION=26 BUILD_TOOLS_VERSION=26.0.1 TARGET_SDK_VERSION=26 MIN_SDK_VERSION=14 ANDROID_SUPPORT_VERSION=26.0.2 

在每个模块中添加build.gradle

 android { compileSdkVersion COMPILE_SDK_VERSION as int buildToolsVersion BUILD_TOOLS_VERSION as String defaultConfig { minSdkVersion MIN_SDK_VERSION as int targetSdkVersion TARGET_SDK_VERSION as int versionCode 1 versionName "1.0" } } dependencies { compile "com.android.support:appcompat-v7:${ANDROID_SUPPORT_VERSION}" compile "com.android.support:support-v4:${ANDROID_SUPPORT_VERSION}" compile "com.android.support:support-annotations:${ANDROID_SUPPORT_VERSION}" compile "com.android.support:support-vector-drawable:${ANDROID_SUPPORT_VERSION}" compile "com.android.support:design:${ANDROID_SUPPORT_VERSION}" }