Как передать аргумент -h в плагин компилятора maven для создания заголовочных файлов JNI - PullRequest
0 голосов
/ 07 ноября 2018

Я уже пытался передать этот аргумент в 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] -------------------------------------------- ----------------------------

[ИНФО] Общее время: 2,936 с

[INFO] Завершено в: 2018-11-07T14: 52: 49 + 05: 30

[ИНФО] Окончательная память: 9M / 155M

[INFO] -------------------------------------------- ----------------------------

[ОШИБКА] Не удалось выполнить цель org.apache.maven.plugins: maven-compiler-plugin: 3.7.0: compile (default-compile) для проекта adiesha-native: Фатальная ошибка компиляции: недопустимый флаг: -h. -> [Помощь 1]

Есть ли другой способ сделать это с помощью maven или мне нужно вручную создавать их, используя "javac -h dir"

Любая помощь будет принята с благодарностью

1 Ответ

0 голосов
/ 19 января 2019

У меня была та же ошибка "неверный флаг: -h цель / заголовки" с моей сборкой maven.

Я попробовал предложение от Gyro Gearless выше. Я разделил мои первоначальные «-h цель / заголовки» на «-h» и «цель / заголовки». Это решило мою проблему. Теперь все заголовки jni в моем проекте генерируются правильно и помещаются в 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. Обратите внимание, что 'mvn clean' не удалит ранее сгенерированные заголовки.

...