tl; dr: Я не могу настроить IntelliJ для генерации java файлов в том же каталоге, что и gradle
У меня есть небольшой проект, который использует immutables процессор аннотаций. Он работает так, как ожидалось, в сборке командной строки gradle, но я не могу заставить IntelliJ выводить сгенерированные файлы в тот же каталог.
Полный проект доступен на GitLab
Gradle config:
Я использую следующие плагины gradle:
- плагин gradle-idea, который обрабатывает конфигурацию идеи
- gradle-apt-plugin, который обеспечивает конфигурацию apt и обрабатывает путь и конфигурацию класса компиляции, связанный с обработкой аннотации (если также применяется плагин идеи)
соответствующие части сценария сборки (ссылка на полный список):
apply plugin: 'java'
apply plugin: "net.ltgt.apt"
apply plugin: 'idea'
dependencies {
def immutablesVersion = '2.3.9'
compileOnly "org.immutables:value:$immutablesVersion:annotations"
compileOnly "org.immutables:encode:$immutablesVersion"
apt "org.immutables:value:$immutablesVersion"
}
когда я начинаю ./gradlew build
все как ожидалось:
- Исходный файл
DataEncoding.java
обрабатывается сгенерированным java файломDataEncodingEnabled.java
в -
/build/generated/source/apt/main
в ожидаемом пакетеcom.tmtron.immutables.data
- и сгенерированный файл также скомпилирован в файл.class
В IntelliJ я активирую обработку аннотации, как предложено документами gradle-apt-plugin:
Затем я выполняю ./gradlew clean
чтобы убедиться, что предыдущие файлы исчезли, а затем нажмите " Build
- Build Project
в IntelliJ.
Обработчик аннотации выполняется, но проблема в том, что сгенерированный файл java попадает в неправильное расположение:
Он находится в: /build/generated/source/apt/main/build/generated/source/apt/main/com.tmtron.immutables.data
жирная часть избыточна.
Что я делаю неправильно и как я могу настроить его правильно, чтобы IntelliJ и gradle генерировали файлы в том же каталоге?
Заметки:
- Я, конечно, уже пытался просто оставить "Источники исходных данных источника" в аннотации IntelliJ пустым, но он не работает: тогда он автоматически использует "сгенерированный", и я также получаю неправильный путь.
- Версия IntelliJ 2016.3.4