本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/07/30/gradle-multi-project/
Gradle可谓java世界最流行的依赖管理和构建工具。
在安装了Java环境的情况再搭配Gradle Init Script工具我们可以很快初始化一个项目。比如
$ gradle init --type java-library :wrapper :init BUILD SUCCESSFUL Total time: 3.551 secs
这样初始化出来的项目包含了基本的配置和src目录,依赖默认有两个
dependencies {
compile 'org.slf4j:slf4j-api:1.7.5'
testCompile 'junit:junit:4.11'
}
对于简单的工程而言这样就足够了,方便快捷。但是如果是一个多项目工程就创建不出来了。
从目前Gradle官方的roadmap来说,init模块是会被废弃的,而且之后还会新增不同的工程类型,所以之后可能会增加对于多项目工程的支持,但是目前没有。
所以目前来说简单的办法如下
- 建立basic项目
- 创建子项目的目录
- 进入子项目目录,创建java-library项目
- 删除所有子项目中的gradle相关文件
- 修改basic项目的settings.gradle,include所有子项目
这样操作虽然很繁琐,但是可以很流畅的工作。
这样创建出来的多项目工程的依赖管理全部依赖于主项目的build.gradle文件,也就是类似这样的写法
project("spring-context") {
description = "Spring Context"
apply plugin: "groovy"
dependencies {
compile(project(":spring-aop"))
compile(project(":spring-beans"))
compile(project(":spring-expression"))
compile(project(":spring-core"))
compile(files(project(":spring-core").cglibRepackJar))
optional(project(":spring-instrument"))
optional("javax.inject:javax.inject:1")
optional("javax.annotation:javax.annotation-api:${annotationApiVersion}")
optional("javax.xml.ws:jaxws-api:${jaxwsVersion}")
optional("javax.ejb:javax.ejb-api:${ejbApiVersion}")
optional("javax.interceptor:javax.interceptor-api:${interceptorApiVersion}")
optional("javax.enterprise.concurrent:javax.enterprise.concurrent-api:1.0")
optional("javax.money:money-api:1.0")
optional("org.eclipse.persistence:javax.persistence:${jpaVersion}")
optional("javax.validation:validation-api:${beanvalVersion}")
optional("org.hibernate:hibernate-validator:${hibval5Version}")
optional("joda-time:joda-time:${jodaVersion}")
optional("org.aspectj:aspectjweaver:${aspectjVersion}")
optional("org.codehaus.groovy:groovy-all:${groovyVersion}")
optional("org.beanshell:bsh:2.0b4")
testCompile("javax.inject:javax.inject-tck:1")
testCompile("javax.el:javax.el-api:${elApiVersion}")
testCompile("org.glassfish:javax.el:3.0.1-b08")
testCompile("org.javamoney:moneta:1.1")
testCompile("org.apache.commons:commons-pool2:2.4.2")
testCompile("org.slf4j:slf4j-api:${slf4jVersion}")
testRuntime("javax.xml.bind:jaxb-api:${jaxbVersion}")
}
}
当然也可以保留依赖管理在子项目的build.gradle文件中。
本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: https://www.huangyunkun.com/2016/07/30/gradle-multi-project/