本文版权归作者所有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。
转载自夜明的孤行灯
本文链接地址: 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/