在使用Gradle做工程管理的时候,单一模块时可能不会出现添加的依赖包版本不一致的问题,但是随着后期模块增多就会导致依赖包版本出现不知的问题。所以这时候就需要用全局版本控制。
1.增加父的config.gradle和build.gradle
在根目录下增加config.gradle文件。在config.gradle增加一些节点。比如ext(定义依赖),
allprojects(所有工程配置),subprojects(子工程配置)
config.gradle文件内容
ext {
// 第一种方式,使用compileOnly thirdparty["lombok"]
thirdparty = [
"lombok" : "org.projectlombok:lombok:1.18.18",
]
// 第二种方式,使用compileOnly lombok
cloud_netflix_eureka_server = "org.springframework.cloud:spring-cloud-starter-netflix-eureka-server:2.2.7.RELEASE"
cloud_netflix_eureka_client = "org.springframework.cloud:spring-cloud-starter-netflix-eureka-client:2.2.7.RELEASE"
cloud_netflix_ribbon = "org.springframework.cloud:spring-cloud-starter-netflix-ribbon:2.2.7.RELEASE"
cloud_netflix_hystrix ="org.springframework.cloud:spring-cloud-starter-netflix-hystrix:2.2.7.RELEASE"
cloud_openfeign="org.springframework.cloud:spring-cloud-starter-openfeign:2.2.7.RELEASE"
lombok = "org.projectlombok:lombok:1.18.18"
gson = "com.google.code.gson:gson:2.8.6"
boot_web = "org.springframework.boot:spring-boot-starter-web:2.3.8.RELEASE"
boot_log4j2 = "org.springframework.boot:spring-boot-starter-log4j2:2.3.8.RELEASE"
}
修改build.gradle内容增加
apply from: rootProject.file("config.gradle")
buildscript {
ext {
springIOVersion = '1.0.11.RELEASE'
springBootVersion = '2.4.0'
}
repositories {
mavenLocal()
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
jcenter()
mavenCentral()
}
dependencies {
classpath "org.springframework.boot:spring-boot-gradle-plugin:${springBootVersion}"
}
}
ext {
spring_boot_plugin_bootJar = "org.springframework.boot"
}
allprojects {
apply plugin: "java"
apply plugin: spring_boot_plugin_bootJar
// 设置全部工程的代码库
repositories {
maven { url 'http://maven.aliyun.com/nexus/content/groups/public/' }
maven { url 'http://maven.aliyun.com/nexus/content/repositories/jcenter' }
mavenCentral()
}
// 所有工程都使用lombok打印日志
dependencies {
compileOnly lombok
annotationProcessor lombok
compile boot_log4j2
}
configurations {
compile.exclude module: "spring-boot-starter-logging"
}
}
//子项目设置
subprojects {
}
2.在子工程中使用
只需要在子工程的build.gradle增加 apply from: rootProject.file("config.gradle")
这样就可以使用Gradle控制全局版本依赖了