如何在Ant中添加类似于Java -D的系统属性

11

我需要设置 java -Djava.library.path=/some/path,并且我想在运行ant脚本时进行设置以构建我的jar文件。

我认为我必须使用

<sysproperty key="java.library.path" value="/some/path"/>

但它不起作用。我无法使语法正常工作。我唯一在谷歌上找到的是 sysproperty 与

结合使用。

 <java classname>

但这对我来说毫无意义。

我不确定这是否相关,但我正在使用Ant创建一个EAR并在JBoss中部署此EAR。

3个回答

9

这里有一个示例Ant目标run,它执行example.jar并传递一个系统属性,其中key="java.library.path"value="/some/path"

<target name="run">
    <java jar="example.jar" fork="true">
        <jvmarg value="-Djava.library.path=/some/path"/>
    </java>
</target>

虽然我还没有测试过这个,但我希望它是正确的,所以我会接受这个。 - Shervin Asgari

2

你尝试运行了吗?

ant -Djava.library.path=/some/path ...  ?

没有,我还没有尝试过这个。但是我正在Eclipse中运行Ant。不确定如何在Eclipse中添加该参数。 - Shervin Asgari
如果有选择,我宁愿避免那样做。 - Shervin Asgari
好的,我尝试了你建议的方法,但仍然不起作用。当我打印出System.getProperty("java.library.path")时,我仍然没有得到我添加的值,就像其他很多事情一样。 - Shervin Asgari
那些“其他很多东西”是怎么放在那里的?通常情况下这不会被设置。 - Omry Yadan
我不知道。我猜是JBoss。 我现在的值是: 11:44:55,656 INFO [OpenOfficeService] java.library.path为:/usr/lib/jvm/jdk1.5.0_22/jre/lib/i386/server:/usr/lib/jvm/jdk1.5.0_22/jre/lib/i386:/usr/lib/jvm/jdk1.5.0_22/jre/../lib/i386:/usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/i386/client:/usr/lib/jvm/java-6-sun-1.6.0.15/jre/lib/i386:/usr/lib/xulrunner-addons:/usr/lib/xulrunner-addons然而,我想添加/usr/lib/ure/lib。 - Shervin Asgari
如果你找出是谁设置了这个值,你就有机会将其配置为设置其他内容。你是如何运行ant的? - Omry Yadan

-2

我找到了解决这个问题的方法。

似乎由于我们使用ant在应用服务器(Web服务器)中创建和部署应用程序,在我们的情况下是JBoss,我们必须修改

run.sh
并在那里添加 java.library.path 作为VM参数。

像这样:

JBOSS_NATIVE_DIR="$JBOSS_NATIVE_DIR:/usr/lib/ure/lib/"
JAVA_OPTS="$JAVA_OPTS -Djava.library.path=$JBOSS_NATIVE_DIR"

因此,在ant中传递VM参数是不正确的。


4
这并没有真正回答如何在ant中传递系统属性的一般问题。 - dokaspar

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接