gpt4 book ai didi

java - 传递环境变量以在 Maven 中执行进程

转载 作者:搜寻专家 更新时间:2023-11-01 01:57:54 28 4
gpt4 key购买 nike

我为此苦苦思索了大约一个小时:我试图将一个简单的属性 (java.library.path) 传递给 exec-maven-plugin。目标是让它与 Netbeans 集成 Right Click file > Run File 过程。

所以我这样设置我的 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'.

我试过了

  • 在 enviornmentVariable 标签内使用单独的 Key 和 Value 标签
  • 直接在 enviornmentVariables 标签内使用键和值标签(值得一试)
  • 绑定(bind)到一个阶段
  • 作为 maven arg 传递并使用 exec:java 代替
  • 在项目配置页面中将 -Djava.library.path=native/win32-x86 作为运行参数和 VM 选项传递

全部都失败了。我真的在这里不知所措。

我想这就是在 maven 中使用 JNI 的缺点:您必须将参数作为参数传递给您的测试、您的运行时、您的模块运行 POM 和您的父 POM。

所以我的问题是:如何将 java.library.path 属性传递给已执行的文件?如果它与 Netbeans 运行文件功能集成会很好(因此我不必更改 POM 中的类名,构建,然后运行)

最佳答案

不知道这一点,但显然在执行此操作时您需要将此属性放在首位。我不认为这是必要的,因为类路径不会立即执行,但显然它确实有所作为。

要修复它,我只是在“项目属性”>“操作”>“通过 Main 运行文件”中对此进行了更改

exec.classpathScope=${classPathScope}
exec.args=-Djava.library.path="native/win32-x86" -classpath %classpath ${packageClassName}
exec.executable=java

您无法在 POM 中指定它的原因是 NB 通过命令行 exec.args 传递类路径及其执行内容,这会覆盖您的 POM 中的内容。

虽然这可能很丑陋并且依赖于平台,但是当您混合使用 JNI 和 Maven 时会发生这种情况。我真的没有其他方法可以看到。

关于java - 传递环境变量以在 Maven 中执行进程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3951818/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com