Kompilacja stopniowa bez testów


Odpowiedzi:


1239

Powinieneś użyć -xargumentu 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


45
To jest poprawna odpowiedź. „Gromadzenie stopni” pominie także wiele innych zadań. Zobacz ten schemat, aby uzyskać pomysł. W przypadku typowych rzeczywistych wersji „stopniowy montaż” pominie jeszcze więcej zadań.
— Peter Niederwieser

13
Link z @PeterNiederwieser nie jest już ważny. Prawdopodobnie odwoływał się do tego diagramu: gradle.org/docs/current/userguide/img/javaPluginTasks.png
— Dave L.

9
Działa, chociaż może być konieczne dodanie np . -x integTestItd -DskipTests. , Więc nie jest tak wygodny jak koc Mavena .
— Jesse Glick,

1
@c_maker, Jak wykonać to z zaćmienia?
— rinuthomaz

Czy można wykonać plik klasy? Mam na myśli to, runże widzę efekt mojego programu Hello. Ale myślę, że wszystko kompiluje ponownie. Chciałbym tylko uruchomić program Java.
— Sigur,

107

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 taskswyniki lub dokumenty.

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

8
Jako dodatkowa wskazówka w przypadku debugowania testów jednostkowych: gradle assemblenie 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.
— Martin

36

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=truea wszystkie zadania testowe zostaną pominięte.


3
Dla mnie jest to nadal jedyna działająca opcja, ponieważ test -x wydaje się działać tylko na początkowym projekcie, ale nie na zależności w kompilacji wielu projektów (testowane w klasie 2.1). Umieść test.onlyif ... w bloku configure (podprojekty.findAll {javaProjects.contains (it.name)}) {} w głównym pliku build.gradle i będzie działał dla wszystkich projektów.
— timm

Dobry. Ten sposób jest znany użytkownikom maven.
— AlexR

23

Możesz dodać następujące wiersze build.gradle, **/*wykluczając wszystkie testy.

test {
    exclude '**/*'
}

2
To najlepsza odpowiedź IMHO
— Marco Sulla

1
Dzięki! twoja odpowiedź była pomocna.
— JAY PATEL


4

Odniesienie

Aby wykluczyć dowolne zadanie ze stopni, użyj -xopcji 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


prześlij zrzut ekranu strony. nie wiem, gdzie umieścić ten wiersz kodu ....
— Hossein Mansouri,

Ten fragment kodu powinien znaleźć się w twoim build.gradle :)
— Suganthan Madhavan Pillai 28.04.17

2

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


2

Korzystanie z -x testpomijania 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 Buildcelu 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.


0
gradle build -x test --parallel

Jeśli Twoja maszyna ma wiele rdzeni. Jednak nie zaleca się używania czyszczenia równoległego.


0

Spróbuj tego:

gradlew -DskipTests=true build


6
@KirankumarDafda - nie. Możesz opublikować odpowiedź w dowolnym momencie, nawet jeśli istniejąca odpowiedź została zaakceptowana. Nowa odpowiedź może być lepsza niż odpowiedź zaakceptowana lub rozwiązać ją w inny sposób lub w inny sposób pomóc innym. Z recenzji .
— Wai Ha Lee,

@WaiHaLee Nie mogę edytować mojego komentarza, ale ponieważ otrzymałem sugestie dla nowych użytkowników, chciałem wyjaśnić, że staram się dodawać odpowiedzi z dodatkowymi wyjaśnieniami, aby inny użytkownik mógł sprawdzić, czy ta odpowiedź lub kod jest dla nich pomocny.
— Kirankumar Dafda

0

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.