Gradle ve groovy için oldukça yeni. İşte JNI başlıklarını oluşturur benim görevdir: Tamam çalışırGravür görevini tanımlamanın en iyi yolu
apply plugin: 'java'
apply plugin: 'application'
mainClassName = "com.my.example.HelloG"
task GenerateJniHeaders(dependsOn: 'classes') << {
def classpath = "build/classes/main"
def nativeIncludes = "src/native/include"
"javah -d ${nativeIncludes} -classpath ${classpath} ${mainClassName}".execute()
}
classes.finalizedBy GenerateJniHeaders
build.dependsOn GenerateJniHeaders
ama biraz çirkin hissediyorum. Bunu nasıl geliştirebilirim? Özellikle benim tarafımdan kodlanmış değişkenleri kaldırmama yardımcı olan önerileri takdir ediyorum. Bu görevi daha genel yapmak istiyorum - şimdi sadece ana sınıf için JNI üstbilgisi üretiyor ancak tüm java dosyaları için çalıştırmak istiyorum. Ayrıca, bu görev başarısız olduğunda (ör., Sınıf yolu yanlıştır), herhangi bir hata iletisi yazdırmaz ve başarılı olur, bu da yanıltıcıdır. Bu görev, bu şekilde her şey bir yapılandırma olduğunu
task generateJniHeaders(type:Exec) {
def classpath = sourceSets.main.output.classesDir
def nativeIncludes = "src/native/include"
commandLine "javah", "-d", nativeIncludes, "-classpath", classpath, "$mainClassName"
dependsOn classes
}
Not: kullanmak daha uygun olur böylece