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

25 篇文章 42 订阅 ¥9.90 ¥99.00
26 篇文章 1 订阅
本文介绍了Gradle的多项目构建,强调了其在大型项目中的重要性。多项目构建通常包含一个root构建文件和多个子项目的构建文件,每个子项目可以有独立的配置和依赖。通过指定任务名称,用户可以选择执行特定项目的任务。Gradle会自动处理项目的依赖关系,确保构建顺序正确。
摘要由CSDN通过智能技术生成

转载请注明出处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任务

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

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值