Si lo entiendo correctamente, está confundiendo el Project.dependencies
bloque de secuencia de comandos con el Project.buildscript.dependencies
bloque de secuencia de comandos (como lo hice cuando llegué a esta pregunta).
Intentaré responder a esto con lo que encontré.
Creo que ya debería estar familiarizado con el Project.dependencies
bloque de script. En este bloque, declaramos las dependencias que requiere nuestro código fuente. Hay varias formas de declarar una dependencia que necesitamos para el proyecto. Consulte 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 de módulo. La configuración de compilación (que ahora está desaprobada 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í estoy siguiendo 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 a la ruta de clases del script en el propio script de compilación. Usted hace esto usando el método buildscript (), pasando un cierre que declara el classpath del script de construcción.
Esta es la misma forma en que declara, por ejemplo, la ruta de clases de compilación de Java. Puede utilizar cualquiera de los tipos de dependencia descritos en Tipos de dependencia, excepto las dependencias del proyecto.
Habiendo declarado el classpath del script de construcción, puede usar las clases en su script de construcción como lo haría con cualquier otra clase en el classpath.
Espero que las cosas se le aclaren ahora.
Con classpath "com.android.tools.build:gradle:${Versions.android_gradle_plugin}"
estamos configurando el classpath
método con el com.android.tools.build:gradle:${Versions.android_gradle_plugin}
cual es una dependencia de módulo que es utilizada por el propio script de compilación en lugar de la fuente en su proyecto.
Por otro lado, compile 'org.hibernate:hibernate-core:5.0.5.Final'
estamos declarando una dependencia de módulo requerida para su proyecto con la configuración de compilación .
tl; dr: El classpath
, compile
y implementation
son todas las palabras clave que se pueden utilizar en contra de las 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 configuraciones que puede querer declarar.
classpath
no es un ámbito de dependencia válido.