プロジェクトには、コンパイル中に Java コードを生成する注釈プロセッサが含まれています。デフォルトでは、Gradle は生成されたソース ファイルをbuild/classes
ディレクトリに出力します。これにより、IntelliJ による新しく生成されたソース ファイルの検出で問題が発生します。
ソース ファイルを別のディレクトリに出力するように Gradle を設定する簡単な方法はありますか? たとえば、$buildDir/gen/main/java
または$buildDir/build/generated/main/java
?
ベストアンサー1
Javaコンパイラには、生成されたJavaソースの出力ディレクトリをカスタマイズできるオプションがあります(ドキュメンテーション)。
-s ディレクトリ
生成されたソース ファイルを配置するディレクトリを指定します。ディレクトリは既に存在している必要があります。javac は作成しません。クラスがパッケージの一部である場合、コンパイラはソース ファイルをパッケージ名を反映したサブディレクトリに配置し、必要に応じてディレクトリを作成します。たとえば、-s C:\mysrc を指定し、クラスの名前が com.mypackage.MyClass である場合、ソース ファイルは C:\mysrc\com\mypackage\MyClass.java に配置されます。
の例build.gradle
compileJava {
options.compilerArgs << "-s"
options.compilerArgs << "$projectDir/generated/java"
doFirst {
// make sure that directory exists
file(new File(projectDir, "/generated/java")).mkdirs()
}
}
clean.doLast {
// clean-up directory when necessary
file(new File(projectDir, "/generated")).deleteDir()
}
sourceSets {
generated {
java {
srcDir "$projectDir/generated/java"
}
}
}
このコード スニペットは次の処理を実行します。
- 生成されたコードの出力先としてディレクトリを作成し、指定します。
- クリーンタスクが呼び出された場合、生成されたソースを削除します
- 新しいソースセットを追加
アップデート
Gradleを使用するaptプラグインその代わり。