当我在 settings.gradle 文件中包含项目时,如何不包含构建任务?
Posted
技术标签:
【中文标题】当我在 settings.gradle 文件中包含项目时,如何不包含构建任务?【英文标题】:How can I not include a build task when I include a project in my settings.gradle file? 【发布时间】:2013-01-24 15:27:05 【问题描述】:我的settings.gradle
文件如下所示:
include "serverTest", "shared"
serverTest build.gradle
文件看起来像:
group = 'gradle'
version = '1.0'
defaultTasks 'build'
apply plugin: 'java'
apply plugin: 'eclipse'
sourceCompatibility = JavaVersion.VERSION_1_6
dependencies
compile project(':shared')
目录结构是: 顶层包含 settings.gradle 文件,其中包含文件夹 shared 和 serverTest 。然后在serverTest目录中有build.gradle文件。
当我在顶层运行 gradle 时,它会输出:
:shared:compileJava UP-TO-DATE
:shared:processResources UP-TO-DATE
:shared:classes UP-TO-DATE
:shared:jar UP-TO-DATE
:serverTest:compileJava UP-TO-DATE
:serverTest:processResources UP-TO-DATE
:serverTest:classes UP-TO-DATE
:serverTest:jar UP-TO-DATE
:serverTest:assemble UP-TO-DATE
:serverTest:compileTestJava
:serverTest:processTestResources UP-TO-DATE
:serverTest:testClasses
:serverTest:test
我不希望它执行任务:serverTest:test
。我尝试将我的 defaultTasks 更改为仅 compileJava 但这不起作用,还有其他人有什么想法吗?
【问题讨论】:
我假设您还为根项目声明了defaultTasks
?据我所知,只考虑默认项目的defaultTasks
(根据调用 Gradle 的目录确定)。
您是一直想跳过serverTest:test
任务,还是偶尔跳过?
@HieryNomus 当我从顶层运行它时总是
@PeterNiederwieser 但即使我确实在根项目上设置了 defaultTasks,它不会仍然执行与现在在 serverTest 项目中相同的任务吗?
好吧,如果您将build
设置为默认值,那肯定包括test
。 究竟你想达到什么目的?
【参考方案1】:
好吧,这个问题已经以不同的方式提出,问题的主题是;
如何排除构建任务的子任务?
1 . gradle build -x test
上述指令在从 CLI 执行 gradle build 命令时很有帮助;这排除了测试任务,但我们想在 build.gradle 文件中以编程方式排除测试任务。请在下方查看相应问题的答案。
2 。 check.dependsOn -= 测试
将这个小脚本复制到您的 build.gradle 文件中。 现在,当您从 CLI 执行 gradle build 时,您的测试根本不会运行。
干杯!
【讨论】:
【参考方案2】:只有存在构建任务时,您才可以尝试禁用该任务...类似于:
project(":serverTest").test.onlyIf !gradle.taskGraph.hasTask(":shared:build")
【讨论】:
以上是关于当我在 settings.gradle 文件中包含项目时,如何不包含构建任务?的主要内容,如果未能解决你的问题,请参考以下文章