Cóż, jestem migracji mojego Android projekt korzystania z Clean architecure:Wygenerowany klasa dla Komponentu Dagger 2 nie znajduje się w compileTestJava Java Plugin Gradle za
https://github.com/android10/Android-CleanArchitecture
Oznacza to, że część mojego kod znajduje się w module domeny (czysta Java, brak zależności z systemem Android). Do tego projektu używam Dagger 2, który generuje źródło za pomocą procesora adnotacji (podczas kompilacji).
mam Konfiguracja Poniższe Gradle dla mojego projektu:
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
}
W moim źródła testu stworzyłem TestComponent interfejsu i Dagger jest suposed wygenerowania DaggerTestComponent. Kiedy próbuję zbudować mój projekt za pomocą wiersza poleceń lub Android Studio, otrzymuję błędy kompilacji nie mogę znaleźć symbolu, a następnie: Wykonanie nie powiodło się dla zadania ": domain: compileTestJava '.
Próbowałem zmienić "dostarczone" na "kompiluj" i "testuj kompilację". Nadal nie działa.
Dziwne jest to, że po awarii kompilatoraTestJava mogę znaleźć wygenerowany plik DaggerTestComponent.java w domenie domain/build/classes/test. Więc jeśli jest generowany, dlaczego otrzymuję ten błąd kompilacji?
Należy pamiętać, że problem występuje tylko w źródle testowym. Wygenerowałem źródło Dagger 2 używane w głównym źródle.
UPDATE:
I komentuje każde miejsce, które starał się wykorzystać DaggerTestComponent i starał się budować ponownie. W domenie domain/build/classes/test mogę teraz znaleźć nie tylko DaggerTestComponent.java, ale także klasę .class w wyniku kompilacji. Tak więc generuje plik źródłowy i go kompiluje. Dlaczego kompilacja plików nie działa? Wygląda na to, że jakiś problem z zamówieniem, tak jak wygenerowane źródło, nie jest jeszcze gotowy w momencie kompilacji innych źródeł.
nie musisz również stosować wtyczki APT? – EpicPandaForce
@EpicPandaForce, myślę, że nie. Ponieważ "com.neenbedankt.android-apt" jest przewidziany do użycia z projektem Android. Ten moduł mojego projektu to czysta Java. W każdym razie aktualna wersja Androida-APT ma błąd z testami jednostkowymi. –