Build.gradle'daki buildscript ile allprojects arasındaki fark nedir?


135

Çok projeli bir gradle yapısında, birisi bana "allprojects" bölümü ile "buildscript" bölümü arasındaki farkın tam olarak ne olduğunu söyleyebilir mi? Her ikisinin de bir repositoriesve dependenciesgörevi var. Projem allprojectsiçin mi? Peki ya buildscript?

buildscript {  
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

ve

allprojects(subprojects) { 
     repositories {
         ...
     }
     dependencies {
         ...
     }
}

Yanıtlar:


137

buildscriptYapılandırma bölümü " " derecelendirmenin kendisi içindir (yani, derecelendirmenin derlemeyi gerçekleştirme şeklindeki değişiklikler). Dolayısıyla bu bölüm genellikle Android Gradle eklentisini içerecektir.

" allprojects" Bölümü Gradle tarafından inşa edilen modüller içindir.

Çoğu zaman depo bölümü her ikisi için de aynıdır, çünkü her ikisi de bağımlılıklarını genellikle jcenter'dan alır (veya belki de merkezi olabilir). Ancak "bağımlılıklar" bölümü farklı olacaktır.

Genellikle "tüm projeler" için "bağımlılıklar" bölümü boştur çünkü her modülün bağımlılıkları benzersizdir ve modüllerin her birinde "build.gradle" dosyasında yer alır. Ancak, tüm modüller aynı bağımlılıkları paylaşıyorsa, burada listelenebilir.


Gradle versiyonunu belirtmek zorunda mıyız?
IgorGanapolsky

user: 6998684 gradle sürümü tüm proje için geçerlidir ve biraz gizli bir dosyada bildirilir. "./Gradle/wrapper/gradle-wrapper.properties" bölümüne bakın
AndroidGuy

22

TL; DR: buildscripteklentileri bulmaya yardımcı olur, allprojectstüm projeler için geçerlidir


https://docs.gradle.org/current/userguide/userguide_single.html#applyPluginBuildscript diyor

Harici jar dosyaları olarak yayınlanan ikili eklentiler, eklenti derleme komut dosyası sınıf yoluna eklenerek ve ardından eklenti uygulanarak bir projeye eklenebilir.

İhtiyacınız Yani buildscript, eklentileri bulmak için gradle için olduğu gibi

Temelindeki Gradle, kasıtlı olarak gerçek dünya otomasyonu için çok az şey sağlar. Java kodunu derleme yeteneği gibi tüm kullanışlı özellikler eklentiler tarafından eklenir. Eklentiler, yeni görevler (örn. JavaCompile), etki alanı nesneleri (örn. SourceSet), kurallar (örn. Java kaynağı src / main / java'da bulunur) ve diğer eklentilerden çekirdek nesneleri ve nesneleri genişletir.

İlgiliallprojects :

Proje API'si allprojects, geçerli projenin ve altındaki tüm alt projelerinin bulunduğu bir listeyi döndüren bir özellik sağlar . Kapanışla ararsanız allprojects, kapanış ifadeleri ilişkili projelere devredilir allprojects.


Android ekosisteminde yeni başlayan biri olarak bana göre bu hiçbir şey ifade etmiyor. Bağımlılıklarımızı nereye koymamız gerekiyor? Bu "buildscript" i silebilir miyiz?
Martin Berger

@MartinBerger: Bağımlılıklarınızı modülün içine koyun, yukarıdaki bir dizine build.gradledeğil, build.gradlebu sorunun ilgilendiği
serv-inc
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.