我很抱歉这个标题,但我无法弄清楚如何用一句话来描述这个问题。
我有下一个build.xml代码:
<project name="Project" default="configure-and-run" basedir=".">
<target name="run">
<java classname="Main">
<classpath location="."/>
<sysproperty key="key1" value="value1"/>
</java>
</target>
<target name="configure-and-run">
<antcall target="run">
<param name="key2" value="value2"/>
</antcall>
</target>
</project>
在这种情况下,对键key1-> value1可以在java代码下获得:
System.getProperty("key1");
我的问题是:如何提供,或者更确切地说,如何获取“运行”目标上的参数,并将这些参数提供给java ant任务?
在上面的例子中,在Main类启动之后,我希望我有可能获得“value2”:
System.getProperty("key2");
提前致谢。
与此同时,我找到了一个解决方法:
我的父ant任务有一个参数列表。 让我复制并修改上面的代码:
<project name="Project" default="configure-and-run" basedir=".">
<target name="run">
<java classname="Main">
<classpath location="."/>
<sysproperty key="${prop1key}" value="${prop1value}"/>
...
<sysproperty key="${propNkey}" value="${propNvalue}"/>
</java>
</target>
<target name="configure-and-run">
<antcall target="run">
<param name="prop1key" value="myKey"/>
<param name="prop1value" value="myValue"/>
</antcall>
</target>
</project>
参数数量可变,具体取决于您的需求。
我希望这件事能帮助别人,就像它帮助了我一样。
度过愉快的一天。
答案 0 :(得分:1)
以下Ant脚本使用<syspropertyset>
<java>
的嵌套元素将其他属性传递给Java程序。
<target name="run">
<java classname="Main">
<classpath location="."/>
<sysproperty key="key1" value="value1"/>
<syspropertyset refid="additional-java-sysproperties"/>
</java>
</target>
<target name="configure-and-run">
<property name="key2" value="value2"/>
<propertyset id="additional-java-sysproperties">
<propertyref name="key2"/>
</propertyset>
<antcall target="run">
<reference refid="additional-java-sysproperties"/>
</antcall>
</target>