with will the testapi studio replaced removed provided incremental has end dexoptions compiler compileonly compile been and java gradle dependencies

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).