IntelliJ + groovy DSL: как исключить файлы, скомпилированные groovy плагином?
Я работаю над веб-проектом на Java, который использует великолепный DSL Liquibase для управления изменениями БД. Ради этой темы, это может быть любая другая сторонняя библиотека, которая использует *.groovy
файлы в качестве источников. Проект построен с Gradle. В одном из моих модулей (dao-base
) под src/main/resources
папка у меня заводная файлов (changelog01.groovy, master_changelog.groovy
так далее.). эти файлы должны быть загружены флягой liquibase во время выполнения.
Теперь, когда я пытаюсь сделать проект в IntelliJ, он выдает следующее сообщение об ошибке:
Groovyc: не удается скомпилировать файлы Groovy: для модуля 'dao-base' не определена библиотека Groovy.
Я понял, что заводной плагин обнаруживает *.groovy
файлы, пытается их скомпилировать и неудивительно, что не удается. Это отличные DSL-файлы, которые должны загружаться только сторонним анализатором liquibase, и мне не нужен Groovy-плагин IntelliJ для их компиляции.
Мне удалось придумать 2 частичных решения:
1. Отключить заводной плагин в intellij. Проблема с этим решением состоит в том, что плагин gradle зависит от плагина groovy и, таким образом, автоматически отключается при отключении плагина groovy. Мне нужен подключаемый модуль Gradle.
2. исключая src/main/resources
папка в настройках проекта -> модули -> dao-base
(мой модуль) -> вкладка источников. Проблема с этим решением состоит в том, что когда я собираю проект и внедряю его в tomcat, файлы из папки ресурсов отсутствуют, и поскольку файлы в нем требуются во время выполнения, я получаю исключение не найденный файл при загрузке войны.
Я надеялся, что кто-то может найти лучшее решение для этой проблемы.
3 ответа
Попробуйте удалить суффикс groovy-файла из списка ресурсов компилятора:
Настройки -> Компилятор
Вы генерируете проект IntelliJ с плагином Gradle Idea? Если это так, вы можете добавить эти groovy файлы в список ресурсов компилятора в IntelliJ через gradle, добавив это в build.gradle:
idea {
project {
// customize the .ipr file generation.
ipr {
withXml { xmlProvider ->
def project = xmlProvider.asNode()
// Add appropriate groovy files to the compiler resources. These files will not be compiled by the groovy compiler but will be copied to the classes directory during compilation.
def compilerSettings = project.component.find { it.@name == 'CompilerConfiguration' }
compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/changelog*.groovy'])
compilerSettings.wildcardResourcePatterns*.appendNode('entry', [name: '*/master_changelog.groovy'])
}
}
}
}
Это хорошо, потому что вам не нужно будет делать это вручную, когда вы генерируете проект из gradle.
Я столкнулся с той же проблемой. Я отключил Groovy плагин от установки после того, как успешно скомпилировать, а также выполнил мой проект.