如何将 -h 参数传递给 Maven 编译器插件以创建 JNI 头文件
How can I pass -h argument to maven compiler plugin to create JNI header files
我已经尝试在 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 我得到这个
[信息] 构建失败
[信息]---------------------------------------- ------------------------------
[信息]总时间:2.936 秒
[信息] 完成于:2018-11-07T14:52:49+05:30
[INFO] 最终内存:9M/155M
[信息]---------------------------------------- ------------------------------
[ERROR] 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project adiesha-native: Fatal error compiling: invalid flag: -h 。 -> [帮助 1]
有没有其他方法可以用 Maven 做到这一点,或者我必须使用 "javac -h dir"
手动创建它们
如有任何帮助,我们将不胜感激
我的 Maven 构建遇到了同样的错误 "invalid flag: -h target/headers"。
我尝试了上面 Gyro Gearless 的建议。我将原来的'-h target/headers' 分成了'-h 和'target/headers'。那解决了我的问题。现在我项目中的所有 jni headers 都已正确生成并放置在 target/headers.
中
这是我的 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 headers。请注意,'mvn clean' 将 不会 删除之前生成的 headers。
我已经尝试在 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 我得到这个
[信息] 构建失败
[信息]---------------------------------------- ------------------------------
[信息]总时间:2.936 秒
[信息] 完成于:2018-11-07T14:52:49+05:30
[INFO] 最终内存:9M/155M
[信息]---------------------------------------- ------------------------------
[ERROR] 无法执行目标 org.apache.maven.plugins:maven-compiler-plugin:3.7.0:compile (default-compile) on project adiesha-native: Fatal error compiling: invalid flag: -h 。 -> [帮助 1]
有没有其他方法可以用 Maven 做到这一点,或者我必须使用 "javac -h dir"
手动创建它们如有任何帮助,我们将不胜感激
我的 Maven 构建遇到了同样的错误 "invalid flag: -h target/headers"。
我尝试了上面 Gyro Gearless 的建议。我将原来的'-h target/headers' 分成了'-h 和'target/headers'。那解决了我的问题。现在我项目中的所有 jni headers 都已正确生成并放置在 target/headers.
中这是我的 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 headers。请注意,'mvn clean' 将 不会 删除之前生成的 headers。