@ Генерируемая аннотация с использованием gradlew + dagger - PullRequest
0 голосов
/ 07 ноября 2018

Я сталкиваюсь со странной проблемой, используя gradlew (4.10.2) + dagger (2.18).

Проблема в том, когда я звоню:

./gradlew :app:compileDebugAndroidTestKotlin 

Сборка завершается неудачно с:

Задача: Общая: compileDebugJavaWithJavac FAILED

/ CommonModule_ProvidesGsonFactory.java: 6: ошибка: пакет javax.annotation.processing не существует импорт javax.annotation.processing. Сгенерировано ;

/ CommonModule_ProvidesGsonFactory.java: 8: ошибка: не удается найти символ @ Сформирован (

Но если я запускаю задачу из Android Studio , задача будет выполнена успешно, а @Generated не будет в классе, созданном кинжалом.

У вас есть подсказка, чтобы избежать аннотации @Generated, используя ./gradlew?

1 Ответ

0 голосов
/ 07 ноября 2018

Кинжал использует auto-common GeneratedAnnotations, чтобы выяснить, какую аннотацию @Generated использовать. Это делается на основе пути к классам.

Это означает, что во время работы процессора аннотаций javax.annotation.processing.Generated доступен и используется в генераторе, но когда полученный файл компилируется в другой задаче, он больше не находится в пути к классам.

Потенциальные причины могут заключаться в том, что код был сгенерирован с использованием более новой версии JDK, а инкрементная сборка недействительна, требует полного "clean & rebuild" или существует проблема с уровнями языка Java, когда процессор аннотаций работает на Java 9 +, но Android скомпилирован как Java 8 или ниже.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...