2015-05-11 16 views
67

In una build gradle multi-progetto, qualcuno può dirmi qual è esattamente la differenza tra la sezione "allprojects" e quella "buildscript"? Entrambi hanno un'attività repositories e dependencies. allprojects è il mio progetto? Che mi dici di buildscript?Qual è la differenza tra buildscript e allprojects in build.gradle?

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

e

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

risposta

73

Il "buildscript" sezione di configurazione è per Gradle stessa (cioè modifiche al modo Gradle è in grado di eseguire il build). Quindi questa sezione di solito include il plugin Gradle per Android.

La sezione "allprojects" è per i moduli creati da Gradle.

Spesso la sezione repository è la stessa per entrambi, dal momento che entrambi otterranno le loro dipendenze da jcenter in genere (o forse da centrale dei maven). Ma la sezione "dipendenze" sarà diversa.

In genere la sezione "dipendenze" per "tutti i progetti" è vuota poiché le dipendenze per ciascun modulo sono univoche e si troveranno nel file "build.gradle" all'interno di ciascun modulo. Tuttavia, se tutti i moduli condividessero le stesse dipendenze, potrebbero essere elencati qui.

2

TL; DR: buildscript aiuta trovare i plugin, allprojects si applica a tutti i progetti


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

plugin

binari che sono stati pubblicati come file jar esterni possono essere aggiunti a un progetto di aggiungendo il plug-in al classpath dello script build e quindi applicando il plug-in.

quindi è necessario buildscript per Gradle per trovare i plugin, as

Gradle al suo interno offre volutamente molto poco per davvero l'automazione mondo. Tutte le funzioni utili, come la possibilità di compilare codice Java, vengono aggiunte dai plugin. I plugin aggiungono nuove attività (ad es. JavaCompile), oggetti di dominio (ad esempio SourceSet), convenzioni (ad esempio, l'origine Java si trova in src/main/java) e l'estensione di oggetti e oggetti core da altri plugin.

Concerning allprojects:

L'API progetto fornisce una proprietà allprojects che restituisce una lista con il progetto in corso e tutti i suoi sottoprogetti sotto di esso. Se si chiama allprojects con una chiusura, le dichiarazioni della chiusura sono delegate ai progetti associati a allprojects.

Problemi correlati