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 多项目构建的更多相关文章

  1. 【Gradle】Android Gradle 多项目构建

    Android Gradle 多项目构建 Android 项目区别 Android项目一般分为库项目,应用项目,测试项目,Android Gradle 根据这些项目分别对应3种插件:com.andro ...

  2. Gradle多项目构建

    1. 创建项目 首先创建项目,名称为 test: mkdir test && cd test gradle init 这时候的项目结构如下: ➜ test tree . ├── bui ...

  3. 《Gradle权威指南》--Android Gradle多项目构建

    No1: Android多项目设置 目录结构: MyProject/ setting.gradle app/ build.gradle libraries/ lib1/ build.gradle li ...

  4. gradle多项目构建及依赖

    上项目结构图: idea里面一个project其实相当于eclipse的一个workspace,这样一来就很好理解了,我们新建了两个module,相当于eclipse的两个项目工程 主要看配置:bui ...

  5. 【Java】在eclipse中使用gradle进行项目构建 入门篇

    ##Gradle的安装与配置- Gradle 是以 Groovy 语言为基础,面向Java应用为主,基于DSL(领域特定语言)语法的自动化构建工具. 系统环境变量中添加gradle 前往官网下载Com ...

  6. 第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

    ​[声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.com/smyhvae/ 文章来源:http://www.cnblogs.com/smyhvae/p/ ...

  7. 项目构建工具Gradle的使用入门(参考,只表明地址)

    Gradle入门介绍:简介 http://blog.jobbole.com/71999/ Gradle入门介绍:第一个Java项目 http://blog.jobbole.com/72558/ Gra ...

  8. 【转】第一次使用Android Studio时你应该知道的一切配置(三):gradle项目构建

    原文网址:http://www.cnblogs.com/smyhvae/p/4456420.html [声明] 欢迎转载,但请保留文章原始出处→_→ 生命壹号:http://www.cnblogs.c ...

  9. gradle入门(1-4)多项目构建实战

    一.多项目构建 1.多项目构建概念 尽管我们可以仅使用单个组件来创建可工作的应用程序,但有时候更广泛的做法是将应用程序划分为多个更小的模块. 因为这是一个非常普遍的需求,因此每个成熟的构建工具都必须支 ...

随机推荐

  1. ThinkPHP 5 中的 composer.json

    本篇并不是揭 ThinkPHP 5 的问题. 只是通过 composer.json 来学习 compoer.json 元旦那天, ThinkPHP 5.1 正式发布,值得庆祝. 之后的第二天有人反馈 ...

  2. centos 安装 mysql(指定安装版本)

    第一步: 下载 mysql 包 第二步:   rpm -Uvh mysql文件名.rpm ,这里是 rpm 其实不是安装mysql ,而是安装了一个mysql 的 yum 源 仓库 /etc/yum. ...

  3. virtualbox安装增强功能并设置共享文件夹

    virtualbox安装增强功能并设置共享文件夹 我们在安装之前,必须得先安装好它所需要的依赖包,不然安装过程必定会出现错误! 一.安装依赖包 #yum install kernel-headers# ...

  4. kvm 基本运维命令

    Kvm基本命令 一.查询命令 1.列出所有的虚拟机 virsh list –all 2.显示虚拟机信息 virsh dominfo kvm-1 3.显示虚拟机内存和cpu的使用情况 yum insta ...

  5. 【android】android 常用adb 和 adb shell 命令

    db是SDK自带的工具,可实现桥接功能:adb shell 可以与手机系统建立交互,是基于andoid Linux系统下的操作 ADB常用命令: 1. 查看设备         adb  device ...

  6. Bezier画线算法

    编译器:VS2013 描述:Bezier画线是利用导数相同拼接曲线,使曲线十分光滑,而不是随意拼接观赏性很差 主函数段 #include "stdafx.h" #include&l ...

  7. 发送邮件(单独文字)的方法(网易邮箱 OR QQ邮箱)

    # coding:utf-8import smtplibfrom email.mime.text import MIMEText # 发邮件相关的参数# 网易邮箱用这个# smtpserver=&qu ...

  8. 术语-服务:IaaS

    ylbtech-术语-服务:IaaS IaaS(Infrastructure as a Service),即基础设施即服务.消费者通过Internet 可以从完善的计算机基础设施获得服务.这类服务称为 ...

  9. SQL 字段查找

    select [name] from sysobjects where [id] in (select [id] from syscolumns where [name]='a1') SQL 2005 ...

  10. SQL的三种连接方式内连接、左连接、外连接

    1.内连接 select * from table_a x inner join table_b y on x.a_id = y.b_id 返回两个表关键字x.a_id = y.b_id的交集数据集 ...