В моем проекте много модулей, и мы используем gradle с несколькими генераторами кода. Пример конфигурации:
sourceSets {
...
swagger {
compileClasspath = configurations.swaggerCompile
java {
srcDir file("${project.buildDir.path}/build/generated/source/swagger/")
}
}
main {
java {
srcDirs 'build/generated/source/proto/main/...'
}
}
test {
java {
srcDirs 'build/generated/source/proto/main/...'
}
}
}
ext {
generatedSourcesDir = 'build/generated/source'
}
protobuf {
...
generatedFilesBaseDir = "${buildDir}/generated-src/..."
}
Проект не компилируется с Intellij, потому что его генерирующие классы как в заданных каталогах, так и в / out /, сгенерированы Intellij.
Те же дублированные классы, например, генерируются в:
\ out \ production \ classes \ генерируется \ - Intellij
\ build \ generate-src .. \ - Gradle
Это дает мне сотни сообщений об ошибках, таких как: Ошибка: (30, 14) java: duplicate class: com.xxx.xxx.xxx.YourClass Я перепробовал все, что смог найти здесь и на форумах Intellij. У меня ничего не получалось.
Я даже пытался исключить каталог «out» в «Файл»> «Настройки»> «Построение, выполнение, развертывание> Компилятор»> «Исключает», но он тоже не работает.
Единственный способ - построить проект, вручную удалить все «out» каталоги, а затем отключить процессоры аннотаций. Но это не лучший способ заставить его работать.