Как включить каталог сборки в качестве исходного каталога в intellij при компиляции с помощью gradle
По умолчанию плагин идеи gradle помещает папку сборки как исключенную. Как включить эту папку в качестве исходной папки? (или не исключать его, поскольку он по умолчанию по умолчанию...)
В моем файле build.gradle модуля я попытался с двумя следующими конфигурациями:
idea {
module {
excludeDirs -= file('build/generated')
}
}
и
idea {
module {
sourceDirs += file('build/generated')
}
}
С этими двумя конфигурациями папка build/generated всегда появляется как исключенные папки в IntelliJ после компиляции.
В IntelliJ мне всегда нужно зайти в "Настройки проекта", "Модули", а затем на вкладке "Источники", чтобы удалить папку сборки из исключенных папок и запустить мой проект.
Ответы
Ответ 1
изменить код из
file('build/generated')
к
file("$buildDir/generated")
Я использую здесь рабочий код:
ext {
cxfOutputDir = file("$buildDir/generated-sources/cxf")
}
idea.module {
excludeDirs -= file("$buildDir")
sourceDirs += cxfOutputDir
}
Ответ 2
Вы определенно хотите, чтобы каталог build
исключался в IntelliJ. В противном случае индексирование займет больше времени, вы получите дубликаты в результатах поиска и т.д. Поскольку IntelliJ не поддерживает, включая подкаталог исключенного каталога, мое предпочтительное решение состоит в том, чтобы сгенерировать файлы в каталог вне build
. Например, вы можете поместить их в generated
(относительно каталога проекта) и настроить задачу clean
соответственно:
clean {
delete "generated"
}
Другой вариант - исключить все подкаталоги build
кроме build/generated
. Однако, учитывая, что каталоги, подлежащие исключению, должны быть перечислены явно, это требует больших усилий и несет риск быть хрупкими. (Вы не хотите, чтобы это прерывалось каждый раз, когда плагин /task/etc добавляет новый подкаталог.)
Ответ 3
Это работает для меня!
apply plugin: 'idea'
idea {
module {
excludeDirs -= buildDir
}
}
Ответ 4
Использовать стандартное местоположение для сгенерированного исходного кода - поддерживается без дополнительной настройки:
${project.buildDir}/generated-sources/something
или
${project.buildDir}/generated-test-sources/something
только для сгенерированного кода для тестов.
something
означает технологию, например: jpamodel, cxf и т.д.
Ответ 5
Первый метод
['integration/src/generated'].each {
idea.module.sourceDirs += file(it)
sourceSets.main.java.srcDir it
compileJava.source file(it)
}
второй метод
project.ext {
jaxbTargetDir = file("src/generated/java")
}
idea.module {
excludeDirs -= file("$buildDir")
sourceDirs += jaxbTargetDir
}