Java 执行gradle build时需要执行自定义任务
我正在从事Java/JNI项目。在parent下,我有不同的java和C代码库模块。java模块需要生成JNI头文件。因为,我找不到任何支持javah的现有任务/插件,所以我为javah编写了自定义任务来生成JNI接口。所以,当我这么做的时候Java 执行gradle build时需要执行自定义任务,java,gradle,java-native-interface,Java,Gradle,Java Native Interface,我正在从事Java/JNI项目。在parent下,我有不同的java和C代码库模块。java模块需要生成JNI头文件。因为,我找不到任何支持javah的现有任务/插件,所以我为javah编写了自定义任务来生成JNI接口。所以,当我这么做的时候 格拉德勒贾瓦赫 我得到了期望的输出 然而,我希望无论何时调用gradlebuild,它都应该在生成类或构建任务结束后执行一次javah任务 另外,当我只进行gradlebuild时,是否可以在这样一个混合项目中生成共享库?目前,我必须做gradlesh
格拉德勒贾瓦赫
我得到了期望的输出
gradlebuild
,它都应该在生成类或构建任务结束后执行一次javah任务gradlebuild
时,是否可以在这样一个混合项目中生成共享库?目前,我必须做gradlesharedlibrary
task1
上使用finalizedBy
在task1
完成后执行task2
。对于您的情况,您可以尝试以下方法:
// '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
将共享库
任务连接起来,如下所示:
build.dependsOn "${project.name}SharedLibrary"
// Assuming the SharedLibrary task needs to depend on 'javah' task
tasks["${project.name}SharedLibrary"].dependsOn javah
我假设SharedLibarary任务名称是动态的,因此对该任务使用了稍微不同的语法。好吧,你可以
dependsOn(compileJava)
我尝试了这个方法,但它似乎不起作用。我研究了finalizedBy,它将允许调用javah,即使任务“类”失败。我希望在任务“类”成功时调用javah。编辑了我的答案。这可以通过为javah
任务添加对类的依赖来克服<代码>javah.dependsOn类
。