Phing中的FilterChain元素
FilterChain元素是Phing真正发挥作用的地方。该元素将允许您更改文件集文件的内容。范围从简单的注释剥离到替换值和许多其他过滤器。
filterset可以完成的最简单的操作之一是从有问题的文件中删除所有注释。取得以下带有两个注释的PHP文件。
可以使用stripphpcomments元素将这些注释从文件中删除。通过以下方式将其添加到copy元素。
PHP文件现在看起来像这样。
尽管这可能是噩梦,但如果有必要减小文件大小,这可能会很有用。如果您打算出售您的PHP软件,则可能要这样做,因为这会使您的客户进行更改变得更加困难。
filterchain的另一个用途是替换代码库中的值。如果要设置版本号或默认数据库密码,此功能很有用。要用值替换令牌,您需要一个可以存储该值的属性。然后,您需要进入源代码,并用@符号内的属性名称替换要替换的术语的任何实例。取得以下PHP档案。
要将myProperty属性替换为“test”的值,您需要使用replacetokens元素,该元素可以包含一个或多个令牌元素。以下build.xml文件将用值“test”替换键myProperty的所有实例。
现在,您将在构建输出中看到类似以下内容的内容:
[filter:ReplaceTokens]Replaced"@[email protected]"with"test"
现在,每个文件中的令牌都将使用属性的值进行更改。
要查看可用的核心过滤器列表,请查看Phing网站上的Phing过滤器附录。您甚至可以做一些奇怪的事情,例如只包含每个文件的前三行,并在每行后附加单词“wibble”。
我可以看到为什么headfilter在某些情况下可能有用,在这些情况下您想测试构建文件是否将正确的文件添加到每个文件夹/zip文件中而不包括整个内容。但是,您将需要在哪里在每行后面附加一个字符串?
最后一件事,如果您在构建文件中更改了替换值的任何内容,请记住,通过不复制已复制且未更改的任何文件来进行phing可以节省时间。这意味着,如果您更改过滤器并进行更新,则除非执行以下一项或两项操作,否则您将看不到任何更改:
手动删除目标目录中的所有文件。
将覆盖属性添加到element(s)目标中的副本element(s)。这将迫使phing每次都简单地覆盖文件,即使它们没有更改。
使用Phing进行自动构建