Gradle学习(六)——多项目构建

原创 2017年12月22日 18:43:09

转载请注明出处http://blog.csdn.net/lastsweetop/article/details/78875987

只有一个的构建文件和资源层级的通常是很小的项目,很少有一个超大而且还是不可分割的项目。把一个项目拆分成几个相互依赖的小项目更容易有助于理解,相互依赖很重要,可以通过一次构建过程把多个项目构建起来。在Gradle中,这叫做多项目构建。

多项目构建的结构

多项目构建的结构可以能有多种多样的层次结构和大小,但是他们有一些共同点:

  • 在项目的root或者master目录下有个settings.gradle文件
  • 在项目的root或者master目录下有个build.gradle文件
  • 子目录有各自的*.gradle文件(有些项目可能直接忽略子项目的构建脚本)

build.gradle告诉Gradle根项目和子项目是如何组织的,你并不需要读这个文件才能了解这些。你仅仅需要执行gradle projects命令,输出如下:

------------------------------------------------------------
Root project
------------------------------------------------------------

Root project 'studygradle'
+--- Project ':subdir' - this is a subproject
\--- Project ':tools'
     +--- Project ':tools:client'
     \--- Project ':tools:server'

To see a list of the tasks of a project, run gradle <project-path>:tasks
For example, try running gradle :subdir:tasks

输出指明了这个多项目有两个子项目subdir和tools,tools子项目又有它自己的子项目client和server,这些可以映射到文件系统的目录结构,很容易找到client在文件夹studygradle/tools/client。

默认情况下,Gradle会以在settings.gradle找到的目录的文件名作为子项目的项目名。同一个项目组的所有开发者check out的都是同样的目录,大多数情况下不会出什么问题。但是在持续集成环境中,比如Jenkins这些目录可能是自动生成的并不会和版本控制服务器的目录一致。这种情况下,你应该设置root工程的名字,即使是单个项目。可以在settings.gradle文章中设置:

rootProject.name='studygradle'

通常每个项目都有它自己的构建文件,但是事实上也并非如此,比如tools子项目仅仅是其他连个子项目的容器,并不需要构建文件,在它对应的目录中并没有构建文件,但是root项目最好有自己的构建文件。

root项目的构建文件通常用于配置一些在子项目中有共性的配置,比如为所以子项目配置共用的插件和依赖。root的构建文件还可以配置单独的子项目,因为有些配置全部集中在一起可能更容易管理。

有时候构建文件名称并不一定是build.gradle,这就需要在settings.gradle中配置:

project(':tools:client').buildFileName='client.gradle'

多项目构建

从用户的视角来看,多项目构建就是一组需要执行的任务集合,不同的一点就是你需要控制去执行哪个项目的任务,这有两个方法:

  • 进入相应的目录,执行gradle <task>命令
  • 在随意一个目录执行限定的任务名,同城都是root目录中,比如 gradle :tools:client:build将会执行子项目tools的子项目client的构建任务。

第一种方法和单一项目非常类似,但是多项目下,机制确是不同的,在相应项目中执行任务,将会执行对应子项目名称相同的任务,比如在root目录中执行gradle test,那么所有的子项目也都会执行test任务,如果在tools目录下执行gradle test,那么tools的子项目也都会执行test任务

为了更好的控制任务的执行范围,建议最好使用第二种方法,限定名称第一个:表示根路径,其他的:表示分隔符,类似于文件的分隔符,这种方法可以让构建非常灵活有效。

无论哪种构建,一个项目被构建,那么它依赖的其他项目也必定被构建,你不需要担心这些,你只需要配置项目的依赖关系即可。

版权声明:本文为博主原创文章,未经博主允许不得转载。

Gradle多项目构建

基于以前自己都是直接用Intellij IDEA构建单个Gradle项目,但是在在实际中往往是一个Gradle项目中包含了几个子gradle项目,由于使用Intellij并没有直接构造一个gradle...
  • huangzhichang13
  • huangzhichang13
  • 2016年12月12日 17:30
  • 1359

idea+gradle+springboot 多项目

idea+gradle+springboot 多项目创建 by:zrs 创建文件结构 1.创建项目文件根目录文件夹: many-product2.在many-product下创建两个文件(注意:...
  • w546097639
  • w546097639
  • 2018年01月10日 17:08
  • 111

Gradle 使用-多项目构建

Gradle 使用-多项目构建 配置 如该项目有四个模块,分别是Controller, Service, Dao,Model,根目录仅为父级目录,不存在任何代码;子目录为各个相应的模块或...
  • u013360850
  • u013360850
  • 2018年02月08日 00:00
  • 108

gradle新建工程,多项目依赖,聚合工程

感谢gradle完全的文档。开始完全没想过新建项目会弄我一天时间,都说gradle构建项目简单,我现在回复他们呵呵。 gradle是个非常复杂的工具,从他的完整包80M和72章官方文档就可以看出一二。...
  • w8452960
  • w8452960
  • 2016年11月30日 23:48
  • 9745

Gradle入门系列(5):创建多项目构建

尽管我们可以仅使用单个组件来创建可工作的应用程序,但有时候更广泛的做法是将应用程序划分为多个更小的模块。 由于这是一个非常普通的案例,因此每个成熟的构建工具都必须支持这项功能,Gradle也不例外。...
  • qiaomu8559968
  • qiaomu8559968
  • 2015年05月20日 15:31
  • 3315

gradle构建多项目

随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借鉴了ant或者...
  • cin_ie
  • cin_ie
  • 2014年09月20日 23:54
  • 1469

Gradle多模块的项目构建

示例程序拥有两个模块:      core模块包含一些通用的组件,它们能够被程序的其他模块使用。例子中,只包含一个类:MessageService类返回‘Hello World!’字符串。该模块有两个...
  • zero__007
  • zero__007
  • 2016年05月07日 12:19
  • 6551

求助:eclipse gradle如何引入多模块项目,引入eclipse后变成了好几个工程!

求助:eclipse gradle如何引入多模块项目,引入eclipse后变成了好几个工程!互相不依赖!...
  • shuangdangshen0998
  • shuangdangshen0998
  • 2017年01月01日 02:14
  • 529

gradle多项目构建

由于最近在研究多项目构建,查阅了一些博客,感觉不如索性自己看看文档,原文在https://guides.gradle.org/creating-multi-project-builds/,另附两个链接...
  • wuyuwuqiu
  • wuyuwuqiu
  • 2017年08月02日 23:13
  • 66

从零开始学习Gradle之三---多项目构建

随着信息化的快速发展,IT项目变得越来越复杂,通常都是由多个子系统共同协作完成。对于这种多系统、多项目的情况,很多构建工具都已经提供了不错的支持,像maven、ant。Gradle除了借鉴了ant或者...
  • yx511500623
  • yx511500623
  • 2014年02月23日 00:38
  • 844
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:Gradle学习(六)——多项目构建
举报原因:
原因补充:

(最多只允许输入30个字)