私はこれについて約 1 時間壁に頭をぶつけていました。単純なプロパティ ( java.library.path
) を exec-maven-plugin に渡そうとしています。目標は、Netbeans の右クリック ファイル > ファイルの実行手順と統合することです。
だから私は私のPOMを次のように設定しました:
<build>
<plugins>
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1.1</version>
<configuration>
<environmentVariables>
<java.library.path>native/win32-x86</java.library.path>
</environmentVariables>
</configuration>
</plugin>
</plugins>
</build>
(私は実行引数を見ることができるように古いバージョンを使用していますが、1.2 で完全に再現可能です)
次に、ファイルを右クリックし、[ファイルの実行] をクリックします。Netbeans は次のプロセスを開始します。
W:\programming\apache-maven-2.2.1\bin\mvn.bat -Dexec.classpathScope=runtime -Dexec.args=-classpath %classpath org.quackedcube.camera.CameraDemo -Dexec.executable=C:\Program Files\Java\jdk1.6.0_21\bin\java.exe -Dnetbeans.execution=true -Dmaven.repo.local=W:\programming\maven-repo process-classes exec:exec
(元の完全なクラスパスの実行が変更されたexec:exec
ため、私の構成が適用されることを願っています)
しかし、結果として実行されるプログラムは次のようになるため、私の環境変数は明らかに無視されます。
Result of cmd.exe /X /C ""C:\Program Files\Java\jdk1.6.0_21\bin\java.exe" -classpath *snip* org.quackedcube.camera.CameraDemo" execution is: '1'.
私はもう試した
- environmentVariable タグ内で個別の Key タグと Value タグを使用する
- environmentVariables タグ内でキーと値のタグを直接使用します (試してみる価値があります)
- 相への結合
- Maven 引数として渡し、代わりに exec:java を使用する
- プロジェクト構成ページで -Djava.library.path=native/win32-x86 を実行引数および VM オプションとして渡す
そしてすべて失敗しました。私はここで本当に途方に暮れています。
これがmavenでJNIを使用することの欠点だと思います.テスト、ランタイム、モジュール実行POM、および親POMに引数として渡す必要があります。
私の質問:java.library.path
実行されたファイルにプロパティを渡すにはどうすればよいですか? Netbeans の Run File 機能と統合できればいいのですが (そのため、POM でクラス名を変更し、ビルドしてから実行する必要はありません)。