我遇到了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不支持copy
和replacetoken
等。但我们需要完全不足......
这样的事情:
<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更改任何内容?
答案 0 :(得分:5)
我不明白你想要做什么,或者你的意思是“副本和替换语言等不被subant支持”。 subant
任务用于在多个目录中调用Ant构建。例如,假设您有一个属性${top}
,该属性指向包含名为one
,two
和three
的子目录的目录。然后你可以使用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不适合你?