实际项目中,我们可能在发布的时候,需要调用到很多个项目的gradle脚本,用于分别执行每个项目的一些打包工作,这个时候就涉及到gradle多脚本的相互调用了,本次和大家一起探讨
- 多个gradle脚本相互调用task的方法
- 多个gradle脚本中共享Property
多个gradle脚本相互调用的方法
通过apply from
利用apply from
,在build.gradle
中引入其他Gradle脚本
build.gradle
:
1 | apply from: 'other.gradle' |
other.gradle
:
1 | task show << { |
通过GradleBuild Type
build.gradle
:
1 | task showAll(type: GradleBuild) { |
other.gradle
:
1 | task show << { |
在多个gradle脚本中共享Property
关于Property的分类,可以先看看Gradle Property使用详解
共享System Property
默认都能共享
共享Gradle Property
在build.gradle
中通过GradleBuild
方法调用其他脚本的时候,指定GradleBuild 的StartParameter 参数为本project传入的Properties,那么外部脚本即可共享本project的Gradle Property
build.gradle
:
1 | task showAll(type: GradleBuild) { |
other.gradle
:
1 | task show << { |
1 | // 执行命令 |
共享自定义的Property
利用apply from
,在build.gradle
中引入其他Gradle脚本,然后通过自定义的Property即可跨脚本传递变量或者方法,详细做法可以参考这里
ps:本来想着翻译转换一下思路,但是改着改着,到最后发现作者写得太好了,怎么改都都表达不出原文的原汁原味,于是就直接贴原文链接出来了
选择与总结
共享System Property方式
:一般用于指定一些环境变量共享Gradle Property方式
:如果其他脚本中所有的task已经写好了逻辑了,就差一个开关之类的控制一些简单的逻辑,那么不妨采用这种方法共享自定义的Property方式
:可以很方便地和主脚本(build.gradle
)进行交互,但是如果主脚本和其他外部脚本同时引入同一个plugin
,那么在执行task(比如都使用了java插件,两个脚本中分别有一个任务都是依赖于jar
)的时候,就可能会出现问题