Java ant帮助,不同的文件集用于不同的目标

时间:2014-01-21 04:30:46

标签: java ant

我是Ant的新手,所以我在这里寻找创意。

我正在寻找一种方法来为每个ANT目标使用不同的文件集,而且我没有找到任何运气阅读ANT文档。具体来说,这就是我所拥有的:

<fileset id="MY-FILESET-ONE" dir="..." />
  <include name="**/*.java />
</fileset>
<fileset id="MY-FILESET-TWO" dir="..." />
  <include name="**/*.other />
</fileset>

<target name="BASETARGET" depends="...">
  <fileset refid="MY-FILESET-ONE" />
</target>

<target name="ANT-TARGET-ONE" depends="BASETARGET">
  <fileset refid="MY-FILESET-ONE" />
</target>

<target name="ANT-TARGET-TWO" depends="BASETARGET" />
  <fileset refid="MY-FILESET-TWO" />
</target>

我想要做的是让目标BASETARGET使用的文件集根据调用的目标而不同。如果调用ANT-TARGET-ONE,则使用不同的文件集,而不是调用ANT-TARGET-TWO。

这就像我想象的那样:

<target name="BASETARGET" depend="...">
  <fileset refid="${myvar} />
</target>

<target name="ANT-TARGET-ONE" depends="BASETARGET">
  <var name="myvar" value="MY-FILESET-ONE" />
</target>

<target name="ANT-TARGET-TWO">
  <var name="myvar" value="MY-FILESET-ONE" />
</target>

如何使用ant实现此目的?基本上我想控制哪些单元测试集运行取决于被调用的目标?我知道属性只能设置一次,所以我认为这不可行。我在这里查看了var:http://ant-contrib.sourceforge.net/tasks/tasks/variable_task.html

但是,试图从'myvar'中获取价值:

<fileset refid="${myvar} />

导致错误,我不确定如何实现这个目标!

1 个答案:

答案 0 :(得分:3)

“我想要做的是让目标BASETARGET使用的文件集根据调用的目标而有所不同。”

以下是一个小例子:您只需创建具有给定ID的文件集,并在基本目标中引用它们。

<project name="test" basedir=".">
  <target name="base">
    <copy todir="out">
    <fileset refid="files-to-copy"/>
  </copy>
  </target>

  <target name="def-fs-1" >
    <fileset id="files-to-copy" dir="in">
      <include name="a.txt" />
    </fileset>
  </target>

  <target name="def-fs-2" >
    <fileset id="files-to-copy" dir="in">
      <include name="b.txt" />
    </fileset>
  </target>

  <target name="t1" depends="def-fs-1,base" />
  <target name="t2" depends="def-fs-2,base" />
</project>