没有测试的Gradle构建


Answers:


1239

您应该使用-x不包含任何任务的命令行参数。

尝试:

gradle build -x test 

更新:

彼得评论中的链接已更改。这里是摇篮用户指南


45
这是正确的答案。“渐变组装”也将遗漏许多其他任务。请参阅此以了解想法。对于典型的现实构建,“渐变组装”将遗漏更多任务。
Peter Niederwieser

13
@PeterNiederwieser的链接不再有效。可能他是在参考以下图表:gradle.org/docs/current/userguide/img/javaPluginTasks.png
Dave L.

9
尽管您可能需要添加eg -x integTest等,但仍然可以运行,但并不像Maven的毯子那样方便-DskipTests
Jesse Glick

1
@c_maker,如何从Eclipse中执行此操作?
rinuthomaz

可以执行类文件吗?我的意思是,随着run我可以看到我的Hello程序的效果。但我认为它正在重新编译所有内容。我只想执行Java程序。
Sigur's

107

尝试:

gradle assemble

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

gradle tasks

更新:

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

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

8
作为其他提示,如果您正在调试单元测试:gradle assemble将不会编译主文件。如果您要解决的问题是固定的,那么就需要gradle assemble testClasses-我认为构建任务的命名很混乱。
马丁

36

可接受的答案是正确的。

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

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

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


3
对我来说,这仍然是唯一可行的选择,因为-x测试似乎仅对初始项目有效,而对多项目构建中的依赖项无效(在gradle 2.1上进行了测试)。将test.onlyif ...放在您的root build.gradle的configure(subprojects.findAll {javaProjects.contains(it.name)}){}块中,它将适用于所有项目。
timm 2014年

好一个 Maven用户熟悉这种方式。
AlexR

23

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

test {
    exclude '**/*'
}

2
这是最好的答案恕我直言
Marco Sulla

1
谢谢!您的回答很有帮助。
JAY PATEL


4

参考

要从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中:)
Suganthan Madhavan Pillai

2

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

tasks.withType(Test) {enabled = false}

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

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

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

如果没有称为测试的任务,我们将在项目中失败


2

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

gradle build -x test 

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

因此,为了我们的第一个Build目标,我们希望确保整个项目都能顺利编译。为此,我们使用了:

./gradlew build testClasses -x test

对于下一个目标,我们只需执行测试。


0
gradle build -x test --parallel

如果您的计算机具有多个内核。但是,不建议使用并行清理。


0

请尝试以下方法:

gradlew -DskipTests=true build


6
@KirankumarDafda-不 即使已接受现有答案,也可以随时发布答案。新答案可能比接受的答案更好,或者以其他方式解决,或者以其他方式帮助他人。从评论
李慧夏

@WaiHaLee我无法编辑我的评论,但是当我收到新用户的建议时,我想解释一下尝试添加更多说明的答案,以便其他用户可以查看此答案或代码对他们是否有帮助。
Kirankumar Dafda,

0

Java插件中

$ 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构建有两种选择:

$ gradle assemble
$ gradle build -x test

但是如果您要编译测试:

$ gradle assemble testClasses
$ gradle testClasses
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.