之前我们在使用maven构建java项目的时候,经常会拆分多模块。在maven工程中,我们通过dependencyManagement来管理整个工程的模块的依赖。那么在gradle的工程里,我们要这么做,要怎么处理呢?
首先,我们我们找到gradle 是有个spring management的插件的。
compile group: 'io.spring.dependency-management', name: 'io.spring.dependency-management.gradle.plugin', version: '1.0.9.RELEASE', ext: 'pom'
文档地址:https://docs.spring.io/dependency-management-plugin/docs/current-SNAPSHOT/reference/html/
gradle的父工程可以配置subobjects,其中的配置适用于所有的子模块。在subobjects中,利用dependencyManagement 对所有模块的版本进行管理。
dependencyManagement{
dependencies {
dependency group: 'com.google.guava', name: 'guava', version: '29.0-jre'
}
}
在模块core 里,我们就可以直接添加依赖 而不用写入版本号了。
贴上完整的父工程和子模块的配置。
父工程:
plugins {
id 'java'
id 'org.springframework.boot' version '2.3.1.RELEASE'
id 'io.spring.dependency-management' version '1.0.9.RELEASE'
}
group 'com.example'
version '1.0-SNAPSHOT'
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
repositories {
mavenCentral()
}
bootJar {
enabled = false
}
jar {
enabled = true
}
dependencies {
testCompile group: 'junit', name: 'junit', version: '4.12'
}
subprojects {
apply plugin: "java"
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
configurations {
compileOnly {
extendsFrom annotationProcessor
}
}
dependencyManagement{
dependencies {
dependency group: 'com.google.guava', name: 'guava', version: '29.0-jre'
}
}
}
子模块:
plugins {
id 'java'
}
group 'com.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
jar {
enabled = true
}
dependencies {
annotationProcessor 'org.projectlombok:lombok'
testAnnotationProcessor 'org.projectlombok:lombok'
testImplementation('org.springframework.boot:spring-boot-starter-test') {
exclude group: 'org.junit.vintage', module: 'junit-vintage-engine'
}
testImplementation 'org.springframework.security:spring-security-test'
compile 'org.projectlombok:lombok'
compile group: 'com.google.guava', name: 'guava'
}