Çok modüllü bir projenin bir ana modülü ve birçok alt modülü vardır. Şu düzene sahiptir:
(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/
alt modüller ayrıca alt klasörlerde daha derine yerleştirilebilir, ancak settings.gradle'daki kodu değiştirmeden, adlarında bu tür klasörlerin adı bulunur.
settings.gradle
Settings.gradle'ın ana rolü, dahil edilen tüm alt modülleri tanımlamak ve bir modül ağacının dizin kökünü işaretlemektir, böylece settings.gradle
çok modüllü bir projede yalnızca bir dosyaya sahip olabilirsiniz .
rootProject.name = 'project-x'
include 'sub-a', 'sub-b'
Ayarlar dosyası da harika yazılır ve alt modül araması özelleştirilebilir.
build.gradle
Modül başına böyle bir dosya vardır, bu modül için yapı mantığını içerir.
Gelen build.gradle
bir dosyaya ana modül , kullanabileceğiniz allprojects {}
veya subprojects {}
diğer tüm modüllerin ayarlarını tanımlamak için.
Alt build.gradle
modüller dosyasında, compile project(':sub-a')
bir alt modülü diğerine bağımlı hale getirmek için kullanabilirsiniz .
gradle.properties
Bu isteğe bağlıdır, ana amacı, gradle'ı çalıştırmak için kullanılacak başlatma seçenekleri sağlamaktır, örn.
org.gradle.jvmargs=-Xmx=... -Dfile.encoding=UTF-8 ...
org.gradle.configureondemand=true
Bu değerler bir dosya tarafından geçersiz kılınabilir USER_HOME/.gradle/gradle.properties
ve gradle komut satırı argümanları ile geçersiz kılınabilir . Ayrıca systemProp.
önek olarak bu dosyada yapı için ortam değişkenlerini ayarlamak da mümkündür .
Bu dosyadaki herhangi bir özellik herhangi bir build.gradle içinde kullanılabilir, bu nedenle bazı projeler bağımlılık sürümünü veya yayın bilgilerini de koyar gradle.properties
, ancak bu muhtemelen bu dosyanın kötüye kullanılmasıdır.
my-gradle-stuff / utils.gradle
(Herhangi bir klasör veya dosya adı mümkündür.) Tanımları yeniden kullanmak için ek özel not dosyaları tanımlayabilir ve bunları diğer not defteri dosyalarına dahil edebilirsiniz.
apply from: "$rootDir/gradle/utils.gradle"
bunu koymak için başka yerler olabilir src/gradle
veyasrc/build/gradle
buildSrc / ...
Bu klasör özeldir, başlı başına ayrı bir gradle projesi gibidir. Başka bir şey yapmadan önce oluşturulmuştur ve diğer herhangi bir gradle dosyasında kullanılmak üzere işlev sağlayabilir. Teknik nedenlerden dolayı, bu klasöre başvurular için IDE desteği, ortak kodu birden çok build.gradle
dosyadan ayrı bir konuma çıkarmanın diğer yollarından çok daha iyi çalışır .
Bir eklenti yazmak ve dağıtmak yerine, karmaşık özel yapım mantığını java, groovy veya kotlin'de tanımlayabilirsiniz. Bu ayrıca, birim testlerine sahip olabileceğiniz için özel yapı kodunuzun birim testi için de kullanışlıdır. İçindeki kaynak klasör yapısı, buildSrc
herhangi bir java / groovy / kotlin projesi gibi uyarlanabilir.