una - tutorial java biblioteca




Use una biblioteca en las clases generadas del procesador (3)

Estoy desarrollando una biblioteca para generar clases usando anotaciones y procesadores. Las clases generadas deberían usar la biblioteca Gson de google.

Mi pregunta es: ¿Dónde debería agregar la dependencia de Gson? Actualmente lo estoy agregando al build.gradle del procesador, pero cuando se generan las clases, Gson no se encuentra y Android Studio sugiere agregarlo al módulo de la aplicación.

build.gradle del procesador :

implementation project(':lib-annotation')
implementation 'com.squareup:javapoet:1.9.0'
implementation 'com.google.code.gson:gson:2.8.1'
implementation 'com.google.auto.service:auto-service:1.0-rc3'

build.gradle de la aplicación :

implementation project(':lib-annotation')
annotationProcessor project(':lib-processor')

¡Cualquier ayuda sería muy apreciada, gracias!

PD: El proyecto está destinado a ser una biblioteca. Espero que los usuarios solo incluyan mi biblioteca en su archivo gradle, no la "sub dependencia".


El simple hecho de usar la implementación evita que uses la dependencia transitiva .

El proyecto principal no puede usar ni invocar las dependencias que agregó a su biblioteca.

Como se le recuerda a los documentos, la configuración de implementación se debe usar para declarar dependencias que son internas al componente.

Por lo tanto, debe usar api O compile lugar de implementation o agregar una condición a su biblioteca transitiva, por ejemplo:

implementation ('com.google.code.gson:gson:2.8.1'){
    transitive = true;
}


De acuerdo, finalmente solucioné el problema.

Tuve que agregar la dependencia de Gson en el procesador build.gradle usando implementation o compile :

implementation 'com.google.code.gson:gson:2.8.1'

Y agregue la dependencia nuevamente en la anotación build.gradle utilizando compile :

compile 'com.google.code.gson:gson:2.8.1'

Creo que no funcionaba porque la dependencia de Gson estaba en el procesador build.gradle que se incluye usando annotationProcessor 'lib-processor' (De alguna manera la "transitividad" no se aplicaba). Por lo tanto, puse la dependencia Gson en la anotación build.gradle ya que la incluí usando la implementation 'lib-annotation' y funcionó.

Espero que ayude





gson