Gradle多模块的项目构建
2016-05-07 12:19
204 查看
示例程序拥有两个模块:
core模块包含一些通用的组件,它们能够被程序的其他模块使用。例子中,只包含一个类:MessageService类返回‘Hello World!’字符串。该模块有两个依赖:Junit 4.11与commons-lang3。
app模块包含HelloWorld类,是程序的开端,它从MessageService对象中获取信息,并将接收到的信息写入一个日志文件中。该模块拥有两个依赖:它需要core模块,还使用Log4j作为日志。
下面,我们将创建一个多项目的Gradle构建,包括两个子项目:app 和 core。首先肯定是创建项目multiproject根目录。
1.在根目录下建立模块的目录并配置build.gradle文件
首先需要创建两个模块对应的目录:app、core。分别在对应的目录创建build.gradle文件并配置:
2.对包含在多项目构建中的项目进行配置
可以通过以下步骤,对包含在多项目构建中的项目进行配置:在根项目的根目录下创建settings.gradle文件,它指明了那些包含在多项目构建中的项目。
settings.gradle配置如下:
3.配置core模块的build.gradle
4.配置app模块的build.gradle
首先先说下,如果多项目构建拥有项目A和B,同时,项目B的编译需要项目A,可以通过在项目B的build.gradle文件中添加以下依赖声明来进行依赖配置。dependencies { compile project(:A)}
故app项目的build.gradle文件如下:
5.移除重复配置
当对多项目构建中的子项目进行配置时,在core和app项目的构建脚本中添加了重复的配置。都使用Java插件、都使用Maven2中央仓库等。
可以将这项配置转移到根项目的build.gradle文件中,在此之前,必须先学习一下如何在根项目的build.gradle文件中配置子项目。
如果想要在一个称为core的子项目中添加配置,那么就必须在根项目的build.gradle文件中添加以下片段:
如果想要在根项目的子项目中添加通用的配置,需要将以下片段添加到根项目的build.gradle文件中:
如果配置项是被多项目构建中的所有项目所共享的,那么也可以在根项目的build.gradle文件中添加以下片段:
参考:http://blog.jobbole.com/84471/
core模块包含一些通用的组件,它们能够被程序的其他模块使用。例子中,只包含一个类:MessageService类返回‘Hello World!’字符串。该模块有两个依赖:Junit 4.11与commons-lang3。
app模块包含HelloWorld类,是程序的开端,它从MessageService对象中获取信息,并将接收到的信息写入一个日志文件中。该模块拥有两个依赖:它需要core模块,还使用Log4j作为日志。
下面,我们将创建一个多项目的Gradle构建,包括两个子项目:app 和 core。首先肯定是创建项目multiproject根目录。
1.在根目录下建立模块的目录并配置build.gradle文件
首先需要创建两个模块对应的目录:app、core。分别在对应的目录创建build.gradle文件并配置:
apply plugin: 'java' repositories { mavenCentral() } task "mkdirs" << { sourceSets*.java.srcDirs*.each { it.mkdirs() } sourceSets*.resources.srcDirs*.each { it.mkdirs() } }分别运行gradle mkdirs任务会自动创建好src目录。
2.对包含在多项目构建中的项目进行配置
可以通过以下步骤,对包含在多项目构建中的项目进行配置:在根项目的根目录下创建settings.gradle文件,它指明了那些包含在多项目构建中的项目。
settings.gradle配置如下:
rootProject.name = 'multiproject' include 'app','core'
3.配置core模块的build.gradle
apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'org.apache.commons:commons-lang3:3.4' testCompile group: 'junit', name: 'junit', version: '4.11' } task "mkdirs" << { sourceSets*.java.srcDirs*.each { it.mkdirs() } sourceSets*.resources.srcDirs*.each { it.mkdirs() } }
4.配置app模块的build.gradle
首先先说下,如果多项目构建拥有项目A和B,同时,项目B的编译需要项目A,可以通过在项目B的build.gradle文件中添加以下依赖声明来进行依赖配置。dependencies { compile project(:A)}
故app项目的build.gradle文件如下:
apply plugin: 'java' repositories { mavenCentral() } dependencies { compile 'log4j:log4j:1.2.17' compile project(':core') testCompile group: 'junit', name: 'junit', version: '4.11' } jar { from { configurations.compile.collect { it.isDirectory() ? it : zipTree(it) } } manifest { attributes 'Main-Class': 'org.zero.HelloWorld' } }直接运行任务gradle build,在app目录下build/libs/会生成app.jar的可执行的jar文件,java –jar app.jar即可运行app程序。
5.移除重复配置
当对多项目构建中的子项目进行配置时,在core和app项目的构建脚本中添加了重复的配置。都使用Java插件、都使用Maven2中央仓库等。
可以将这项配置转移到根项目的build.gradle文件中,在此之前,必须先学习一下如何在根项目的build.gradle文件中配置子项目。
如果想要在一个称为core的子项目中添加配置,那么就必须在根项目的build.gradle文件中添加以下片段:
project(:core) { //Add core specific configuration here }换句话说,如果想要将重复的配置转移到根项目的构建脚本中,就必须将以下配置添加到build.gradle文件中:
project(:app) { apply plugin: java; repositories { mavenCentral() } } project(:core) { apply plugin: java; repositories { mavenCentral() } }不过这种做法在实质上并没有改变什么,在构建脚本中依然还存在重复配置,唯一的区别是重复配置现在转移到了根项目的build.gradle文件中。
如果想要在根项目的子项目中添加通用的配置,需要将以下片段添加到根项目的build.gradle文件中:
subprojects { //Add common configuration here }于是在根项目的build.gradle文件可以这样修改:
subprojects { apply plugin: 'java' repositories { mavenCentral() } dependencies { testCompile group: 'junit', name: 'junit', version: '4.11' } task "mkdirs" << { sourceSets*.java.srcDirs*.each { it.mkdirs() } sourceSets*.resources.srcDirs*.each { it.mkdirs() } } }此时app、core会拥有同subprojects内容一样的配置。
如果配置项是被多项目构建中的所有项目所共享的,那么也可以在根项目的build.gradle文件中添加以下片段:
allprojects { //Add configuration here }
参考:http://blog.jobbole.com/84471/
相关文章推荐
- 杭电1330
- 抽象类
- redhat5配置本地yum
- 图像、图形、图片文件格式
- 第十周学习进度
- react-native-vector-icons的简单使用,图片,按钮,标签视图,导航条
- Ehcache 整合Spring 使用页面、对象缓存
- 20160326作业
- Aidl
- mysql编译安装
- 位运算——数0的个数
- [leetcode] 324. Wiggle Sort II 解题报告
- 218. The Skyline Problem
- A project with that name already exists in the workspace
- Ubuntu 安装php_intl 扩展
- ffmpeg-20160506-git-bin
- 【HUSTOJ】1091: 回形方阵
- jsp获取JavaScript生成的中文cookie出现乱码问题解决方法
- 设计模式--单例应用 java
- <MZ&DC联考>D2 T2