Gradle:在调用root任务时排除触发子项目任务

问题描述 投票:0回答:2

我有以下项目结构:

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

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

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

> ./gradlew artifactoryPublish - 这不应该运行testManager:artifactoryPublish

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

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

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

startParameter.excludedTaskNames << ':testManager:artifactoryPublish'

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

或者也许有办法检查artifactoryPublish是否仅为testManager调用,否则设置artifactoryPublish.skip标志?

提前致谢。

gradle build.gradle artifactory
2个回答
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

0
投票

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

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

仅当需要启动此模块的任务时,才允许使用其他标志。

© www.soinside.com 2019 - 2024. All rights reserved.