Процессор аннотаций 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

Другие вопросы по тегам