tools - ¿Cuál es la diferencia entre buildscript y todos los proyectos en build.gradle?
update gradle mac (2)
En una compilación de gradle multiproyecto, ¿alguien puede decirme cuál es exactamente la diferencia entre la sección "todos los proyectos" y la "buildscript"?
Ambos tienen una tarea de
repositories
y
dependencies
.
¿
allprojects
los proyectos para mi proyecto?
¿Qué pasa con
buildscript
?
buildscript {
repositories {
...
}
dependencies {
...
}
}
y
allprojects(subprojects) {
repositories {
...
}
dependencies {
...
}
}
La sección de configuración "
buildscript
" es para gradle (es decir, cambios en cómo gradle puede realizar la compilación).
Por lo tanto, esta sección generalmente incluirá el complemento Android Gradle.
La sección "todos los
allprojects
" es para los módulos construidos por Gradle.
A menudo, la sección del repositorio es la misma para ambos, ya que ambos obtendrán sus dependencias de jcenter generalmente (o tal vez maven central). Pero la sección "dependencias" será diferente.
Por lo general, la sección "dependencias" para "todos los proyectos" está vacía ya que las dependencias para cada módulo son únicas y estarán en el archivo "build.gradle" dentro de cada uno de los módulos. Sin embargo, si todos los módulos compartieran las mismas dependencias, podrían enumerarse aquí.
TL; DR:
buildscript
ayuda a encontrar complementos, todos los proyectos se aplican a todos los proyectos
https://docs.gradle.org/current/userguide/userguide_single.html#applyPluginBuildscript dice
Los complementos binarios que se han publicado como archivos jar externos se pueden agregar a un proyecto agregando el complemento a la ruta de clase del script de compilación y luego aplicando el complemento.
Entonces necesita
buildscript
para que gradle encuentre los complementos,
as
Gradle en su núcleo intencionalmente proporciona muy poco para la automatización del mundo real. Todas las funciones útiles, como la capacidad de compilar código Java, se agregan mediante complementos. Los complementos agregan nuevas tareas (p. Ej., JavaCompile), objetos de dominio (p. Ej., SourceSet), convenciones (p. Ej., La fuente de Java se encuentra en src / main / java), así como también extienden objetos centrales y objetos de otros complementos.
Con respecto a todos los
allprojects
:
La API del proyecto proporciona una propiedad de
allprojects
losallprojects
que devuelve una lista con el proyecto actual y todos sus subproyectos debajo de él. Si llama a todos losallprojects
con un cierre, las declaraciones del cierre se delegan a los proyectos asociados conallprojects
los proyectos.