我仍然是蚂蚁的新手,虽然我知道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中一直使用双星号(**),但我无法弄明白
默认情况下,Ant文件集将(递归地)包含指定目录下的所有文件,相当于:
<include name="**/*" />
Run Code Online (Sandbox Code Playgroud)
这是隐含的包含.如果提供include,它将覆盖隐含的include.
你的包括
<include name="*" />
Run Code Online (Sandbox Code Playgroud)
说' 匹配文件集目录中的任何文件 ',但这不包括遍历子目录,因此你的问题.仅复制文件和顶级目录.
有关基于目录的任务,请参阅Ant文档中的模式:**匹配任何目录树(零个或多个目录).
对于您的情况,您应该能够简单地删除'include',以便隐含的'include all'适用.
建议你也调查一下这个defaultexcludes任务,它可以让你为整个项目设置一次这样的东西.