我具有以下项目结构:
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
标志?
先谢谢了。
答案 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 }