【问题标题】:How to exclude base directory from phing/ant FileSet如何从 phing/ant FileSet 中排除基目录
【发布时间】:2013-04-10 21:09:20
【问题描述】:

我有一个 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

【问题讨论】:

    标签: ant phing fileset build-tools


    【解决方案1】:

    不知道我第一次怎么没弄明白,但这里是解决方案:

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

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

    【讨论】:

      猜你喜欢
      • 2011-03-17
      • 1970-01-01
      • 2011-01-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-27
      • 2021-11-22
      相关资源
      最近更新 更多