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.