【问题标题】:How can I not include a build task when I include a project in my settings.gradle file?当我在 settings.gradle 文件中包含项目时,如何不包含构建任务?
【发布时间】: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究竟你想达到什么目的?

标签: build task gradle


【解决方案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") }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-07-17
      • 1970-01-01
      • 1970-01-01
      • 2010-11-22
      • 2019-09-30
      • 2013-02-21
      相关资源
      最近更新 更多