Soy nuevo en Gradle y estoy leyendo la documentación, pero no entiendo algunas partes. Una de estas partes está conectada con el buildscript
bloque. ¿Cual es su propósito?
Si su script de compilación necesita usar bibliotecas externas, puede agregarlas al classpath del script en el propio script de compilación. Para ello, utilice el método buildscript (), pasando un cierre que declara el classpath del script de compilación.
buildscript { repositories { mavenCentral() } dependencies { classpath group: 'commons-codec', name: 'commons-codec', version: '1.2' } }
Ok, pero cuál es la diferencia con:
repositories {
mavenCentral()
}
dependencies {
compile group: 'commons-codec', name: 'commons-codec', version: '1.2'
}
Por ejemplo, ¿por qué es necesario usar buildscript
?
Respuestas:
El
buildScript
bloque determina qué complementos, clases de tareas y otras clases están disponibles para usar en el resto del script de compilación . Sin unbuildScript
bloque, puede usar todo lo que viene con Gradle listo para usar. Si además desea usar complementos de terceros, clases de tareas u otras clases (en el script de compilación), debe especificar las dependencias correspondientes en elbuildScript
bloque.fuente
sample.infotask', name: 'infotask', version: '1.0'
y use la tarea _uploadArchives para subirla al repositorio local ../lib ' En el otro proyecto, si uso mi tarea, debo escribir: `buildscript {repositorios {maven {archivo url': ../ lib '}} dependencias {grupo classpath:' sample.infotask ', nombre:' infotask ', versión:' 1.0 '}} ¿Estoy en lo cierto? ¿Por qué debemos usar el bloque buildScript ? Cuando subo el artefacto local, tengo el jar en mi máquina. Y solo tengo que decirle a Gradle de dónde y qué poner en mi classpath, nada más, ¿qué tiene de especial aquí?buildScript
bloque porque Gradle necesita esta información para comprender el resto del script de compilación . Es por eso que debe proporcionar esta información en un canal separado (elbuildScript
bloque). Técnicamente hablando, Gradle necesita esta información para compilar y evaluar el resto del script de compilación. Lo que sucede debajo del capó es que Gradle separa el script de compilación en dos scripts (elbuildScript
bloque y todo lo demás) para que pueda procesarlos por separado.dependencies
y lasrepositories
secciones enumeran las dependencias que se requieren para construir su fuente y ejecutar su fuente, etc.buildscript
es para elbuild.gradle
archivo en sí. Entonces, esto contendría dependencias para, por ejemplo, crear RPMDockerfile
, y cualquier otra dependencia para ejecutar las tareas en todos los dependientesbuild.gradle
fuente
buildscript
es simplemente dependencia para su script de compilaciónAgradezco la respuesta de Peter ... pero no fue inmediatamente obvio para mí lo que significaba el resto del script de compilación como se enfatizaba en la respuesta y en la documentación.
Por lo general, la funcionalidad dependiente se utiliza en el programa Java o en cualquier otro programa que esté escribiendo. La introducción de Spring, por ejemplo, no se debe utilizar en el script de compilación, sino en el programa Java. Ponerlo en el
buildscript
cierre asegura que las dependencias estén disponibles para su uso dentro de la construcción de Gradle. No es el programa de salida.fuente
La sección de configuración "buildscript" es para gradle (es decir, cambios en la forma en que gradle puede realizar la compilación). Por lo tanto, esta sección generalmente incluirá el complemento Android Gradle.
fuente
Es un poco alto, pero la esperanza ayuda.
Para mí, la clara distinción comenzó a formarse una vez que comencé a comprender qué es un componente básico , un método y una tarea. Cómo se ve la sintaxis, cómo puede configurarlos, etc. Así que le sugiero que revise todo esto. Después de eso, puede comenzar a entender esta sintaxis.
Entonces es muy importante saber cuál es el tipo de objeto build.gradle (una instancia de la clase Project) para saber qué puede tener dentro de un archivo build.gradle. Eso respondería de dónde provienen ese 'buildScript' y otros. Y para ampliar sus capacidades / características (digamos Android), vea cómo los complementos pueden ayudar.
Por último, pero no menos importante, aquí hay un muy buen tutorial que habla sobre cierres, delegados, que son los conceptos esenciales para entender el guión.
fuente
Un poco más de explicación al demostrar el archivo gradle de nivel superior de Android.
archivo gradle a nivel de módulo
¿Qué es el "complemento"? Son solo clases de Java, que implementan la interfaz del complemento. Bajo la interfaz, tiene un método "aplicar" para agregar múltiples objetos de tarea con diferentes nombres. La tarea es una clase donde podemos implementar el flujo de trabajo. Por ejemplo, la tarea de compilación consiste en el flujo de compilación de la aplicación.
Entonces, ¿qué hace buildscript? Define dónde encontrar los complementos. ¿Qué hace el complemento? Abarca múltiples tareas. ¿Qué hace la tarea? Nos proporciona la construcción, instalación, pelusa, etc.
Mi entendimiento podría estar equivocado. No dudes en corregirme si encuentras algo que sea engañoso.
fuente