我正在研究Java / JNI项目。在父级下,我有不同的java和C codebase模块.Java模块需要生成JNI头文件。因为,我找不到任何支持javah的现有任务/插件,所以我为javah编写了自定义任务来生成JNI接口。所以,当我这样做的时候
gradle javah
我得到了所需的输出。
gradle build
时,我都希望它能在生成类或构建任务结束后执行javah任务。gradle build
时,是否可以在这样的混合项目中生成共享库?目前,我必须gradle <project-name>SharedLibrary
答案 0 :(得分:1)
第1部分 :在finalizedBy
完成后,您可以task1
使用task2
执行task1
。对于您的情况,您可以尝试以下方法:
// 'javah' will be executed after 'classes' task executes.
classes.finalizedBy javah
// Make 'javah' task depend on 'classes' task,
// so that when 'classes' task fails, 'javah' is not executed.
javah.dependsOn classes
// Make 'build' depend on 'javah' task,
// so that executing 'build' task automatically executes 'javah'
build.dependsOn javah
第2部分 :您可以使用dependsOn
连接<project-name>SharedLibrary
任务,如下所示:
build.dependsOn "${project.name}SharedLibrary"
// Assuming the SharedLibrary task needs to depend on 'javah' task
tasks["${project.name}SharedLibrary"].dependsOn javah
我假设SharedLibarary任务名称是动态的,因此对该任务使用略有不同的语法。