我的头撞在墙上已经有一个小时了:我正试图通过一个简单的属性(java.library.path
)来执行maven插件。目标是让它与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>
(我使用了一个旧版本,这样我就可以看到执行args,但它完全可以在1.2中复制)
然后右键单击我的文件并单击"Run“。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'.
我试过了
在phase
中使用exec:java -Djava.labary.path=instead
都失败了。我真的很茫然。
我猜这是在maven中使用JNI的缺点:您必须将其作为参数传递给您的测试、运行时、模块运行POM和您的父POM。
因此,我的问题是:如何将java.library.path
属性传递给已执行的文件?如果它与Netbeans运行文件功能集成在一起将会很好(因此,我不必在POM中更改类名,生成,然后运行)
发布于 2010-10-20 14:59:10
我不知道,但很明显,当你这么做的时候,你需要把这个财产放在第一位。我不认为这是必要的,因为类路径并没有立即执行,但显然它确实产生了影响。
要修复它,我只需在Properties > Actions >中更改它。
exec.classpathScope=${classPathScope}
exec.args=-Djava.library.path="native/win32-x86" -classpath %classpath ${packageClassName}
exec.executable=java
您不能在POM中指定它的原因是,NB通过命令行exec.args
传递类路径及其执行内容,这将覆盖POM中的内容。
虽然这可能是丑陋的和平台依赖的,但当您混合JNI和Maven时会发生这种情况。我看不出有什么别的办法。
发布于 2010-10-17 08:30:33
不确定您是否尝试过这样做,但是只要您需要在JVM级别上设置属性,就应该使用-Djava.library.path=/some/path
完成。
因此,为了将其指定为exec-maven-plugin,您可以编写如下所示:
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>exec-maven-plugin</artifactId>
<version>1.1</version>
<configuration>
<executable>java</executable>
<arguments>
<argument>-Djava.library.path=${java.library.path}</argument>
</arguments>
</configuration>
</plugin>
当然,您需要更新可执行文件并可能添加其他属性。
https://stackoverflow.com/questions/3951818
复制相似问题