如何从 ant 中的目标 "inherit"

How to "inherit" from a target in ant

我有一个如下形式的目标

<target name="runTool" depends="build">
    <java className="ToolMain" fork="true" clonevm="true" failonerror="true">
    <arg......>
    <jvmarg.....>
    ....
</target>

我想为调试路径添加一个额外的目标,它具有与此相同的所有其他参数,但有一个额外的参数用于侦听调试端口。

<target name="runTool-debug" depends="build">
...same program ....
......and same args......
<jvmarg value="-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"/>
</target>

在不复制整个目标的情况下实现此目标的最佳方法是什么?

定义一个名为 debug.flag 的 属性,当它被设置为 true:

时,用它来添加额外的参数
<target name="runTool" depends="build">
    <condition property="debug.jvmargs"
       value="-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n"
       else="">
          <equals arg1="${debug.flag}" arg2="true" />
    </condition>
    <java className="ToolMain" fork="true" clonevm="true" failonerror="true">
       <arg......>
       <jvmarg.....>
       <jvmarg value="${debug.jvmargs}" />
       ....
</target>

condition任务中,当debug.flag为真时,debug.jvmargs设置为-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n,否则为空。

要将 属性 设置为 true,您可以 运行 ant -Ddebug.flag=true ...