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 IDEA

Вы генерируете проект 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 плагин от установки после того, как успешно скомпилировать, а также выполнил мой проект.

Другие вопросы по тегам