【问题标题】:IntelliJ + groovy DSL: How to exclude files from being compiled by groovy plugin?IntelliJ + groovy DSL:如何排除文件被 groovy 插件编译?
【发布时间】:2013-07-17 13:52:04
【问题描述】:

我正在开发一个使用 Liquibase groovy DSL 来管理数据库更改的 Java Web 项目。 就本主题而言,它可以是使用 *.groovy 文件作为源的任何其他 3rd 方库。 该项目是用 gradle 构建的。 在src/main/resources 文件夹下的一个模块(dao-base)中,我有一些常规文件(changelog01.groovy, master_changelog.groovy 等)。这些文件应该由 liquibase jar 在运行时加载。

现在,当我尝试在 IntelliJ 中创建项目时,它会给出以下错误消息:

Groovyc:无法编译 Groovy 文件:没有定义 Groovy 库 模块'dao-base'。

我知道 groovy 插件检测到 *.groovy 文件,尝试编译它们并且不出所料地失败了。这些是 groovy DSL 文件,只能由 3rd 方 liquibase 解析器加载,我不需要 IntelliJ 的 groovy 插件来尝试编译它们。

我设法提出了 2 个部分解决方案: 1. 在 intellij 中禁用 groovy 插件。 此解决方案的问题在于 gradle 插件依赖于 groovy 插件,因此在禁用 groovy 插件时会自动禁用。我需要启用 gradle 插件。 2.在项目设置-->模块-->dao-base(我的模块)-->源选项卡中排除src/main/resources文件夹。 这个解决方案的问题是,当我构建项目并部署到 tomcat 时,资源文件夹中的文件丢失了,并且由于运行时需要其中的文件,所以当战争加载时我得到文件未找到异常。

我希望有人能为这个问题想出更好的解决方案。

【问题讨论】:

    标签: java groovy intellij-idea liquibase groovydsl


    【解决方案1】:

    尝试从编译器的资源列表中删除 groovy 文件后缀:

    设置->编译器

    【讨论】:

    • 谢谢。这解决了我的问题。这很简单,但不知何故我忽略了这一点。
    【解决方案2】:

    您是否正在使用Gradle Idea Plugin 生成 IntelliJ 项目?如果是这样,您可以通过 gradle 将这些 groovy 文件添加到 IntelliJ 中的编译器资源列表,方法是将其添加到 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 生成项目时,您不必记得手动执行此操作。

    【讨论】:

      【解决方案3】:

      我遇到了同样的问题。在成功编译并执行我的项目之后,我禁用了 groovy 插件的设置。

      【讨论】:

      • 它还会禁用 IntelliJ 中的 Gradle 功能。坏主意。
      猜你喜欢
      • 1970-01-01
      • 2014-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-19
      • 2014-11-21
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多