Kiedy używać gradle.properties a settings.gradle?

90

Kompilacja gradle ma trzy pliki

  • build.gradle który definiuje skrypty konfiguracji kompilacji
  • gradle.properties
  • settings.gradle

pytania

  • Jakie są różnice między settings.gradle& gradle.properties?
  • Kiedy należy ustawień umieścić w settings.gradlewersetach gradle.properties?
ams
źródło

Odpowiedzi:

85

settings.gradle

settings.gradlePlik jest Groovy skrypt, tak samo jak build.gradleplik. settings.gradleW każdej kompilacji zostanie wykonany tylko jeden skrypt (w porównaniu z wieloma build.gradleskryptami w kompilacjach z wieloma projektami). settings.gradleSkrypt zostanie wykonany przed każdym build.gradlescenariuszu, a nawet zanim Projectprzypadki są tworzone. Dlatego jest oceniany w odniesieniu do Settingsobiektu. Za pomocą tego Settingsobiektu można dodawać podprojekty do kompilacji, modyfikować parametry z wiersza poleceń ( StartParameter) i uzyskiwać dostęp do Gradleobiektu w celu zarejestrowania programów obsługi cyklu życia. W związku z tym użyj, settings.gradlejeśli ustawienia są związane z kompilacją i niekoniecznie związane z projektem lub wymagają logiki przed dołączeniem możliwych podprojektów.

gradle.properties

gradle.propertiesPlik jest prosty Java Propertiesplik tylko zyskuje szczególną rolę, jest automatycznie włączone w zakres Projectprzedmiotu (jako tzw „właściwości projektu”). Jest to prosty magazyn klucz-wartość, który zezwala tylko na wartości ciągów (więc musisz samodzielnie podzielić listy lub tablice). Możesz umieścić gradle.propertiespliki w tych lokalizacjach:

  • bezpośrednio w katalogu projektu (dla wartości związanych z projektem)
  • w .gradlekatalogu domowym użytkownika (dla wartości związanych z użytkownikiem lub środowiskiem)
Lukas Körfer
źródło
62

Projekt wielomodułowy składa się z jednego modułu głównego i wielu modułów podrzędnych. Ma następujący układ:

(root)
  +- settings.gradle       
  +- build.gradle          # optional (commonly present)
  +- gradle.properties     # optional
  +-- buildSrc/            # optional
  |     +- build.gradle    
  |     +-- src/...
  +-- my-gradle-stuff/     # optional
  |     +- utils.gradle    # optional
  +-- sub-a/
  |     +- build.gradle
  |     +- src/
  +-- sub-b/
        +- build.gradle
        +- src/

podfoldery mogą być również zlokalizowane głębiej w podfolderach, ale bez modyfikowania kodu w settings.gradle, ich nazwa będzie zawierała nazwę takich folderów.

settings.gradle

Główną rolą settings.gradle jest zdefiniowanie wszystkich zawartych modułów podrzędnych i zaznaczenie katalogu głównego drzewa modułów, dzięki czemu można mieć tylko jeden settings.gradleplik w projekcie wielomodułowym.

rootProject.name = 'project-x'

include 'sub-a', 'sub-b'

Plik ustawień jest również napisany w formie groovy, a wyszukiwanie podmodułów można dostosować.

build.gradle

Na moduł przypada jeden taki plik, który zawiera logikę kompilacji dla tego modułu.

W build.gradlepliku modułu głównego możesz użyć allprojects {}lub subprojects {}zdefiniować ustawienia dla wszystkich innych modułów.

W build.gradlepliku podmodułów można użyć, compile project(':sub-a')aby uzależnić jeden podmoduł od drugiego.

gradle.properties

Jest to opcjonalne, jego głównym celem jest zapewnienie opcji startowych, które można wykorzystać do uruchomienia samego gradle, np

org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true

Te wartości mogą być przesłonięte przez plik USER_HOME/.gradle/gradle.propertiesi zastąpione przez argumenty wiersza poleceń gradle. Możliwe jest również ustawienie zmiennych środowiskowych dla kompilacji w tym pliku, używając systemProp.jako przedrostka.

Każda właściwość w tym pliku może być użyta w dowolnym pliku build.gradle, więc niektóre projekty również umieszczają wersję zależności lub informacje o wydaniu gradle.properties, ale jest to prawdopodobnie nadużycie tego pliku.

my-gradle-stuff / utils.gradle

(Możliwa jest dowolna nazwa folderu lub pliku). Możesz zdefiniować dodatkowe niestandardowe pliki gradle w celu ponownego użycia definicji i dołączyć je do innych plików gradle za pośrednictwem

apply from: "$rootDir/gradle/utils.gradle"

inne miejsca, w których można to umieścić, mogą być src/gradlelubsrc/build/gradle

buildSrc / ...

Ten folder jest wyjątkowy, sam w sobie jest jak osobny projekt gradle. Jest budowany przed zrobieniem czegokolwiek innego i może dostarczyć funkcji do użycia w każdym innym pliku gradle. Z przyczyn technicznych obsługa IDE dla odwołań do tego folderu działa znacznie lepiej niż jakikolwiek inny sposób wyodrębniania wspólnego kodu z wielu build.gradleplików do oddzielnej lokalizacji.

Możesz zdefiniować złożoną, niestandardową logikę kompilacji w Javie, Groovy lub Kotlin, zamiast pisać i wdrażać wtyczkę. Jest to również przydatne do testowania jednostkowego niestandardowego kodu kompilacji, ponieważ możesz mieć testy jednostkowe. Strukturę folderów źródłowych w programie buildSrcmożna dostosować tak, jak w każdym projekcie java / groovy / kotlin.

tkruse
źródło