I want to execute gradle build
without executing the unit tests. I tried:
$ gradle -Dskip.tests build
That doesn't seem to do anything. Is there some other command I could use?
-DskipTests
is for Maven
You should use the -x
command line argument which excludes any task.
Try:
gradle build -x test
Update:
The link in Peter's comment changed. Here is the diagram from the Gradle user's guide
Try:
gradle assemble
To list all available tasks for your project, try:
gradle tasks
UPDATE:
This may not seem the most correct answer at first, but read carefully gradle tasks
output or docs.
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
gradle assemble
will not compile the main files. If you work in getting your unit test fixed then you need gradle assemble testClasses
— I think that the build task naming is quite confusing.
You can add the following lines to build.gradle
, **/*
excludes all the tests.
test {
exclude '**/*'
}
if(....)
block ei. (in production only)
The accepted answer is the correct one.
OTOH, the way I previously solved this was to add the following to all projects:
test.onlyIf { ! Boolean.getBoolean('skip.tests') }
Run the build with -Dskip.tests=true
and all test tasks will be skipped.
Every action in gradle is a task
, and so is test
. And to exclude a task
from gradle run, you can use the option --exclude-task
or it's shorthand -x
followed by the task name which needs to be excluded. Example:
gradle build -x test
The -x
option should be repeated for all the tasks that needs to be excluded.
If you have different tasks for different type of tests in your build.gradle
file, then you need to skip all those tasks that executes test. Say you have a task test
which executes unit-tests and a task testFunctional
which executes functional-tests. In this case, you can exclude all tests like below:
gradle build -x test -x testFunctional
Using -x test
skip test execution but this also exclude test code compilation.
gradle build -x test
In our case, we have a CI/CD process where one goal is compilation and next goal is testing (Build -> Test).
So, for our first Build
goal we wanted to ensure that the whole project compiles well. For this we have used:
./gradlew build testClasses -x test
On the next goal we simply execute tests:
./gradlew test
./gradlew build testClasses -x test
just build testClasses? or does it build regular classes too? Do you need to run both ./gradlew build testClasses -x test
and ./gradlew build -x test
build
builds regular ones while testClasses
build test ones. You can check the different tasks here docs.gradle.org/current/userguide/java_plugin.html
You can exclude tasks
gradle build --exclude-task test
To exclude any task from gradle use -x
command-line option. See the below example
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'
}
Output of: gradle -q dist -x runningTest
task compile
compile test
running distribution job
Hope this would give you the basic
the different way to disable test tasks in the project is:
tasks.withType(Test) {enabled = false}
this behavior needed sometimes if you want to disable tests in one of a project(or the group of projects).
This way working for the all kind of test task, not just a java 'tests'. Also, this way is safe. Here's what I mean let's say: you have a set of projects in different languages: if we try to add this kind of record in main build.gradle
:
subprojects{
.......
tests.enabled=false
.......
}
we will fail in a project when if we have no task called tests
In 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 you have two options:
$ gradle assemble
$ gradle build -x test
but if you want compile test:
$ gradle assemble testClasses
$ gradle testClasses
Please try this:
gradlew -DskipTests=true build
Success story sharing
-x integTest
and so on, so not as convenient as Maven’s blanket-DskipTests
.module1
) tests using next syntax:gradle build -x :module1:test