9

Liquibase groovy DSL を使用して DB の変更を管理する Java Web プロジェクトに取り組んでいます。このトピックでは、*.groovyファイルをソースとして使用する他のサードパーティ ライブラリを使用できます。プロジェクトはgradleでビルドされています。dao-baseフォルダーの下のモジュール ( ) の 1 つに、src/main/resourcesgroovy ファイル (changelog01.groovy, master_changelog.groovyなど) があります。これらのファイルは、実行時に liquibase jar によってロードする必要があります。

IntelliJ でプロジェクトを作成しようとすると、次のエラー メッセージが表示されます。

Groovyc: Groovy ファイルをコンパイルできません: モジュール 'dao-base' に対して Groovy ライブラリが定義されていません。

Groovy プラグインが*.groovyファイルを検出し、それらをコンパイルしようとして、当然のことながら失敗することを理解しました。これらは、サードパーティの liquibase パーサーによってのみロードされるべき groovy DSL ファイルであり、IntelliJ の groovy プラグインを試してコンパイルする必要はありません。

私は 2 つの部分的な解決策を考え出すことができました: 1. intellij で groovy プラグインを無効にします。このソリューションの問題は、gradle プラグインが groovy プラグインに依存しているため、groovy プラグインを無効にすると自動的に無効になることです。gradle プラグインを有効にする必要があります。2.プロジェクト設定のフォルダーを除外src/main/resources->モジュール-> dao-base(私のモジュール)->ソースタブ。このソリューションの問題は、プロジェクトをビルドして tomcat にデプロイすると、resources フォルダーのファイルが見つからず、その中のファイルが実行時に必要になるため、war のロード時にファイルが見つからないという例外が発生することです。

誰かがこの問題のより良い解決策を思いつくことを望んでいました.

4

3 に答える 3

18

コンパイラのリソース リストから groovy ファイル サフィックスを削除してみてください。

設定 -> コンパイラ

IntelliJ IDEA コンパイラの設定

于 2013-07-19T22:23:18.437 に答える
0

Gradle Idea Pluginを使用して IntelliJ プロジェクトを生成していますか? その場合、これを build.gradle に追加することで、これらの groovy ファイルを gradle 経由で IntelliJ のコンパイラ リソース リストに追加できます。

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 からプロジェクトを生成するときに手動でこれを行うことを覚えておく必要がないため、これは便利です。

于 2013-07-20T02:45:02.403 に答える
-1

私は同じ問題に直面していました。その後、プロジェクトを正常にコンパイルして実行した後、groovy プラグインの設定を無効にしました。

于 2013-09-02T13:05:57.350 に答える