Nun, ich bin mein Android-Projekt Migration Clean Architecure zu verwenden:Die generierte Klasse für den Bestandteil von Dagger 2 nicht in compileTestJava von Gradle Java Plugin gefunden
https://github.com/android10/Android-CleanArchitecture
Das bedeutet, dass ein Teil meiner Code ist innerhalb des Domänenmoduls (reines Java, keine Abhängigkeit mit Android). Für dieses Projekt benutze ich Dagger 2, der die Quelle mithilfe des Annotationsprozessors generiert (während der Kompilierungszeit).
Ich habe folgende Gradle Konfiguration für mein Projekt:
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
}
In meiner Testquelle, habe ich die Schnittstelle Testcomponent und der Dolch ist suposed die DaggerTestComponent zu erzeugen. Wenn ich versuche, mein Projekt entweder über die Befehlszeile oder Android Studio zu erstellen, erhalte ich Kompilierungsfehler von kann Symbol nicht finden und dann: Ausführung fehlgeschlagen für Task ': domain: compileTestJava'.
Ich habe versucht, die 'zur Verfügung gestellt' mit 'kompilieren' und 'testCompile' zu ändern. Es funktioniert immer noch nicht.
Was ist seltsam ist, dass nach dem Fehler der CompileTestJava kann ich die generierte DaggerTestComponent.java in Domäne/Build/Klassen/Test finden. Also, wenn es generiert wird, warum erhalte ich diesen Kompilierfehler?
Es ist wichtig zu beachten, dass dieses Problem nur in der Testquelle auftritt. Ich habe eine Quelle von Dolch 2 erzeugt, die in der Hauptquelle verwendet wird.
UPDATE:
kommentierte ich jeden Ort, den die DaggerTestComponent zu verwenden versuchen und versuchte es noch einmal zu bauen. In der domain/build/classes/test, jetzt kann ich nicht nur die DaggerTestComponent.java, sondern auch die .class der Compilation gefunden. Also, es erzeugt die Quelldatei und kompiliert sie. Warum funktioniert die Kompilierung von Dateien nicht? Es scheint ein Ordnungsproblem zu sein, so wie die generierte Quelle zum Zeitpunkt der Kompilierung der anderen Quellen noch nicht fertig ist.
müssen Sie nicht auch das APT-Plugin anwenden? – EpicPandaForce
@EpicPandaForce, ich denke ich nicht. Weil das 'com.neenbedankt.android-apt' für die Verwendung mit einem Android-Projekt gedacht ist. Dieses Modul meines Projekts ist reines Java. Wie auch immer, die aktuelle Version des Android-APT hat einen Fehler bei Komponententests. –