【问题标题】:Gradle build without tests无需测试的 Gradle 构建
【发布时间】:2011-06-03 15:04:03
【问题描述】:

我想在不执行单元测试的情况下执行gradle build。我试过了:

$ gradle -Dskip.tests build

这似乎没有任何作用。我可以使用其他命令吗?

【问题讨论】:

  • 也许这对你有帮助Gradle Buil without tests
  • -DskipTests 用于 Maven
  • 我知道它有时会有所帮助,但 Gradle 很容易启用测试并发。也许节省 1-2 秒并不是最好的事情,因此确保我们花更少的时间运行它们可以让我们始终运行测试,而无需支付成本或支付很少的费用。

标签: java gradle


【解决方案1】:

试试:

gradle assemble

要列出您项目的所有可用任务,请尝试:

gradle tasks

更新:

这似乎不是最正确的答案,但请仔细阅读gradle tasks 输出或文档。

Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.

【讨论】:

  • 在调试单元测试时的附加提示:gradle assemble 不会编译主文件。如果您致力于修复单元测试,那么您需要 gradle assemble testClasses — 我认为构建任务命名相当混乱。
【解决方案2】:

接受的答案是正确的。

OTOH,我之前解决这个问题的方法是在所有项目中添加以下内容:

test.onlyIf { ! Boolean.getBoolean('skip.tests') }

使用-Dskip.tests=true 运行构建,所有测试任务都将被跳过。

【讨论】:

  • 对我来说,这仍然是唯一可行的选项,因为 -x 测试似乎只适用于起始项目,但不适用于多项目构建中的依赖项(在 gradle 2.1 上测试)。将 test.onlyif ... 放在根 build.gradle 的 configure(subprojects.findAll {javaProjects.contains(it.name)}) {} 块中,它将适用于所有项目。
【解决方案3】:

您应该使用排除任何任务的-x 命令行参数。

试试:

gradle build -x test 

更新:

彼得评论中的链接已更改。这是Gradle user's guide中的diagram

【讨论】:

  • 这是正确答案。 'gradle assemble' 也会遗漏许多其他任务。请参阅此diagram 了解一下。对于典型的现实构建,“gradle assemble”将省略更多任务。
  • 来自@PeterNiederwieser 的链接不再有效。可能他指的是这张图:gradle.org/docs/current/userguide/img/javaPluginTasks.png
  • 工作,但您可能需要添加例如-x integTest 等等,所以不如 Maven 的毯子 -DskipTests 方便。
  • @c_maker,如何从 Eclipse 中执行此操作?
  • 顺便说一句,你可以排除不是全部,而是使用下一个语法排除某些模块(即module1)的测试:gradle build -x :module1:test
【解决方案4】:

Reference

要从 gradle 中排除任何任务,请使用 -x 命令行选项。请看下面的例子

task compile << {
    println 'task compile'
}

task compileTest(dependsOn: compile) << {
    println 'compile test'
}

task runningTest(dependsOn: compileTest) << {
    println 'running test'
}
task dist(dependsOn:[runningTest, compileTest, compile]) << {
    println 'running distribution job'
}

输出:gradle -q dist -x runningTest

task compile
compile test
running distribution job

希望这能给你基本的

【讨论】:

  • 请发送页面的屏幕截图。我不知道把这行代码放在哪里......
  • 这段代码应该进入你的 build.gradle :)
【解决方案5】:

在项目中禁用测试任务的不同方法是:

tasks.withType(Test) {enabled = false}

如果您想在一个项目(或一组项目)中禁用测试,有时需要此行为。

这种方式适用于所有类型的测试任务,而不仅仅是 java 的“测试”。而且,这种方式是安全的。这就是我的意思 假设:您有一组不同语言的项目: 如果我们尝试在 main build.gradle 中添加这种记录:

 subprojects{
 .......
 tests.enabled=false
 .......
}

如果我们没有名为测试

的任务,我们将在项目中失败

【讨论】:

    【解决方案6】:

    您可以在build.gradle 中添加以下行,**/* 排除所有测试。

    test {
        exclude '**/*'
    }
    

    【讨论】:

    • 这很好,因为我可以在 IntelliJ 中轻松完成此操作,而不是命令行。
    • 很遗憾,这样做,将无法在 IDEA 中执行任何测试。
    • @NikolaMihajlović 您可以将排除项包装在 if(....) 块 ei 中。 (仅在生产中)
    【解决方案7】:

    【讨论】:

      【解决方案8】:

      请试试这个:

      gradlew -DskipTests=true build

      【讨论】:

      • @KirankumarDafda - 没有。您可以随时发布答案,即使现有答案已被接受。新的答案可能比接受的答案更好,或者以不同的方式解决它,或者以其他方式帮助他人。 From Review.
      • @WaiHaLee 我无法编辑我的评论,但是当我收到对新用户的建议时,我想解释一下,尝试添加更多说明的答案,以便其他用户可以检查为什么这个答案或代码对他们有帮助。
      【解决方案9】:

      使用-x test 跳过测试执行,但这也排除了测试代码编译。

      gradle build -x test 
      

      在我们的例子中,我们有一个 CI/CD 流程,其中一个目标是编译,下一个目标是测试(构建 -> 测试)。

      因此,对于我们的第一个Build 目标,我们希望确保整个项目编译良好。为此,我们使用了:

      ./gradlew build testClasses -x test
      

      在下一个目标上,我们只需执行测试。

      【讨论】:

        【解决方案10】:

        The Java Plugin:

        $ gradle tasks
        
        Build tasks
        -----------
        assemble - Assembles the outputs of this project.
        build - Assembles and tests this project.
        testClasses - Assembles test classes.
        
        Verification tasks
        ------------------
        test - Runs the unit tests.
        

        Gradle build without test 你有两种选择:

        $ gradle assemble
        $ gradle build -x test
        

        但是如果你想编译测试:

        $ gradle assemble testClasses
        $ gradle testClasses
        

        【讨论】:

          【解决方案11】:

          gradle 中的每个操作都是一个tasktest 也是如此。并且要从 gradle 运行中排除 task,您可以使用选项 --exclude-task 或其简写 -x 后跟需要排除的任务名称。示例:

          gradle build -x test
          

          应该为所有需要排除的任务重复-x 选项。

          如果您在 build.gradle 文件中针对不同类型的测试有不同的任务,那么您需要跳过所有执行测试的任务。假设你有一个任务test 执行单元测试和一个任务testFunctional 执行功能测试。在这种情况下,您可以排除所有测试,如下所示:

          gradle build -x test -x testFunctional
          

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 2023-03-10
            • 1970-01-01
            • 2016-04-16
            • 1970-01-01
            • 2018-12-25
            • 2018-10-03
            • 2013-08-22
            • 2019-12-16
            相关资源
            最近更新 更多