Chcę wykonać gradle build
bez wykonywania testów jednostkowych. Próbowałem:
$ gradle -Dskip.tests build
To wydaje się nic nie robić. Czy jest jakieś inne polecenie, którego mógłbym użyć?
-DskipTests
jest dla Maven
Chcę wykonać gradle build
bez wykonywania testów jednostkowych. Próbowałem:
$ gradle -Dskip.tests build
To wydaje się nic nie robić. Czy jest jakieś inne polecenie, którego mógłbym użyć?
-DskipTests
jest dla Maven
Odpowiedzi:
Powinieneś użyć -x
argumentu wiersza poleceń, który wyklucza dowolne zadanie.
Próbować:
gradle build -x test
Aktualizacja:
Link w komentarzu Piotra zmienił się. Oto schemat z podręcznika użytkownika Gradle
-x integTest
Itd -DskipTests
. , Więc nie jest tak wygodny jak koc Mavena .
run
że widzę efekt mojego programu Hello. Ale myślę, że wszystko kompiluje ponownie. Chciałbym tylko uruchomić program Java.
Próbować:
gradle assemble
Aby wyświetlić listę wszystkich dostępnych zadań dla twojego projektu, spróbuj:
gradle tasks
AKTUALIZACJA:
Na początku może to nie wydawać się najbardziej poprawna odpowiedź, ale uważnie przeczytaj gradle tasks
wyniki lub dokumenty.
Build tasks
-----------
assemble - Assembles the outputs of this project.
build - Assembles and tests this project.
gradle assemble
nie skompiluje głównych plików. Jeśli pracujesz nad naprawą testu jednostkowego, potrzebujesz gradle assemble testClasses
- myślę, że nazewnictwo zadania kompilacji jest dość mylące.
Przyjęta odpowiedź jest poprawna.
OTOH, sposobem, w jaki wcześniej to rozwiązałem, było dodanie następujących elementów do wszystkich projektów:
test.onlyIf { ! Boolean.getBoolean('skip.tests') }
Uruchom kompilację za pomocą, -Dskip.tests=true
a wszystkie zadania testowe zostaną pominięte.
Możesz dodać następujące wiersze build.gradle
, **/*
wykluczając wszystkie testy.
test {
exclude '**/*'
}
Możesz wykluczyć zadania
gradle build --exclude-task test
Aby wykluczyć dowolne zadanie ze stopni, użyj -x
opcji wiersza polecenia. Zobacz poniższy przykład
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'
}
Wyjście: gradle -q dist -x runningTest
task compile
compile test
running distribution job
Mam nadzieję, że to da ci podstawy
innym sposobem wyłączenia zadań testowych w projekcie jest:
tasks.withType(Test) {enabled = false}
takie zachowanie jest czasami potrzebne, jeśli chcesz wyłączyć testy w jednym projekcie (lub grupie projektów).
W ten sposób działa na wszelkiego rodzaju zadania testowe, a nie tylko na „testach” java. Również ta droga jest bezpieczna. Oto, co mam na myśli, powiedzmy: masz zestaw projektów w różnych językach: jeśli spróbujemy dodać tego rodzaju zapis w głównym build.gradle
:
subprojects{
.......
tests.enabled=false
.......
}
poniesiemy porażkę w projekcie, jeśli nie będziemy mieli zadania zwanego testami
Korzystanie z -x test
pomijania wykonywania testu, ale wyklucza to również kompilację kodu testowego.
gradle build -x test
W naszym przypadku mamy proces CI / CD, w którym jednym celem jest kompilacja, a kolejnym testowanie (kompilacja -> test).
Tak więc dla naszego pierwszego Build
celu chcieliśmy zapewnić, aby cały projekt był dobrze skompilowany. W tym celu wykorzystaliśmy:
./gradlew build testClasses -x test
Przy kolejnym celu po prostu przeprowadzamy testy.
gradle build -x test --parallel
Jeśli Twoja maszyna ma wiele rdzeni. Jednak nie zaleca się używania czyszczenia równoległego.
Spróbuj tego:
gradlew -DskipTests=true build
We wtyczce 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.
Wersja Gradle bez testu masz dwie opcje:
$ gradle assemble
$ gradle build -x test
ale jeśli chcesz wykonać test kompilacji:
$ gradle assemble testClasses
$ gradle testClasses