Ant复制空目录

Dav*_*ong 7 ant copy

我仍然是蚂蚁的新手,虽然我知道coldfusion,但我不太了解java约定,但我知道ant是使用java约定构建的.话虽这么说我正在开发一个将项目复制到临时文件夹的ant进程,更改项目中的一些代码,然后将临时目录推送到FTP.我试图从副本中排除我的所有git,eclipse和ant文件,这样我的测试平台就不会混乱.我设置了一个目标进行复制,但似乎Ant不仅忽略了我的排除(我确定我写错了),但它只是复制顶级目录和文件.没有递归副本.我目前的目标是:

<target name="moveToTemp" depends="init">
    <delete dir="./.ant/temp" />
    <mkdir dir="./.ant/temp" />
    <copy todir="./.ant/temp">
        <fileset dir=".">
            <include name="*" />
            <exclude name=".*/**" />
            <exclude name=".*" />
            <exclude name="build.xml" />
            <exclude name="settings.xml" />
            <exclude name="WEB-INF/**" />
        </fileset>
        <filterset>
            <filter token="set(environment='design')" value="set(environment='testing')" />
        </filterset>
    </copy>
</target>
Run Code Online (Sandbox Code Playgroud)

我知道我不是在做我的排除权利,但我不知道我做错了什么.我看到Ant中一直使用双星号(**),但我无法弄明白

mar*_*ton 7

默认情况下,Ant文件集将(递归地)包含指定目录下的所有文件,相当于:

<include name="**/*" />
Run Code Online (Sandbox Code Playgroud)

这是隐含的包含.如果提供include,它将覆盖隐含的include.

你的包括

<include name="*" />
Run Code Online (Sandbox Code Playgroud)

说' 匹配文件集目录中的任何文件 ',但这不包括遍历子目录,因此你的问题.仅复制文件和顶级目录.

有关基于目录的任务,请参阅Ant文档中的模式:**匹配任何目录树(零个或多个目录).

对于您的情况,您应该能够简单地删除'include',以便隐含的'include all'适用.

建议你也调查一下这个defaultexcludes任务,它可以让你为整个项目设置一次这样的东西.