17

Google の AutoFactory の注釈プロセッサを使用しています。同じモジュール内の別の場所で注釈を付けSomeClass@AutoFactory参照しました。new SomeClassFactory().create()

Maven 構成:

Maven に必要な依存関係を追加しました。

    <dependency>
        <groupId>com.google.auto.factory</groupId>
        <artifactId>auto-factory</artifactId>
        <version>1.0-beta2</version>
        <optional>true</optional>
    </dependency>

実行すると、$ mvn clean compileそれtarget/generated-sources/annotions/somepackage/SomeClassFactoryが作成され、モジュールがエラーなしでコンパイルされることがわかります。

IntelliJ 構成:

  • Reimport all maven modules
  • Preferences-> Annotation Processors->Enable annotation processing
  • Rebuild Project

v14.1.4私の理解が正しければ、私のバージョンの IDEA ( ) ではこれで十分なはずです。

コンパイラの設定 プロジェクトの構造

次の手順も実行しました。

  • generated-sourcesフォルダーがソースとして追加されていることを確認しましたProject Structure
  • MavenプリファレンスGenerated sources foldersがに設定されていることを確認Detect automatically
  • リビルド時にソースが実際に生成されることを確認しました(targetIntelliJによって生成されたことを確認するために、最初にフォルダーを削除しました)
  • @tilpnerExclude output pathsの提案に従って、プロジェクト構造で無効にしてみてください
  • キャッシュを無効にして再起動する
  • .ideaフォルダと.imlファイルを削除する
  • Phase to be used for folders updatein Preferences-> Maven->のさまざまな設定を試してくださいImporting

問題:

これらのすべての手順を実行した後、生成されたクラスはプロジェクト エクスプローラーに表示されません。実際、targetディレクトリ全体はどこにもありません。コンパイルは失敗しcannot find symbol: SomeClassFactorynew SomeClassFactory().create()エディターで赤でマークされますが、Maven は問題なく生成およびコンパイルします。

私には選択肢がありません。助けや提案があれば大歓迎です!

更新:コンパイル エラーの原因となったコードにコメントを付けると、IntelliJ はコンパイル メッセージに次の警告を出力します。Warning:Output path /Users/.../target/generated-sources/annotations intersects with a source root. Only files that were created by build will be cleaned.

4

1 に答える 1

15

Jetbrains のサポートに助けを求めたところ、問題は除外されたファイルの設定にあることが判明しました。これらが構成されている場所は 2 つあります。

フォルダ/ファイルが で除外されていないこと、Preferences > Build, Execution, Deployment > Compiler > Excludesおよびファイル/フォルダ パターンが にリストされていないことを確認してくださいPreferences > Editor > File Types -> Ignored files and folders

私の場合、 >targetの無視されたファイルとフォルダーのリストに含まれていました。EditorFile Types

その後、コンパイルの問題が残っていたので、IDEA プロジェクト ファイルを破棄してプロジェクトを再作成することで解決しました。

于 2015-10-22T18:38:00.163 に答える