我已经尝试过在pom中传递此参数,但是它无法识别。从jdk 8开始,我们不必手动运行javah来生成头文件,而是可以将-h参数传递给javac并在编译时生成头文件。因此,如果我可以将“ -h dir”传递给maven编译器插件,则可以在运行mvn compile时生成头文件。
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<compilerArgs>
<arg>-verbose</arg>
<arg>-h .</arg>
</compilerArgs>
</configuration>
</plugin>
但是当我运行mvn install时,我得到了
[INFO]内置失败
[INFO] -------------------------------------------- ----------------------------
[INFO]总时间:2.936 s
[INFO]完成于:2018-11-07T14:52:49 + 05:30
[INFO]最终内存:9M / 155M
[INFO] -------------------------------------------- ----------------------------
[错误]无法在项目adiesha-native上执行目标org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile(默认编译):致命错误编译:无效标志:-h。 -> [帮助1]
是否还有其他方法可以使用Maven做到这一点,或者我必须使用“ javac -h dir”手动创建它们
任何帮助将不胜感激
答案 0 :(得分:2)
我的Maven构建有相同的错误“无效标志:-h目标/标头”。
我尝试了上面的Gyro Gearless的建议。我将原始的“ -h目标/标题”分为“ -h”和“目标/标题”。那解决了我的问题。现在,我项目中的所有jni标头均已正确生成并放置在目标/标头中。
这是我pom.xml中整个编译器插件的配置部分:
<plugin>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.7.0</version>
<configuration>
<compilerArgs>
<arg>-h</arg>
<arg>target/headers</arg>
</compilerArgs>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
使用此pom,命令'mvn compile'足以生成JNI标头。请注意,“ mvn clean”将不删除先前生成的标头。