Subant目标而不是ant

时间:2009-11-17 19:24:13

标签: ant

我遇到了subant问题而且没有任何想法。有人可以帮忙吗? 使用Ant替换其他字符串(即“Foo”和“1.2”的Productname和Version),我使用了这样的东西:

<copy todir="${Foo_Home}\cm_builds\Deployment\Database\Production.win\">
    <fileset dir="${Foo_Home}\Deployment\Database\Production.win\"
             includes="**/*.sql,**/*.cmd"/>
    <filterset>
        <filter token="PRODUCTNAME" value="Foo"/>
        <filter token="VERSION" value="1.2"/>
    </filterset>
</copy>

我们可以通过subant做同样的事情吗?因为subant不支持copyreplacetoken等。但我们需要完全不足......

这样的事情:

<subant target="build" genericantfile="build.xml">
  <dirset dir="${Foo_Home}\cm_builds\Deployment\Database\Production.win\"
          includes ="**/*.sql">
</subant>

这是使用subant的正确方法吗? (假设我们有几个这样的目标)

http://ant.apache.org/manual/Tasks/subant.html求助=)

更新

我怀疑我以错误的方式使用subant。也许没有必要尝试使subant运行与ant相同的任务?也许我应该在一个必需的目录中制作subant run ant并且不要为ant更改任何内容?

2 个答案:

答案 0 :(得分:5)

我不明白你想要做什么,或者你的意思是“副本和替换语言等不被subant支持”。 subant任务用于在多个目录中调用Ant构建。例如,假设您有一个属性${top},该属性指向包含名为onetwothree的子目录的目录。然后你可以使用subant任务在每个子目录中调用Ant,如下所示:

<subant genericantfile="${top}/build.xml" target="build">
    <!-- include all subdirectories in ${top} -->
    <dirset dir="${top}"/>
</subant>

这在命令提示符下大致相当于以下命令(假设目录top位于/work/top):

$ cd /work/top
$ cd one
$ ant -f ../build.xml build
$ cd ../two
$ ant -f ../build.xml build
$ cd ../three
$ ant -f ../build.xml build

最后,您对dirset的使用不正确。 dirset是一组目录,而不是文件,因此上面的dirset将包含以.sql结尾的所有目录,我怀疑这不是你的想。

答案 1 :(得分:0)

为什么replace task不适合你?