Gradle多模块任务执行顺序使用笔记

需求

各子模块添加一个打包任务patch,输出各子模块打包结果。根模块也添加一个patch任务,要求在所有子模块的patch任务执行完后,再执行根模块的patch任务,以便对合子模块输出的结果做处理。

思路

gradle多模块工程中,父子模块若存在同名task。那么在执行task里,会先执行父模块的task,然后再执行子模块task。如果想先执行子模块task,再执行父模块task,则需要通过dependsOn方法指定依赖。

解决方案:

很明显需要用dependsOn方案来实现。只是有个问题,子模块有可能后续还会继续添加的,不想在添加模块后还要再手修改gradle文件要怎么做呢?此时groovy脚本就用上了,直接上脚本。

subprojects {
	// ...
	task patch {
		// 子模块执行的动作
	}
	// ...
}

task patch {
	// 遍历子模块,组装依赖数组
	def subPatchName = rootProject.subprojects.collect {
		if (null!=it && !it.name.equalsIgnoreCase('***')) {
			':'+it.name+':patch'
		}
	}

	// 排除为空的依赖项
	subPatchName = subPatchName.findAll {
		it != null
	}

	dependsOn subPatchName // 设置依赖

	doLast {
		// 执行完子模块后要执行的动作写这里
	}
}

Gradle个人感觉是ant和maven的结合体。可以方便的做依赖管理,可以很方便地从maven项目迁移,同时可以方便地定制任务,实现个性化的需求。gradle采用groovy DSL脚本作为配置语言,而groovy本身属于JVM系语言,JAVA程序员很容易就能上手写groovy,比起写JAVA来还爽。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值