やりたいこと
IntelliJ IDEAで、Annotation Processors(注釈プロセッサ, アノテーションプロセッサ)を使用する方法です。
前提条件
IntelliJ IDEA 2017.3.5で確認しています。
概要
Module content root
を設定する。src/main/generated
に生成されたコードが入ります。- このファイルはリポジトリ管理外にします。
- IntelliJ IDEAの設定で、この生成されたコードをソースフォルダとして管理する。
手順
- 依存ライブラリを追加
- Annotaion Processorsの設定
- Preferences -> Build, Execution, Deployment -> Compiler -> Annotation Processorsの設定
- Enable annotation processing: オン
- Store generated source relative to:
Module content root
- ソースフォルダの設定
- Gradleの場合は後述。
- 右クリック -> Open Module Settings
*_main
にsrc/main/generated
をSourcesとして追加*_test
にsrc/test/generated_test
をTestsとして追加
- Gradleの場合は後述。
- Build -> Rebuild Project
3.の作業はGraldeの場合は、build.gradleに以下のように入れてください。
参考: sources generated by annotation processing should be marked as such automatically : IDEA-150042
apply plugin: 'idea'
// dependenciesの後くらい。
idea {
module {
sourceDirs += file('src/main/generated')
generatedSourceDirs += file('src/main/generated')
testSourceDirs += file('src/test/generated_tests')
}
}
クラス〜〜が重複していますと出る場合
過去にいろいろいじった場合で、同じファイルが複数の場所に格納されていると思われます。 以下のチェックを行ってください。
- 不要なJavaファイルがないか
- 不要なクラスパスがないか
Output path intersects with source root.という警告が出る場合
Modulesの設定で、Exclude Foldersの下にSource Foldersを指定すると起きるようです。 自動生成するものに関してはクリアされても問題ないと思います。
制限事項
現在は annotationProcessor
に書いたライブラリは無視されるようです。
これを回避するためには、以下のようにすると良さそうです。
idea {
dependencies {
compile '...' // annotationProcessorと同じ内容を書く
}
}