Gradle 多项目构建
Gradle可以轻松处理各种大小规模的项目。小项目由一个单一的构建文件和一个源代码树构成。 大项目可以将其拆分成更小的,相互依赖的模块,以便更容易理解。
多项目构建的结构特征:
- 在项目的根目录或主目录中都有一个
settings.gradle文件。 - 根目录或主目录都有一个
build.gradle文件。 - 具有自己的
build.gradle构建文件的子目录。
设置:
allprojects 针对所有的子项目和本身起作用,全局设置项。
allprojects {
group = 'MavenRoot'
version = '0.0.1-SNAPSHOT'
}
subprojects针对所有的子项目起作用。
subprojects{
apply plugin: 'java'
apply plugin: 'eclipse'
}
项目依赖:
// MavenView中添加
dependencies {
compile project(':MavenCore')
compile project(':MavenCommon')
}
如果有平级项目之间的依赖MavenView中 settings.gradle:
includeFlat 'MavenCommon'
includeFlat 'MavenCore'
以Maven的多模块项目为例:
在MavenRoot下创建settings.gradle和build.gradle
在settings.gradle 内写子项目:
rootProject.name = 'MavenRoot' include 'MavenCore'
include 'MavenCommon'
include 'MavenView'

验证子项目:
Colsure cl = {task -> println "I'm $task.project.name"}
task hello2 << cl
project(":MavenCore"){
task hello2 << cl
}
project(":MavenView"){
task hello2{
doLast cl
}
}
在 allProjects中使用:
allprojects {
group = 'MavenRoot'
version = '0.0.1-SNAPSHOT'
task hello2{
description="hello2"
doLast {
task -> println "$task.project.name"
}
}
}
subProjects中使用:
此时hello2不能再定义task,因同名task只能有一个,因此一旦上面定义了task后面只能对task进行配置
// sub project settting
subprojects{
apply plugin: 'java'
apply plugin: 'eclipse'
hello2{
doLast{
task -> println "$task.project.name"
}
}
}
或者:
hello2.doLast{
task -> println "$task.project.name"
}
指定单独运行:
project(":MavenView").hello2.doLast{
println "I'm the special one..."
}
以上子集的这几个方法必须建立在allprojects中已经构建此hello2任务。
子集建立build.gradle,如果allprojects中已经对子集声明此方法,则子集中不可再构建。
task hello3{
doLast {
println "i 'm $task.name"
}
}
执行报错:> Could not get unknown property 'task' for task ':MavenCore:hello3' of type org
.gradle.api.DefaultTask.
因 $默认指向的是project的成员变量,因此task无法找到。
需要切换内部指向为task。
task hello3{
doLast {
task -> println "i 'm $task.name"
}
}
----------------------------------------------------------------------------------------------------------------------------------------------------------------------------
以上为多项目之间的关系说明。
Gradle多项目整合:
- 如何在Gradle中使用其他模块在一个模块中;
- 使用Gradle打包多个模块(输出为:jar,war);
- 在Gradle Tomcat插件上运行Web应用程序;
之前建立了HelloGradle的web应用,下面再建立一个CommonGradle和一个RootGradle。
其中RootGradle为容器,整合CommonGradle和HelloGradle,helloGradle引用CommonGradle。
CommonGradle和RootGradle的建立:
右键->new -> other ->gradle -> gradle project ->[projectName] ->options [local installation diractory][Gradle User home]
->OK
在RootGradle的setting.gradle下创建子项目
rootProject.name = 'RootGradle' include 'CommonGradle'
include 'HelloGradle'
project(':CommonGradle').projectDir = new File(settingsDir, '../CommonGradle')
project(':HelloGradle').projectDir = new File(settingsDir, '../HelloGradle')
build.gradle下创建内容:
apply plugin: 'java'
apply plugin: 'eclipse' // In this section you declare where to find the dependencies of your project
repositories {
mavenLocal()
maven{
url 'http://maven.aliyun.com/nexus/content/groups/public/'
}
mavenCentral()
jcenter()
} allprojects{
group "com.hg"
version "1.0.0-SNAPSHOT"
} def artifactId="RootGradle" dependencies {
compile 'com.google.guava:guava:20.0'
testCompile 'junit:junit:4.12'
compile project(":HelloGradle")
compile project(":CommonGradle")
}
HelloGradle的build.gradle中创建:
将CommonGradle中的类用在HelloGradle中
dependencies {
compile project(':CommonGradle')
}
CommonGradle的build.gradle中创建:
apply plugin: 'java'
apply plugin: 'eclipse'
在cmd->RootGradle中
gradle tomcatStart
在文件的build的libs下就有打包成的jar和war文件。
Gradle 多项目构建的更多相关文章
- 【Gradle】Android Gradle 多项目构建
Android Gradle 多项目构建 Android 项目区别 Android项目一般分为库项目,应用项目,测试项目,Android Gradle 根据这些项目分别对应3种插件:com.andro ...
- Gradle多项目构建
1. 创建项目 首先创建项目,名称为 test: mkdir test && cd test gradle init 这时候的项目结构如下: ➜ test tree . ├── bui ...
- 《Gradle权威指南》--Android Gradle多项目构建
No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle li ...
- gradle多项目构建及依赖
上项目结构图: idea里面一个project其实相当于eclipse的一个workspace,这样一来就很好理解了,我们新建了两个module,相当于eclipse的两个项目工程 主要看配置:bui ...
- 【Java】在eclipse中使用gradle进行项目构建 入门篇
##Gradle的安装与配置- Gradle 是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具. 系统环境变量中添加gradle 前往官网下载Com ...
- 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...
- 项目构建工具Gradle的使用入门(参考,只表明地址)
Gradle入门介绍:简介 http://blog.jobbole.com/71999/ Gradle入门介绍:第一个Java项目 http://blog.jobbole.com/72558/ Gra ...
- 【转】第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建
原文网址:http://www.cnblogs.com/smyhvae/p/4456420.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...
- gradle入门(1-4)多项目构建实战
一.多项目构建 1.多项目构建概念 尽管我们可以仅使用单个组件来创建可工作的应用程序,但有时候更广泛的做法是将应用程序划分为多个更小的模块. 因为这是一个非常普遍的需求,因此每个成熟的构建工具都必须支 ...
随机推荐
- streamsets rest api 转换 graphql
原理很简单,就是使用swagger api 生成schema 然后代理请求处理api 调用 参考项目 https://github.com/rongfengliang/streamsets-graph ...
- 基于windows IIS的C语言CGI WEB服务器环境搭建
网页编程对我来说特别亲切,因为我就是从html.ASP.PHP一步步接触编程的.自己的编程爱好也是从那里一点一点被满足.不过离开大学之后很久没有碰过WEB了,最近看到嵌入式中的涉及到的web服务器,了 ...
- [C++] Win32 API 的多线程Timer管理Trick - 利用PostThreadMessage
有时候我们需要在程序里定时地完成一些任务, 比如5秒后发送, 10秒后弹窗之类的操作. 这就需要一个类似于定时器的组件. 这个组件在windows.h里被称为Timer. 设置一个Timer 第一步当 ...
- 从操作系统rm数据文件后,利用句柄与rman恢复的过程。(已验证)
以下操作代码的流程是配的,但是相应的文件名,啥的 必须改动. 故障现象 数据文件被误删除 具体情况 接到反馈说,数据文件data20120512.dbf被误删除,需要恢复 数据库提示 ERROR ...
- 栈的一个实例——Dijkstra的双栈算术表达式求值法
Dijkstra的双栈算术表达式求值法,即是计算算术表达式的值,如表达式(1 + ( (2+3) * (4*5) ) ). 该方法是 使用两个栈分别存储算术表达式的运算符与操作数 忽略左括号 遇到右括 ...
- 回归cnBlogs
一.最近的想法 最近几天看了好多IT和非IT朋友的技术博客和自媒体博客,本想自己搭建一个独立博客,查了好多资料,各种方法,比如:goDaddy购买域名,利用GitHub免费空间搭博客. ...
- CXF运行wsdl2java :找不到系统路径
已经配置好cxf的环境变量出现 解决方法:一定要设置JAVA_HOME这个变量
- linux中set的用法
功能说明:设置shell.语 法:set [+-abCdefhHklmnpPtuvx]补充说明:用set 命令可以设置各种shell选项或者列 出shell变量.单个选项设置常用的特性.在某些选项之后 ...
- iis运行asp.net页面提示“服务器应用程序不可用”的解决办法_.NET.
原因:主要是iis安装在了net framwork之后 解决办法:需要在IIS中重新注册.net 也就是要用到系统盘: cd c:\windows\microsoft.net\framework\v2 ...
- Windows(x64)编译FFMPEG-2.0.1
一.引言 公司需要做网络视频传输的相关项目,初步选定用这么几个东西FFMPEG,ORTP,Live555这么几个东东.研究了也有一个月了,把一些心得写出来,这篇文章主要介绍FFMPEG在windows ...