Gradle:在调用root任务时排除触发子项目任务
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Gradle:在调用root任务时排除触发子项目任务相关的知识,希望对你有一定的参考价值。
我有以下项目结构:
Root project 'base'
+--- Project ':server'
+--- Project ':testManager'
每个模块都有自己的artifactoryPublish
任务。
当我在artifactoryPublish
根目录中运行root任务时,如何排除testManager
模块的base
的执行?
> ./gradlew artifactoryPublish
- 这不应该运行testManager:artifactoryPublish
。
但我需要能够为一个testmanager
模块单独运行此任务:
> ./gradlew
testManager:artifactoryPublish` - 这应该在指定的模块中启动任务。
我试着将以下内容添加到settings.gradle
:
startParameter.excludedTaskNames << ':testManager:artifactoryPublish'
但在这种情况下,即使我使用模块名称运行任务,也会始终跳过该任务。
或者也许有办法检查artifactoryPublish
是否仅为testManager
调用,否则设置artifactoryPublish.skip
标志?
提前致谢。
答案
您可以使用-x
开关排除运行任务
$> gradle --dry-run artifactoryPublish
:artifactoryPublish SKIPPED
:server:artifactoryPublish SKIPPED
:testManager:artifactoryPublish SKIPPED
$> gradle --dry-run artifactoryPublish -x :testManager:artifactoryPublish
:artifactoryPublish SKIPPED
:server:artifactoryPublish SKIPPED
另一答案
适合我的情况的解决方案是将以下内容添加到testManager build.gradle:
artifactoryPublish.onlyIf {
ext.has("publishTestFiles")
}
仅当需要启动此模块的任务时,才允许使用其他标志。
以上是关于Gradle:在调用root任务时排除触发子项目任务的主要内容,如果未能解决你的问题,请参考以下文章