生成されたJavaソース(documentation)の出力ディレクトリをカスタマイズできるJavaコンパイラのオプションがあります。
-s dirの
はどこ生成されたソースファイルを配置するディレクトリを指定します。 ディレクトリが既に存在している必要があります。 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 plugin。
ありがとうございました - それは、私が '$ project.buildDir/generated/java'に生成されたファイルを置くことを好むという点で、私にとってはうまくいきます。それは、変更することを心配する必要はないということです。どのようにクリーンな作品。とにかく、実際にソースセットを追加する必要はないようですが、それはとにかく機能します。 –
次の再コンパイル時に他の人がJavaコンパイルエラーに陥った場合は、doFirstブロックに次の行を追加してください: 'GFileUtils.cleanDirectory(directory); '..あなたのバージョンに応じて' FileUtils.cleanDirectory'を使う必要があるかもしれません – Darwayne
@PetterMåhlén、なぜsourceSetの設定はオプションですか? gradleは、生成されたクラスを含むjarファイルを作成する必要があります。 – Sunnyday