包含java调用的Ant任务,接收将像系统属性参数一样设置的参数

包含java调用的Ant任务,接收将像系统属性参数一样设置的参数,java,ant,Java,Ant,我很抱歉这个标题,但我不明白如何用一句话来描述这个问题 我有下一个build.xml代码: <project name="Project" default="configure-and-run" basedir="."> <target name="run"> <java classname="Main"> <classpath location="."/&g

我很抱歉这个标题,但我不明白如何用一句话来描述这个问题

我有下一个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>
我的问题是:如何给出,或者更准确地说,如何获取“run”目标上的参数,并将这些参数提供给javaant任务

在上面的示例中,在主类启动后,我希望我可以通过以下方式获得“value2”:

提前谢谢

与此同时,我找到了一个解决办法:

我的父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>

...
参数的数量是可变的,这取决于您的需要

我希望这件事能像帮助我一样帮助别人


祝您愉快。

下面的Ant脚本使用
嵌套元素将附加属性传递到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>

不错。一个比我更好的答案。非常感谢。
<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>
<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>