我有一个phing构建目标,我想在我的项目基础下的每个目录上运行。 我正在使用带有文件集的foreach任务在每个目录上运行目标。 我遇到的问题是包含了基本目录,文件名为“”。

这是目录结构的示例:

One
Two
build.xml

这是一个要测试的简单构建文件:

<?xml version="1.0" encoding="UTF-8"?>

<project name="Test" default="test">

    <target name="test">
        <foreach param="filename" absparam="absfilename" target="echo-file">
            <fileset dir="${project.basedir}">
                <include name="*" />
                <exclude name="*.*" />
            </fileset>
        </foreach>
    </target>

    <target name="echo-file">
        <echo message="filename: ${filename}" />
        <echo message="absfilename: ${absfilename}" />
    </target>

</project>

这是构建的结果(请注意第一个条目为空文件名):

Buildfile: /Users/dmertl/test/build.xml

Test > test:

  [foreach] Calling Buildfile '/Users/dmertl/test/build.xml' with target 'echo-file'

Test > echo-file:

     [echo] filename: 
     [echo] absfilename: /Users/dmertl/test/
  [foreach] Calling Buildfile '/Users/dmertl/test/build.xml' with target 'echo-file'

Test > echo-file:

     [echo] filename: One
     [echo] absfilename: /Users/dmertl/test/One
  [foreach] Calling Buildfile '/Users/dmertl/test/build.xml' with target 'echo-file'

Test > echo-file:

     [echo] filename: Two
     [echo] absfilename: /Users/dmertl/test/Two

===============>>#1 票数:0 已采纳

不知道我是如何第一次不知道这个的,但是这是解决方案:

<foreach param="filename" absparam="absfilename" target="echo-file">
    <fileset dir="${project.basedir}">
        <include name="*" />
        <exclude name="/" />
        <exclude name="*.*" />
    </fileset>
</foreach>

在文件集中排除“ /”将删除根目录。

  ask by dmertl translate from so

未解决问题?本站智能推荐: