在gradle中定义javah任务的最佳方法
我对gradle和groovy还比较陌生。以下是生成JNI头的任务:在gradle中定义javah任务的最佳方法,java,groovy,gradle,java-native-interface,Java,Groovy,Gradle,Java Native Interface,我对gradle和groovy还比较陌生。以下是生成JNI头的任务: apply plugin: 'java' apply plugin: 'application' mainClassName = "com.my.example.HelloG" task GenerateJniHeaders(dependsOn: 'classes') << { def classpath = "build/classes/main" def nativeIncludes = "
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
apply插件:“java”
应用插件:“应用程序”
mainClassName=“com.my.example.HelloG”
任务GenerateJniHeaders(dependsOn:'classes')
Gradle的任务类型为,具有命令行属性,因此更适合使用它:
task generateJniHeaders(type:Exec) {
def classpath = sourceSets.main.output.classesDir
def nativeIncludes = "src/native/include"
commandLine "javah", "-d", nativeIncludes, "-classpath", classpath, "$mainClassName"
dependsOn classes
}
请注意,通过这种方式,此任务中的所有内容都是配置而不是操作(如果您不熟悉Gradle的构建生命周期,建议阅读《用户指南》中的部分
build.dependsOn GenerateJniHeaders
应替换为jar.dependsOn GenerateJniHeaders
类。完全不需要finalizedBy
。请注意,finalizedBy
通常用于清理,因为即使任务失败,它也会执行
我想这不是增量构建的最佳解决方案