java - will - Gradle: ¿Cuál es la diferencia entre classpath y las dependencias de compilación?
gradle configuration compile is obsolete and has been replaced with implementation (3)
Cuando agrego dependencias a mi proyecto, nunca estoy seguro de qué prefijo debo darles, por ejemplo,
"classpath"
o
"compile".
Por ejemplo, ¿deberían mis dependencias a continuación ser tiempo de compilación o classpath?
Además, ¿debería estar en mis aplicaciones build.gradle o en el módulo específico build.gradle?
Build.gradle actual (a nivel de aplicación):
apply plugin: ''java''
repositories {
mavenCentral()
}
dependencies {
compile ''org.hibernate:hibernate-core:5.0.5.Final''
compile ''mysql:mysql-connector-java:5.1.38''
}
Si buildscript necesita algo para ejecutarse, use classpath .
Si su proyecto necesita algo para ejecutarse, use compilar .
El bloque
buildscript{}
es para el build.gradle mismo.
Para la construcción de proyectos múltiples, el archivo de compilación de nivel superior es para el proyecto raíz, el archivo de compilación específico es para el subproyecto (módulo).
Archivo de compilación de nivel superior donde puede agregar opciones de configuración comunes a todos los subproyectos / módulos.
No coloque las dependencias de su aplicación en el archivo de compilación de nivel superior, pertenecen a los archivos individuales del módulo build.gradle
Si entiendo correctamente, está confundiendo el bloque de script
Project.dependencies
con el bloque de script
Project.buildscript.dependencies
(tal como lo hice cuando llegué a esta pregunta).
Trataré de responder esto con lo que encontré.
Creo que ya debería estar familiarizado con el bloque de script
Project.dependencies
.
En este bloque, declaramos las dependencias que requiere nuestro código fuente.
Hay varias formas de declarar una dependencia que necesitamos para el proyecto.
Ver
Tutorial de Gradle: Tipos de dependencia
.
Solo mencionaré la parte que es más relevante para este problema:
compile ''org.hibernate:hibernate-core:5.0.5.Final''
es una declaración de dependencia del módulo.
La configuración de compilación (que ahora está en desuso por la configuración de implementación) es simplemente una palabra clave para
Implementation only dependencies.
No es una palabra clave que describe qué tipo de dependencia es (por tipo aquí sigo los tres tipos definidos en el tutorial, es decir, módulo, archivo y proyecto).
En Gradle Tutorial: Organizing Build Logic dice:
Si su script de compilación necesita usar bibliotecas externas, puede agregarlas al classpath del script en el script de compilación mismo. Para ello, utilice el método buildscript (), pasando un cierre que declara el classpath del script de compilación.
Esta es la misma forma en que declara, por ejemplo, la ruta de clase de compilación de Java. Puede usar cualquiera de los tipos de dependencia descritos en Tipos de dependencia, excepto las dependencias del proyecto.
Una vez declarado el classpath del script de compilación, puede usar las clases en su script de compilación como lo haría con cualquier otra clase en el classpath.
Espero que las cosas te estén aclarando ahora.
Con
classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
estamos configurando el método
classpath
con
com.android.tools.build:gradle:${Versions.android_gradle_plugin}
que es una dependencia del módulo que es utilizado por el propio script de compilación en lugar de la fuente en su proyecto.
Por otro lado, con la
compile ''org.hibernate:hibernate-core:5.0.5.Final''
estamos declarando una dependencia de módulo requerida para su proyecto con la
configuration
compilación.
tl; dr: el
classpath
, la
compile
y la
implementation
son palabras clave que se pueden usar contra dependencias en diferentes circunstancias.
El primero se usa cuando desea pasar una dependencia al script de compilación, y el segundo es una de las
configuration
que puede declarar.
Supongo que estás haciendo referencia a
compile
y
classpath
dentro del bloque de
dependencies {}
.
Si es así, esas son
docs.gradle.org/current/userguide/…
dependencia.
Una configuración es simplemente un conjunto de dependencias con nombre.
La configuración de
compile
es creada por el complemento de Java.
La configuración de
classpath
se ve comúnmente en el bloque
buildSrc {}
donde uno necesita declarar dependencias
para el build.gradle, en sí mismo
(para complementos, tal vez).