Gradle
Zagadnienia
-
bardziej elastyczny Maven
-
Groovy zamiast XML-a
-
build-by-convention (struktura
projektu, cykl życia projektu, itp.)
-
zaawansowana obsługa wielu projektów
-
zarządanie zależnościami - może korzystać z repozytoriów
Mavena
-
bezpośrednie użycie Grooviego i tasków Anta
-
wbudowana obsługa projektów w różnych językach, np.: Java, Groovy, Scala, Kotlin, C++
-
świetna i kompletna dokumentacja
-
oficjalny system budowania dla Android Studio
Zadania
-
Sprawdzenie lokalnej dostępności Gradle:
gradle -v
Jeżeli zgłosi się Gradle, przejście do kroku 2. W przeciwnym razie - instalacja Gradle.
-
(opcjonalnie) Instalacja Gradle
-
ściągnięcie i rozpakowanie Gradle (celowo w wersji wcześniejszej)
(https://gradle.org/next-steps/?version=6.0.1&format=bin)
-
stworzenie skryptu uruchamiającego konsolę Gradle,
np. gradle-console.bat, o
zawartości mniej więcej takiej
(pod Windowsem):
SET
GRADLE_HOME=c:\ścieżka\do\rozpakowanej\dystrybucji\gradle
SET PATH=%PATH%;%GRADLE_HOME%\bin
CMD
-
sprawdzenie, czy wszystko się udało - wywołanie z
konsoli:
gradle -v
#
-
Ściągnięcie przykładów przygotowanych na zajęcia (plik
gradle-projects.zip). Wypakowanie i
otwarcie katalogu gradle-projects.
#
-
Obejrzenie / uruchomienie przygotowanych przykładów
-
wyświetlenie dostępnych projektów i tasków:
gradle projects
gradle tasks
-
zbudowanie projektów:
-
standardowe: gradle build
-
więcej informacji: gradle -i build
-
z profilingiem (raport wydajności): gradle build --profile
-
obejrzenie wygenerowanych raportów (testy, profiling)
w:
build/reports
-
budowanie wielu projektów
-
projekt nadrzędny: pliki build.gradle i settings.gradle
-
projekt podrzędny: plik build.gradle
-
projekt podrzędny może nie posiadać pliku build.gradle, jeśli nie wymaga dodatkowych ustawień, np. projekt
gradle-url-encoder
-
automatyczna obsługa zależności od zewnętrznych bibliotek i
innych projektów (podobnie jak Maven / Ivy)
-
nadrzędna deklaracja repozytoriów bibliotek (blok repositories)
-
nadrzędna deklaracja bibliotek dla testów
(junit i junit-addons, w bloku dependencies)
-
projekt gradle-ant-tasks jako jedyny zależy od bibliotek anta
(korzysta z klasy Task)
-
projekt gradle-groovy zależy od projektu gradle-url-encoder
-
konwencjonalna struktura projektu (dokumentacja
Gradle)
-
budowanie projektów mieszanych Java / Groovy:
projekt gradle-groovy
-
pisanie własnych tasków (zadania create i remove):
projekt gradle-groovy
-
zbudowanie wersji dystrybucyjnej, dokumentacji i wykonanie testów
dla wszystkich projektów:
gradle build
javadoc groovydoc
-
obejrzenie jarów oraz raportów junita w katalogach
build
-
obejrzenie dokumentacji w katalogach docs
- [TODO] Użycie gradle wrappera
-
wygeneruj odpowiednim poleceniem pliki wrappera dla wersji Gradle dostępnej na lokalnej maszynie
-
podnieś wersję gradle wrappera do 6.3 i zbuduj ponownie projekt
-
wykorzystaj wrappera do uruchomienia zadania build
-
[TODO] Wygenerowanie (odpowiednim taskiem) dla projektu głównego i wszystkich podprojektów plików Eclipse'a (pliki .classpath i .project oraz pliki ustawień w podkatalogach .settings);
obejrzenie zawartości wygenerowanych plików (w szczególności zwróć uwagę na ścieżki do bibliotek JAR w plikach .classpath);
import głównego projektu do Eclipse'a (File / Import... / Gradle / Existing Gradle Project)
-
podpowiedź: użyj w bloku allprojects wtyczki
'eclipse'
#
- podpowiedź: podczas importu projektu do Eclipse'a użyj w dialogu Import Options w sekcji Gradle distribution opcji Gradle wrapper
- uwaga: podczas importu projektu Eclipse (z wbudowanym pluginem Buildship, wspierającym Gradle'a) dokonuje modyfikacji w plikach .project i .classpath; w szczególności, z tych ostatnich usuwane są sztywne odwołania do poszczególnych JAR-ów
-
[TODO] Napisanie własnego zbiorczego taska (zadania) buildAll:
-
który wykonuje taski: build javadoc
groovydoc
-
dla wszystkich podprojektów (ostatni task tylko dla podprojektu gradle-groovy)
-
podpowiedź: użyj mechanizmu
zależności pomiędzy zadaniami
(nie wywołuj bezpośrednio zadań)
#
- [TODO] Użycie wtyczki 'spotbugs' (https://plugins.gradle.org/plugin/com.github.spotbugs) do analizy potencjalnych problemów w
kodzie
-
niech raport będzie generowany w HTML-u
-
niech proces budowania będzie kontynuowany nawet
jeśli zostaną znalezione jakiekolwiek problemy