执行gradle构建时,需要执行自定义任务

时间:2015-01-08 05:36:22

标签: java gradle java-native-interface

我正在研究Java / JNI项目。在父级下,我有不同的java和C codebase模块.Java模块需要生成JNI头文件。因为,我找不到任何支持javah的现有任务/插件,所以我为javah编写了自定义任务来生成JNI接口。所以,当我这样做的时候 gradle javah

我得到了所需的输出。

  1. 但是,每当我调用gradle build时,我都希望它能在生成类或构建任务结束后执行javah任务。
  2. 另外,当我执行gradle build时,是否可以在这样的混合项目中生成共享库?目前,我必须gradle <project-name>SharedLibrary

1 个答案:

答案 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任务名称是动态的,因此对该任务使用略有不同的语法。