La clase generada para Component of Dagger 2 no se encuentra en compileTestJava del complemento Java de Gradle
Bueno, estoy migrando mi proyecto de Android para usar la Clean Architecure:
Https://github.com/android10/Android-CleanArchitecture
- LibGDX y ScrollPane con múltiples widgets
- Autocompletar super rápido usando la búsqueda binaria en el archivo clasificado (300000 líneas)
- Mi compilación falla cuando uso Ant para construir y el proyecto de Android con múltiples bibliotecas
- El objeto de interfaz no funciona cuando se llama desde otro fragmento
- Solicitudes HTTP paralelas con Retrofit
Esto significa que parte de mi código está dentro del módulo de dominio (Java puro, sin dependencia con Android). Para este proyecto, estoy usando Dagger 2, que genera la fuente utilizando el procesador de anotación (durante el tiempo de compilación).
Tengo la siguiente configuración de Gradle para mi proyecto:
apply plugin: 'java' sourceCompatibility = 1.7 targetCompatibility = 1.7 configurations { provided } sourceSets { main { compileClasspath += configurations.provided runtimeClasspath += configurations.provided } test { compileClasspath += configurations.provided runtimeClasspath += configurations.provided } } dependencies { def domainDependencies = rootProject.ext.domainDependencies def domainTestDependencies = rootProject.ext.domainTestDependencies provided domainDependencies.daggerCompiler provided domainDependencies.javaxAnnotation compile domainDependencies.dagger compile domainDependencies.rxJava compile domainDependencies.joda testCompile domainTestDependencies.junit testCompile domainTestDependencies.assertJ testCompile domainTestDependencies.mockito testCompile domainTestDependencies.jMockLegacy testCompile domainTestDependencies.commonsCsv }
En mi fuente de prueba, creé la interfaz TestComponent y la Dagger se supone para generar el DaggerTestComponent. Cuando intento construir mi proyecto ya sea a través de línea de comandos o Android Studio, recibo errores de compilación de no se puede encontrar símbolo y luego: La ejecución falló para la tarea ': domain: compileTestJava' .
Traté de cambiar el 'proporcionado' con 'compilar' y 'testCompile'. Todavía no funciona.
Lo que es extraño es que, después del fallo de la compilaciónTestJava, puedo encontrar el DaggerTestComponent.java generado en domain / build / classes / test . Por lo tanto, si se está generando, ¿por qué estoy recibiendo este error de compilación?
Es importante tener en cuenta que este problema sólo ocurre en la fuente de prueba. He generado la fuente de Daga 2 que se utiliza en la fuente principal.
ACTUALIZAR:
Comenté cada lugar que estaba tratando de usar el DaggerTestComponent y trató de construir de nuevo. En el dominio / build / classes / test , ahora puedo encontrar no solo el DaggerTestComponent.java sino también el .class resultante de la compilación. Por lo tanto, está generando el archivo de origen y compilándolo. ¿Por qué no funciona la compilación de archivos que lo utilizan? Parece que algún problema de orden, como la fuente generada no está listo todavía en el momento de la compilación de las otras fuentes.
- Android GPS tarda un tiempo en ser preciso
- Máscara Libgdx con imagen
- Java: escala Mapsforge Map al usar mosaicos de mapa de bits en línea en lugar del renderizador sin conexión
- No se puede resolver el símbolo KeyEvent
- Lista de palabras reservadas en Android
- ¿Grabar audio en Android con MediaPlayer como fuente?
- Android httpclient.execute excepción
- Obteniendo FileNotFoundException / EISDIR
Gracias a @EpicPandaForce, empecé weardering si había un complemento APT para Java puro también. Después de buscar, encontré este:
https://github.com/tbroyer/gradle-apt-plugin
Acabo de aplicar ese complemento y cambié mis dependencias con apt y testApt.
- Después de actualizar a Android Studio 2.3 no se puede resolver el símbolo GoogleAccountCredential
- Android triple buffering – comportamiento esperado?