programa librerias hacer guardar externas exportar empaquetar distribuir crear con compilar como aplicacion java android maven gradle jersey

java - librerias - Esta dependencia me da dos versiones de un jar. ¿Cómo puedo solucionar esto?



exportar programa java (2)

Estoy usando Gradle para mi proyecto. Una de las dependencias que he especificado en mi build.gradle es
compile ''org.glassfish.jersey.media:jersey-media-moxy:2.0''

Esto funciona bien en una aplicación Java normal, sin embargo, cuando intento compilarlo en Android obtengo:

Al ver a qué bibliotecas se hace referencia, está claro que hay tanto javax.inject-2.3.0-b05.jar como javax.inject-1.jar , que encontré agregados por la dependencia anterior. Supongo que este jar ''duplicado'' es el que causa el error de compilación.

¿Cómo voy alrededor de esto? ¿Por qué la dependencia incluye dos del mismo jar? ¿Hay alguna forma de hacer que la versión de Android se construya con estos dos jarrones o quitar uno de estos frascos?


Normalmente, gradle solo incluirá 1 jar por dependencia. Si se encuentran versiones diferentes para las mismas dependencias, se usará la versión más nueva.

Sin embargo, en su caso, estos 2 jar son dependencias con diferentes nombres de grupo:

''javax.inject:javax.inject:1'' ''org.glassfish.hk2.external:javax.inject:2.3.0-b05''

Es por eso que gradle incluyó ambos ya que se tratan como dependencias diferentes.

''javax.inject: javax.inject: 1'' es muy antiguo, creo que deberías excluirlo como lo dijo Niels Bech Nielsen.

Para averiguar de dónde viene esta dependencia, puede usar el comando:

gradle -q dependencyInsight --dependency inject


Parece que tienes un árbol de dependencia similar

project |--- org.glassfish.jersey.media:jersey-media-moxy:2.0 | /--- *:javax.inject:1 /--- *:javax.inject:2.3.0-b05

Donde * es el grupo, que sospecho que puede ser diferente de esos dos.

Intente hacerse una idea de cómo se están aprovechando sus dependencias mediante la tarea de dependencia

gradle dependency

Si necesita excluir una dependencia, ingrésela en la etiqueta, similar al ejemplo siguiente

compile(''org.hibernate:hibernate:3.1'') { //excluding a particular transitive dependency: exclude module: ''cglib'' //by artifact name exclude group: ''org.jmock'' //by group exclude group: ''org.unwanted'', module: ''iAmBuggy'' //by both name and group }