2010-06-11 30 views
2

使用Ant,我想将一个项目中的文件列表复制到另一个项目中,其中每个项目具有相同的目录结构。有没有办法让以下工作?Ant:复制文件相对列表的最简单方法

<project name="WordSlug" default="pull" basedir="."> 

    <description> 
     WordSlug: pull needed files 
    </description> 

    <property name="prontiso_home" location="../../prontiso/trunk"/> 

    <!-- I know this doesn't work, what's the missing piece? --> 
    <target name="pull" description="Pull needed files"> 
     <copy todir="." overwrite="true"> 
     <resources> 
      <file file="${prontiso_home}/application/views/scripts/error/error.phtml"/> 
      <file file="${prontiso_home}/application/controllers/CacheController.php"/> 
      <!-- etc. --> 
     </resources> 
     </copy> 
    </target> 

</project> 

成功自动导出路径:

${prontiso_home}/application/views/scripts/error/error.phtml copied to ./application/views/scripts/error/error.phtml 
${prontiso_home}/application/controllers/CacheController.php copied to ./application/controllers/CacheController.php 

谢谢!

回答

2

尝试创建一个文件集:

<copy todir="." overwrite="true"> 
    <fileset dir="${prontiso_home}/application/"> 
     <include name="views/scripts/error/error.phtml,controllers/CacheController.php"/> 
    </fileset> 
</copy> 

然而,一般来说,您使用的文件集定义文件复制的模式,如“复制我的应用程序的所有PHP文件目录:

<fileset dir="${prontiso_home}/application/"> 
     <include name="**/*.phtml,**/*.php"/> 
    </fileset> 
+0

谢谢,Shaun。'fileset'就是答案。 – 2010-06-11 17:54:26

0

OP在这里。我有一个工作的解决方案:

<project name="WordSlug" default="pull" basedir="."> 

    <description> 
     WordSlug: pull needed files 
    </description> 

    <property name="prontiso_home" location="../../prontiso/trunk"/> 

    <target name="pull" description="Pull needed files"> 
     <copy todir="." overwrite="true" verbose="true"> 
     <fileset dir="${prontiso_home}"> 
      <or> 
      <filename name="/application/views/scripts/error/error.phtml"/> 
      <filename name="/application/controllers/CacheController.php"/> 
      </or> 
     </fileset> 
     </copy> 
    </target> 

</project>