我一直在墙上撞了一个小时:我正在尝试通过一个简单的财产(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>

(我使用旧版本,以便可以看到执行ARG,但是它可以完全可重现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标签中使用单独的密钥和值标签
  • 直接在EnviorNmentVariables标签中使用键和值标签(值得一试)
  • 结合一相
  • 作为maven arg并使用exec:java代替
  • 通过-djava.library.path =本机/win32 -x86作为run参数和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通过classPath及其通过命令行执行什么 exec.args, ,它覆盖了您的POM中的内容。

虽然这可能是丑陋和平台依赖的,但当您将JNI和Maven混合时会发生什么。我没有真正看到的另一种方式。

其他提示

不知道您是否尝试过,但是只要您需要在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>

当然,您需要更新可执行文件,并添加另一个属性。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top