簡體   English   中英

IntelliJ + groovy DSL:如何排除文件被groovy插件編譯?

[英]IntelliJ + groovy DSL: How to exclude files from being compiled by groovy plugin?

我正在開發一個Java Web項目,該項目使用Liquibase groovy DSL來管理數據庫更改。 為了本主題,它可以是使用*.groovy文件作為源的任何其他第三方庫。 該項目是用gradle建造的。 src/main/resources文件夾下的一個模塊( dao-base )中,我有groovy文件( changelog01.groovy, master_changelog.groovy等)。 這些文件應該在運行時由liquibase jar加載。

現在,當我嘗試在IntelliJ中創建項目時,它會給出以下錯誤消息:

Groovyc:無法編譯Groovy文件:沒有為模塊'dao-base'定義Groovy庫。

我知道groovy插件檢測到*.groovy文件,嘗試編譯它們並且不出所料地失敗。 這些是groovy DSL文件,只能由第三方liquibase解析器加載,我不需要IntelliJ的groovy插件來嘗試編譯它們。

我設法提出了兩個部分解決方案:1。禁用intellij中的groovy插件。 這個解決方案的問題是gradle插件依賴於groovy插件,因此在禁用groovy插件時會自動禁用。 我需要啟用gradle插件。 2.排除項目設置中的src/main/resources文件夾 - > modules - > dao-base (my module) - > sources選項卡。 這個解決方案的問題是,當我構建項目並部署到tomcat時,資源文件夾中的文件丟失,因為運行時需要文件中的文件,所以當戰爭加載時我得到文件未找到異常。

我希望有人能為這個問題找到更好的解決方案。

嘗試從編譯器的資源列表中刪除groovy文件后綴:

設置 - >編譯器

IntelliJ IDEA編譯器設置

您是否使用Gradle Idea插件生成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生成項目時,您不必記住手動執行此操作。

我面臨同樣的問題。 在成功編譯以及執行我的項目之后,我從設置中禁用了groovy插件。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM