如何将-h参数传递给Maven编译器插件以创建JNI头文件

时间:2018-11-07 09:08:36

标签: java maven java-native-interface javah

我已经尝试过在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”手动创建它们

任何帮助将不胜感激

1 个答案:

答案 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”将删除先前生成的标头。

相关问题