Я использую intellij (2019.1.1) для проекта Java Gradle (5.4.1) и использую lombok (1.18.6) для автогенерации кода.Intellij помещает сгенерированные источники в out/production/classes/generated/...
, а Gradle - в build/generated/sources/...
Это нормально, и мне нравится, что Intellij хранит свои собственные артефакты сборки отдельно от Gradles, однако Intellij, похоже, просматривает оба каталога, когдазапущенные проекты, и он жалуется на дубликаты сгенерированных классов.Как лучше всего использовать intellij с Gradle и автоматически сгенерированными источниками?Вы:
- говорите intellij выводить в тот же каталог, что и gradle (это может привести к странному поведению, если процесс за пределами intellij обновляет файл в build /)
- сказать intellijвыполнить все задачи с помощью gradle (я слышал, что это медленнее, чем make intellij)
- говорит intellij просто игнорировать каталог 'build' (как вы вообще это делаете? и почему intellij даже небезразлично 'build /'когда он знает, что выводит в' out / ')
UPDATE : чтобы прояснить ситуацию, проблема не в сгенерированном коде lombok, а в hibernate-jpamodelgen.Проблема остается той же (дублирующиеся сгенерированные источники), но я хочу уточнить, что это источники, сгенерированные jpamodelgen, а не lombok.
UPDATE 2 : я попробовал следующую конфигурацию впопытка сообщить intellij, где находятся сгенерированные источники, а также сообщить intellij игнорировать каталог сборки.К сожалению, это не сработало (по-прежнему получаю дублирующую ошибку класса в сгенерированных исходных файлах).
apply plugin: 'idea'
idea {
module {
sourceDirs += file('out/production/classes/generated')
generatedSourceDirs += file('out/production/classes/generated')
excludeDirs += file('build')
}
}
UPDATE 3 : Попробовал совет от M.Riccuiti и удалил build /, out/, .idea /, .gradle / и повторно импортировал проект gradle, но intellij все еще видит сгенерированные источники в каталоге build /.