2014-12-01 1 views
5

Chciałbym mieć w animalSniffer wtyczkę jedno zadanie polegać na kompilacji wszystkich klas produkcyjnych (Java, Groovy, Scala) we wszystkich źródłach, a drugie na zależności kompilacja wszystkich klas testowych we wszystkich źródłach (ewentualnie oddzielne test i integrationTest).Jak polegać na wszystkich * kompilacji i * testCompile zadań w Gradle

Nie chciałbym polegać na *classes zadań *classes zadania powinny zależeć animalSniffer zadań (który wykryje niezgodności wersja Java API po kompilacji i może zatrzymać build).

Czy istnieje lepszy sposób w Gradle, aby to osiągnąć, niż sprawdzenie, czy nazwa zadania AbstractCompile zaczyna się od "compileTest"?

Odpowiedz

2

Można użyć tasks.withType(AbstractCompile), która zwraca wszystkie zadania kompilacji dla wszystkich zestawów źródłowych (w tym Java, Groovy, Scala). Następnie można filtrować na tym, eliminując wszystkie zadania, które mają w nich wartość test, co sugeruje inna odpowiedź.

zadaniu zadanie polegać na tych wszystkich, można wykonać następujące czynności:

myTask.dependsOn tasks.withType(AbstractCompile).matching { 
    !it.name.toLowerCase().contains("test") 
} 
+0

Dziękuję za odpowiedź, ale jak wspomniałem w moim pierwszym zdaniu, muszę rozróżnić ** produktywne ** i ** testowe ** kompilujące testy do wykorzystania w moich dwóch różnych zadaniach. Dlatego moją propozycją było, oprócz zadania typu "AbstractCompile", sprawdzenie również nazwy zadania, ale wolałbym bardziej eleganckie rozwiązanie. –

+0

testy kompilacji -> kompilacja zadań –

+0

Przepraszam, że przegapiłem tę część. Zmieniono moją odpowiedź, aby przefiltrować zadania, aby usunąć wszystkie zadania rozpoczynające się od "testu". Nadzieja, która pomaga. –

1

Jeśli trzeba rozróżniać między produkcją i test kompilacji zestawów zadań/źródło, sprawdzając, czy nazwa zawiera test (przypadek -nie wrażliwy) jest najlepszym dostępnym rozwiązaniem.

+0

Dziękuję Piotrowi za wyjaśnienie. –