scope - warning - dependencies android studio
¿Cómo usar el alcance provisto para el archivo jar en la compilación de Gradle? (5)
Ahora hay un gran complemento de Netflix, gradle-extra-configurations-plugin . Proporciona un alcance provided
y optional
. No se necesitan más plomería manual y también se generan los metadatos requeridos cuando se publique, por ejemplo, en un repositorio de maven.
Necesito usar Amazon Maps y Amazon Messaging en mis aplicaciones.
Con Gradle, no logré agregar las dependencias de Amazon con un alcance "provisto", ya que deben ser :
El archivo JAR contiene implementaciones de stub de la API de Amazon Maps. No contiene implementaciones reales de las clases API de Maps, por lo que no debe compilar el JAR en su aplicación.
Ninguna de las soluciones proporcionadas por Amazon me funcionó .
Si alguien logró usar Amazon Maps o Amazon Messenger con Gradle, por favor comparta su archivo build.gradle aquí.
Hay un complemento prodeps que agrega configuraciones de dependencia adicionales y opcionales para Gradle
...
apply plugin: ''propdeps''
...
buildscript {
repositories {
maven { url ''http://repo.spring.io/plugins-release'' }
}
dependencies {
classpath ''org.springframework.build.gradle:propdeps-plugin:0.0.7''
}
}
...
dependencies {
...
provided(''android:android:2.2_r3'')
...
}
...
La solución que he estado usando es bastante simple. Debe agregar el siguiente código a su archivo build.gradle:
apply plugin: ''eclipse'' // Eclipse users only
configurations {
provided
}
sourceSets {
main.compileClasspath += configurations.provided
test.compileClasspath += configurations.provided
test.runtimeClasspath += configurations.provided
}
eclipse.classpath.plusConfigurations += configurations.provided // Eclipse users only
Si no eres un usuario de Eclipse (no lo soy), realmente no necesitas las primeras y últimas líneas, como habrás adivinado.
Una vez que se incluyen las adiciones de configuración anteriores, puede simplemente agregar una dependencia proporcionada en su sección de dependencias junto con cualquier dependencia de compilación regular:
dependencies {
compile group: ''org.springframework'', name: ''spring-core'', version: ''3.2.6.RELEASE''
provided group: ''javax.servlet'', name: ''servlet-api'', version:''2.5''
provided group: ''javax.servlet.jsp'', name: ''jsp-api'', version:''2.1''
}
Espero que ayude. Ha estado funcionando bastante bien para mí por un tiempo.
Un poco tarde para el show, usando gradle, copia el .jar a la carpeta libs y en tu archivo gradle tienes:
dependencies {
....
provided files(''libs/someLibrary'')
....
}
En la versión 2.12 de Gradle , se agregó compileOnly
para proporcionar una funcionalidad similar al alcance provided
. Hay una diferencia en lo que sucede en el classpath de prueba. Aquí hay citas relevantes y un fragmento de las notas de la versión:
Ahora puede declarar las dependencias que se utilizarán solo en tiempo de compilación junto con el complemento de Java . Las dependencias de compilación solo se utilizan solo durante la compilación de origen y no se incluyen en el classpath de tiempo de ejecución ni se exponen a proyectos dependientes. Este comportamiento es similar al del alcance ''provisto'' disponible en las compilaciones basadas en Maven. Sin embargo, a diferencia de las dependencias proporcionadas por Maven, las dependencias de compilación solo en Gradle no se incluyen en el classpath de prueba.
Las dependencias de compilación solo se deben asignar a la configuración ''compileOnly'' del conjunto de origen relevante.
dependencies { compileOnly ''javax.servlet:servlet-api:2.5'' }