Ant:文件集“dir”属性,具有运行时扩展的完整路径

时间:2010-09-17 06:17:17

标签: java ant

假设我的文件系统看起来像这样:

  • C:\东西\的build.xml
  • C:\东西\ MyFolder文件\ library1.jar
  • C:\东西\ MyFolder文件\ library2.jar

在build.xml中,我想定义一个如下所示的路径:

<path id="some.id">
    <fileset dir="myfolder">
        <include name="**/*.jar"/>
    </fileset>
</path>

通常情况下工作正常。但是,我正在调用我自己的自定义Ant任务,它将继承任何引用(包括路径“some.id”),并且自定义Ant任务将调用生活在不同基础上的build.xml。因此,文件集中的“dir”属性不再有效。

有没有办法定义“dir”,这样无论第二个build.xml在哪里都能保持有效?

我基本上想做这样的事情:

<fileset dir="${expand.current.directory}/myfolder">

因此,当我调用第二个build.xml时,它将理解“dir”属性是以下位置:

<fileset dir="c:\stuff\myfolder">

编辑:此外,我想要一个解决方案,允许我将“stuff”项目从一台机器复制到另一台机器,而无需更改构建。例如,如果“stuff”项目位于C:驱动器上,并且我将项目复制到另一台机器上的D:驱动器,我希望构建继续工作,而不必进入构建并更改字母C到字母D.

2 个答案:

答案 0 :(得分:3)

我认为你是在${user.dir}属性之后 - 这是当前的工作目录。

所有java System.properties都可用作ant属性。

答案 1 :(得分:1)

选项1: 您可以定义Ant属性。

在文件的初始化时,您可以定义此属性:

<property name="myproject.root.path" location="C:/stuff/"/>

然后,使用它:

<fileset dir="${myproject.root.path}/myfolder">

选项2: 您还可以在外部build.properties文件中定义它,该文件位于build.xml文件所在的同一文件夹中。

文件C:\ stuff \ build.properties

myproject.root.path=C:/stuff/

并且,要使用此文件,您必须在Ant XML文件中添加此行(在任务定义之前推荐):

<property file="build.properties"/>

包含此文件后,您可以使用项目中的属性,方法与选项1相同:

<fileset dir="${myproject.root.path}/myfolder">

您可以添加多个属性文件。

请注意,路径是使用斜杠定义的,而不是反斜杠。