Gradle

Zagadnienia

Gradle (http://www.gradle.org/)

  1. bardziej elastyczny Maven
  2. Groovy zamiast XML-a
  3. build-by-convention (struktura projektu, cykl życia projektu, itp.)
  4. zaawansowana obsługa wielu projektów
  5. zarządanie zależnościami - może korzystać z repozytoriów Mavena
  6. bezpośrednie użycie Grooviego i tasków Anta
  7. wbudowana obsługa projektów w różnych językach, np.: Java, Groovy, Scala, Kotlin, C++
  8. świetna i kompletna dokumentacja
  9. oficjalny system budowania dla Android Studio

Zadania

  1. Sprawdzenie lokalnej dostępności Gradle:

    gradle -v

    Jeżeli zgłosi się Gradle, przejście do kroku 2. W przeciwnym razie - instalacja Gradle.
  1. (opcjonalnie) Instalacja Gradle
  1. ściągnięcie i rozpakowanie Gradle (celowo w wersji wcześniejszej)
    (
    https://gradle.org/next-steps/?version=6.0.1&format=bin)
  2. 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
  3. sprawdzenie, czy wszystko się udało - wywołanie z konsoli:
    gradle -v
    #
  1. Ściągnięcie przykładów przygotowanych na zajęcia (plik gradle-projects.zip). Wypakowanie i otwarcie katalogu gradle-projects.
    #
  2. Obejrzenie / uruchomienie przygotowanych przykładów
  1. wyświetlenie dostępnych projektów i tasków:
    gradle projects
    gradle tasks
  2. zbudowanie projektów:
  1. standardowe: gradle build
  2. więcej informacji: gradle -i build
  3. z profilingiem (raport wydajności): gradle build --profile
  1. obejrzenie wygenerowanych raportów (testy, profiling) w:
    build/reports
  2. budowanie wielu projektów
  1. projekt nadrzędny: pliki build.gradle i settings.gradle
  2. projekt podrzędny: plik build.gradle
  3. projekt podrzędny może nie posiadać pliku build.gradle, jeśli nie wymaga dodatkowych ustawień, np. projekt gradle-url-encoder
  1. automatyczna obsługa zależności od zewnętrznych bibliotek i innych projektów (podobnie jak Maven / Ivy)
  1. nadrzędna deklaracja repozytoriów bibliotek (blok repositories)
  2. nadrzędna deklaracja bibliotek dla testów
    (
    junit i junit-addons, w bloku dependencies)
  3. projekt gradle-ant-tasks jako jedyny zależy od bibliotek anta (korzysta z klasy Task)
  4. projekt gradle-groovy zależy od projektu gradle-url-encoder
  1. konwencjonalna struktura projektu (dokumentacja Gradle)
  2. budowanie projektów mieszanych Java / Groovy:
    projekt
    gradle-groovy
  3. pisanie własnych tasków (zadania create i remove):
    projekt
    gradle-groovy
  4. zbudowanie wersji dystrybucyjnej, dokumentacji i wykonanie testów dla wszystkich projektów:
    gradle build javadoc groovydoc
  1. [TODO] Użycie gradle wrappera
  1. wygeneruj odpowiednim poleceniem pliki wrappera dla wersji Gradle dostępnej na lokalnej maszynie
  2. podnieś wersję gradle wrappera do 6.3 i zbuduj ponownie projekt
  3. wykorzystaj wrappera do uruchomienia zadania build
  1. [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)
  1. podpowiedź: użyj w bloku allprojects wtyczki 'eclipse'
    #
  2. podpowiedź: podczas importu projektu do Eclipse'a użyj w dialogu Import Options w sekcji Gradle distribution opcji Gradle wrapper
  3. 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
  1. [TODO] Napisanie własnego zbiorczego taska (zadania) buildAll:
  1. który wykonuje taski: build javadoc groovydoc
  2. dla wszystkich podprojektów (ostatni task tylko dla podprojektu gradle-groovy)
  3. podpowiedź: użyj mechanizmu zależności pomiędzy zadaniami
    (nie wywołuj bezpośrednio zadań)
    #
  1. [TODO] Użycie wtyczki 'spotbugs' (https://plugins.gradle.org/plugin/com.github.spotbugs) do analizy potencjalnych problemów w kodzie
  1. niech raport będzie generowany w HTML-u
  2. niech proces budowania będzie kontynuowany nawet
    jeśli zostaną znalezione jakiekolwiek problemy