【发布时间】:2026-01-08 13:10:02
【问题描述】:
我正在使用 Gradle 构建一个涉及本机库的 Java 项目。我有一个任务jniHeaders 定义:
jniHeaders.dependsOn classes
所以当我输入gradle jniHeaders 时,它将编译Java 类并生成JNI 标头。到目前为止一切顺利。
但我觉得输入gradle jniHeaders 不是很自然。在 99% 的情况下,如果您成功编译 Java 类,您也希望生成 JNI 标头。如果我可以 gradle classes 一步编译 Java 类并生成 JNI 头文件,那就太好了。
换句话说,我想将任务jniHeaders添加到任务classes的末尾,但前提是classes已成功完成并且确实做了一些工作。
classes.doLast 浮现在脑海中,但我无法告诉它执行另一个任务。 classes.finalizedBy jniHeaders 在一定程度上起作用,但不管classes 的结果如何,都会生成 JNI 标头。我想我可以添加一些 Groovy 逻辑来获得我想要的确切行为,但我也怀疑一定有更简单的方法。
有人有什么建议吗?
【问题讨论】:
-
是不是只是调用一个看似随意的任务的概念让你烦恼?我可能很想定义另一个任务
allTheThings(或其他任何东西!),它只依赖于classes和jniHeaders。这似乎比必须添加精品构建逻辑简单得多:)
标签: java gradle groovy java-native-interface