Kapan menggunakan gradle.properties vs. settings.gradle?

91

Build gradle memiliki tiga file

  • build.gradle yang mendefinisikan skrip konfigurasi build
  • gradle.properties
  • settings.gradle

Pertanyaan

  • Apa perbedaan antara settings.gradle& gradle.properties?
  • Kapan pengaturan harus dilakukan settings.gradlevs. gradle.properties?
ams
sumber

Jawaban:

85

settings.gradle

The settings.gradlefile script Groovy, seperti build.gradleberkas. Hanya satu settings.gradleskrip yang akan dieksekusi di setiap build (dibandingkan dengan beberapa build.gradleskrip dalam build multi-project). Itusettings.gradle Script akan dieksekusi sebelum build.gradlenaskah dan bahkan sebelum Projectkasus diciptakan. Oleh karena itu, itu dievaluasi terhadap suatu Settingsobjek. Dengan Settingsobjek ini, Anda bisa menambahkan subproyek ke build Anda, mengubah parameter dari command line ( StartParameter), dan mengakses Gradleobjek untuk mendaftarkan penangan siklus proses. Akibatnya, gunakan settings.gradlejika setelan Anda terkait dengan build dan belum tentu terkait dengan project atau memerlukan logika sebelum kemungkinan subproyek disertakan.

gradle.properties

The gradle.propertiesfile adalah sederhana Java Propertiesfile yang hanya memperoleh peran khusus oleh yang otomatis disertakan ke dalam lingkup Projectobjek (seperti disebut 'properti proyek'). Ini adalah penyimpanan nilai kunci sederhana yang hanya mengizinkan nilai string (jadi Anda perlu memisahkan daftar atau array sendiri). Anda dapat meletakkan gradle.propertiesfile ke lokasi ini:

  • langsung di direktori proyek (untuk nilai terkait proyek)
  • di .gradledirektori beranda pengguna (untuk nilai-nilai yang terkait dengan pengguna atau lingkungan)
Lukas Körfer
sumber
62

Proyek multi-modul memiliki satu modul utama dan banyak submodul. Ini memiliki tata letak ini:

(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/

submodul juga dapat ditempatkan lebih dalam di subfolder, tetapi tanpa mengubah kode di settings.gradle, namanya akan menyertakan nama folder tersebut.

settings.gradle

Peran utama settings.gradle adalah untuk menentukan semua submodul yang disertakan dan untuk menandai akar direktori dari pohon modul, sehingga Anda hanya dapat memiliki satu settings.gradlefile dalam proyek multi-modul.

rootProject.name = 'project-x'

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

File pengaturan juga ditulis dengan groovy, dan pencarian submodule dapat disesuaikan.

build.gradle

Ada satu file seperti itu per modul, yang berisi logika build untuk modul ini.

Di build.gradlefile modul utama , Anda dapat menggunakan allprojects {}atau subprojects {}untuk menentukan pengaturan untuk semua modul lainnya.

Di build.gradlefile submodul, Anda dapat menggunakancompile project(':sub-a') untuk membuat satu submodul bergantung satu sama lain.

gradle.properties

Ini opsional, tujuan utamanya adalah untuk menyediakan opsi startup yang akan digunakan untuk menjalankan gradle itu sendiri, mis

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

Nilai ini dapat diganti dengan file USER_HOME/.gradle/gradle.properties, dan diganti dengan argumen baris perintah gradle. Juga dimungkinkan untuk menyetel variabel lingkungan untuk build dalam file ini menggunakan systemProp.sebagai awalan.

Properti apa pun dalam file ini dapat digunakan dalam build.gradle apa pun, jadi beberapa project juga memasukkan versi dependensi atau informasi rilis gradle.properties, tetapi kemungkinan itu adalah penyalahgunaan file ini.

my-gradle-stuff / utils.gradle

(Nama folder atau file apa pun dimungkinkan.) Anda dapat menentukan file gradle kustom tambahan untuk menggunakan kembali definisi, dan memasukkannya ke dalam file gradle lain melalui

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

tempat lain untuk meletakkan ini mungkin src/gradleatausrc/build/gradle

buildSrc / ...

Folder ini istimewa, seperti proyek gradle tersendiri. Itu dibuat sebelum melakukan hal lain, dan dapat menyediakan fungsi untuk digunakan dalam file gradle lainnya. Karena alasan teknis, dukungan IDE untuk referensi ke folder ini bekerja jauh lebih baik daripada cara lain untuk mengekstrak kode umum dari beberapa build.gradlefile ke lokasi terpisah.

Anda dapat menentukan logika build kustom yang kompleks di java, groovy, atau kotlin, daripada menulis dan menerapkan plugin. Ini juga berguna untuk pengujian unit kode build kustom Anda, karena Anda dapat melakukan pengujian unit. Struktur folder sumber di buildSrcdapat diadaptasi seperti untuk proyek java / groovy / kotlin.

tkruse
sumber