Gradle:在调用根任务时,不触发子项目任务

时间:2019-03-01 10:04:15

标签: gradle build.gradle artifactory

我具有以下项目结构:

Root project 'base'
+--- Project ':server'
+--- Project ':testManager'

每个模块都有其自己的artifactoryPublish任务。

artifactoryPublish根目录中运行根任务时,如何排除testManager模块的base的执行?

> ./gradlew artifactoryPublish-运行testManager:artifactoryPublish

但是我需要能够为一个testmanager模块单独运行此任务:

> ./gradlew testManager:artifactoryPublish`-这应该在指定的模块中启动任务。

我尝试将以下内容添加到settings.gradle

startParameter.excludedTaskNames << ':testManager:artifactoryPublish'

但是在这种情况下,即使我使用模块名称运行该任务,也总是会跳过该任务。

或者也许有一种方法可以检查是否仅为artifactoryPublish调用了testManager,否则设置了artifactoryPublish.skip标志?

先谢谢了。

3 个答案:

答案 0 :(得分:1)

您可以使用-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

答案 1 :(得分:0)

适合我的情况的解决方案是将以下内容添加到testManager build.gradle:

artifactoryPublish.onlyIf { 
    ext.has("publishTestFiles") 
}

这仅在需要启动该模块的任务时才允许使用其他标志。

答案 2 :(得分:0)

您只需添加到build.gradle模块的testManager下一个脚本

artifactoryPublish.onlyIf { false }