带文件集的 phing toString 方法

phing toString method with fileset

Phing 的文档显示了一个示例,该示例应使用 ID 为“sourcefiles”的文件集显示特定文件夹的所有 php 文件列表:

https://www.phing.info/guide/chunkhtml/ch04s02.html (见 4.2.4)

所以我用这个任务组合了一个构建-xml:

<project default="countFile">
    <property name="BUILD_DIR" value="./buildTest"/>
    <target name="dist" depends="build">
        <fileset id="sourcefiles" dir="${BUILD_DIR}">
            <include name="./*.*" />
        </fileset>
        <echo>files in build dir: ${toString:sourcefiles}</echo>
        <echo>build dir: ${BUILD_DIR}</echo>
        <echo>OS: ${os.name}</echo>
    </target>
</project>

我还尝试了文档中的单行版本:<fileset id="sourcefiles" dir=".build" includes="**/*.txt"/>

但是,输出只是美元花括号文本作为文本:'${toString:sourcefiles}' 而不是其插值结果。

纠正它的正确方法是什么?这是文档中的错误吗?
(我不是部署新手,而是 phing 新手。)

您的文件集中的 include 元素具有无效模式。来自 documentation

In patterns, one asterisk (*) maps to a part of a file/directory name within a directory level. Two asterisks (**) may include above the "border" of the directory separator.

您的示例变为:

<project default="countFile">
    <property name="BUILD_DIR" value="./buildTest"/>
    <target name="dist" depends="build">
        <fileset id="sourcefiles" dir="${BUILD_DIR}">
            <include name="*.*" />
        </fileset>
        <echo>files in build dir: ${toString:sourcefiles}</echo>
        <echo>build dir: ${BUILD_DIR}</echo>
        <echo>OS: ${os.name}</echo>
    </target>
</project>

并且会输出如下内容:

Buildfile: C:\Users\XXX\test\build.xml
[autoloader] Loading autoloader from C:\Users\XXX\test/bootstrap.php
      [php] Evaluating PHP expression: ini_set('error_reporting', -1);
      [php] Evaluating PHP expression: ini_set('memory_limit', -1);
      [php] Evaluating PHP expression: ini_set('date.timezone', 'UTC');

Phing Build Tests > test:

     [echo] files in build dir: bootstrap.php;build.xml;phpunit-sparse.xml;phpunit.xml

BUILD FINISHED

Total time: 0.4785 seconds



Build finished at 30.11.2020 23:19 with exit code 0.

另请注意,${toString:XXX} 功能仅适用于 phing 3.x