使用Phing复制文件
使用Phing的主要原因之一是在另一个目录中创建项目的副本,然后将其用作分发副本。您的工作目录可能包含许多最终版本中不需要的测试代码。
要使用Phing将文件从一个目录复制到另一个目录,您需要使用copy元素。这是一个简单的示例,其中将单个文件从一个目录复制到另一个目录。
这并不完全有用,因为您需要为要传输的每个文件创建一个规则,可能只有几个。要复制目录,您需要设置一个文件集元素。这将包含要复制的文件和目录的列表。文件集元素可以包含用于控制将使用哪些文件的包含和排除规则。这是文件集的示例,通常位于项目元素的根目录下。
在此示例中,我们排除了该文件中的任何文件,以及子文件名以_test.php结尾的任何子目录,因为这些文件是我们不想复制的测试文件。然后,我们包括任何包含.php扩展名的文件。因为任何排除规则都将覆盖任何包含规则,所以这将按预期工作,并且只能跨.php文件进行复制,文件名末尾不带_test。
您还可以使用以下包含规则来指定目录及其中的所有内容。
前面的文件集示例也可以编写如下,尽管我不建议这样做,因为它可能会变得很复杂!
为了对该文件集做一些有用的事情,我们可以再次使用copy元素。这里的主要区别是我们使用copy元素的todir属性来指定副本的目的地。
如果运行此命令,它将把所有文件(无例外)和目录从当前目录复制到名为myProject_build的目录中。如果目标目录不存在,则phing将创建它。这很好用,但是如果您第二次运行此代码,它将把myProject_build复制到自身中,并且您将获得一个递归目录结构,该目录结构很杂乱,可能不是您想要的。有两种方法可以防止这种情况发生。第一种是将项目存储在build.xml文件的子目录中,并相应地更改文件集规则。第二种方法是在文件集上添加排除规则,以专门忽略构建目录及其所有内容。
以这种方式使用fileset和copy元素允许您在复制文件时对文件执行操作。例如,这可能是使用令牌替换将版本号添加到每个文件的顶部。
使用Phing进行自动构建