通过 Maven exec 插件执行时 javah 失败

javah fails when executed via Maven exec plugin

我在使用 Maven exec 插件执行 Java 工具 javah 时遇到问题。我正在尝试将输出目录指定为 javah 放置头文件的位置,但出现错误:

[INFO] --- exec-maven-plugin:1.5.0:exec (create-jni-headers) @ jni-test-osgi --- Error: unknown option: -d /home/kerry [ERROR] Command execution failed.

这是 POM 的相关部分:

<plugin>
    <groupId>org.codehaus.mojo</groupId>
    <artifactId>exec-maven-plugin</artifactId>
    <executions>
        <execution>
            <id>create-jni-headers</id>
            <goals>
                <goal>exec</goal>
            </goals>
            <phase>compile</phase>
            <configuration>
                <executable>javah</executable>
                <workingDirectory>${project.build.outputDirectory}</workingDirectory>
                <arguments>
                    <argument>-d /home/kerry</argument>
                    <argument>com.javatechnics.jni.test.osgi.HelloWorld</argument>
                </arguments>
            </configuration>
        </execution>
    </executions>
</plugin>

如果我从命令行执行 javah -d /home/kerry com.javatechnics.jni.test.osgi.HelloWorld 就没有问题。

是我做错了什么还是 Maven exec 插件有问题?

每个 "argument" 必须有自己的行:

<argument>-d</argument>
<argument>/home/kerry</argument>
<argument>com.javatechnics.jni.test.osgi.HelloWorld</argument>

否则它会通过

javah "-d /home/kerry" com.javatechnics.jni.test.osgi.HelloWorld

其中“-d /home/kerry”是 javah 命令未知的单个参数。因此错误。