Dagger2 + gradle + intellij: сгенерированные классы не найдены и рассматриваются как ошибка компиляции/автозаполнение не выполняется

Я пытаюсь заставить intellij хорошо играть с моей функциональной сборкой Gradle без использования различных других плагинов. различные плагины Я использовал поддержку разрыва с другим плагином, который мне нужно использовать (он ищет сгенерированные источники в расположении по умолчанию среди других вопросы). Я работал над этой проблемой некоторое время и имел небольшой успех, но всегда с оговорками. Многие плагины плохо работают с apt в тестовом каталоге и т. д.

Включение процессоров аннотаций и установка выходных каталогов в /build/classes /main и /build/classes/test не дают результатов, хотя именно здесь плагин gradle, по-видимому, помещает файлы .java и .class, сгенерированные путем включения компилятора dagger2.

Я могу заставить все играть хорошо, творчески настраивая параметры сгенерированных исходных наборов в конфигурациях модуля, но это никогда не задерживается. то есть, если вы закроете приложение, вам придется перенастроить параметры.

Любая помощь будет оценена по достоинству.


person accordionfolder    schedule 25.10.2015    source источник


Ответы (1)


Я решил проблему, выполнив следующие шаги: 1) Изменить задачу compileJava, чтобы указать местоположение целевого источника.

compileJava {
    options.compilerArgs+= [
            "-s", project.projectDir.absolutePath + '/src/main/generated'
    ]
}

2) Сообщите IntelliJ Idea, что эти файлы являются источниками

idea {
    module {
        // generatedSourceDir does  not work for some reason
        sourceDirs  += file(project.projectDir.absolutePath + '/src/main/generated')
    }
}

P.S Плагин Idea должен применяться:

apply plugin: 'idea'
person Василий Кудрявцев    schedule 26.10.2015
comment
Спасибо за ответ, к сожалению, переназначение того, где хранятся сгенерированные источники, вызывает некоторые проблемы с требуемым плагином, но я немного поиграю с этим и посмотрю, что я могу сделать. Спасибо! - person accordionfolder; 26.10.2015
comment
Проголосовал! ;) Я использовал очень похожее решение: stackoverflow.com/a/41815478/1010868 - person Tomasz Gawel; 23.01.2017