Oluşturulan java kaynakları için çıktı dizinini özelleştirmeye izin veren java derleyicisi için bir seçenek var (documentation).
nerede oluşturulan kaynak dosyalarını yerleştirmek için dizini belirtin dir -s. dizini önceden mevcut olmalıdır; javac onu yaratmayacak. Bir sınıf paketin bir parçasıysa, derleyici, kaynak dosyayı paket adını yansıtan bir alt dizine gönderir ve gerektiğinde dizinler oluşturur. örneğinde, -s C: \ mysrc belirtirseniz ve sınıf com.mypackage.MyClass olarak adlandırılırsa, kaynak dosya C: \ mysrc \ com \ mypackage \ MyClass.java içine yerleştirilir.
Örnek 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"
}
}
}
Bu kod parçacığı sonraki yapar:
- oluşturur ve oluşturulan kodu için çıktı olarak dizinini belirtir
- temiz görev çağrılır ise oluşturulan kaynaklar siler
- , yeni kaynak kümesini ekler
Güncelleme
Kullanım gradle apt plugin yerine.
Çözüm için teşekkürler - bu benim için harika çalışıyor, bir tweak ile oluşturulan dosyaları "$ project.buildDir/generated/java" içine koymayı tercih ediyorum, çünkü bu, değiştirme konusunda endişelenmenize gerek olmadığı anlamına geliyor ne kadar temiz çalışıyor. Ayrıca, aslında işe yarayan bir kaynak kümesi eklemenin gerekmediği görülüyor. –
Herhangi biri başka bir sonraki derlemelerde bir java derleme hatasına girerse .. doFirst bloğuna aşağıdakileri ekleyin: 'GFileUtils.cleanDirectory (directory); '' graderinize bağlı olarak 'FileUtils.cleanDirectory' – Darwayne
@ PetterMåhlén'i kullanmanız gerekebilir, bu yüzden sourceSet yapılandırması isteğe bağlıdır? gradle, oluşturulan sınıfları içeren bir kavanoz oluşturmak için ona ihtiyaç duyar. – Sunnyday