我一直在用头撞墙大约一个小时:我正在尝试将一个简单的属性 ( 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'.
我试过了
- 在环境变量标签内使用单独的键和值标签
- 直接在 enviornmentVariables 标签内使用键和值标签(值得一试)
- 绑定到一个阶段
- 作为 maven arg 传递并使用 exec:java 代替
- 在项目配置页面中将 -Djava.library.path=native/win32-x86 作为运行参数和 VM 选项传递
一切都失败了。我在这里真的很茫然。
我想这是在 Maven 中使用 JNI 的缺点:您必须将作为参数传递给您的测试、运行时、模块运行 POM 和父 POM。
所以我的问题是:如何将java.library.path
属性传递给已执行的文件?如果它与 Netbeans 运行文件功能集成会很好(因此我不必更改 POM 中的类名,构建,然后运行)