Процессор аннотаций Dagger 2 не работает для Java Gradle IntelliJ Project
Я играю с Java-проектом Gradle, и мне трудно заставить работать процессор аннотаций. По какой-то причине, когда я запускаю конфигурацию intellij (изображенную ниже), процессоры аннотаций не работают. Я предполагаю, что это потому, что конфигурация имеет Make
Команда настроена для запуска перед запуском. Процессоры аннотаций запускаются, когда assemble
или же build
называется.
Проблема воспроизводима при звонке ./gradlew clean make
, У меня нет этой проблемы при звонке ./gradlew clean assemble
, или же ./gradlew clean build
, Как лучше всего обходить это?
3 ответа
IntelliJ необходимо включить обработку аннотаций для проекта. Вот изображение, которое детализирует, где вы можете включить обработку аннотаций для IntelliJ:
Предпочтения> Построение, Исключение, Развертывание> Компилятор> Процессоры аннотаций> Установите флажок "Включить обработку аннотаций"
- убедитесь, что обработка аннотаций включена для вашего проекта (как описано в @spierce7)
- также убедитесь, что
apply plugin: 'idea'
находится в вашем build.gradle
Пример фрагмента build.gradle:
plugins {
id "net.ltgt.apt" version "0.5"
}
apply plugin: 'java'
apply plugin: 'idea'
...
dependencies {
compile 'com.google.dagger:dagger:2.10'
apt 'com.google.dagger:dagger-compiler:2.10'
}
от: https://github.com/tbroyer/gradle-apt-plugin (github для плагина net.ltgt.apt)
IntelliJ IDEA
Когда подключается плагин идеи, задача идеи автоматически настраивает сгенерированные файлы, чтобы включить обработку аннотаций в IntelliJ IDEA.
Однако при использовании интеграции Gradle в IntelliJ IDEA вместо задачи идеи вам придется вручную включить обработку аннотаций: в Настройках... → Построение, Выполнение, Развертывание → Компилятор → Процессоры аннотаций, установите флажок Включить обработку аннотаций и Получить процессоры из проекта. CLASSPATH. Чтобы имитировать поведение Gradle и поведение сгенерированных файлов, вы можете настроить каталоги производственных и тестовых источников так, чтобы они соответственно создавали / генерируемые / source / apt / main и build / generated / source / apt / test и выбирали Хранить сгенерированные источники относительно: Module корень контента.
Обратите внимание, что начиная с IntelliJ IDEA 2016.1, при импорте проекта вам придется снять флажок "Создать отдельный модуль для каждого набора источников".
В любом случае, плагин идеи должен быть применен к проекту.
Альтернативой, начиная с IntelliJ IDEA 2016.3, является делегирование действий по сборке IDE самой Gradle: https://www.jetbrains.com/idea/whatsnew/
Вы не используете плагин APT
buildscript {
repositories {
jcenter()
}
dependencies {
classpath 'com.android.tools.build:gradle:1.3.0'
classpath 'com.neenbedankt.gradle.plugins:android-apt:1.4'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
}
}
А также
apply plugin: 'com.neenbedankt.android-apt'
Или для ядра, его альтернатива чистой Java:
https://plugins.gradle.org/plugin/net.ltgt.apt
Также попробуйте использовать apt
вместо providedCompile