如何从Ant中的属性中的文件名列表创建可用文件列表?

时间:2013-11-21 15:46:36

标签: ant

我有一个属性,其中包含用分号分隔的jar列表。该属性的内容是从文件中读取的,而不是构建文件的一部分,但它看起来像这样:

<property name="jars" value="a.jar;b.jar;c.jar"/>

我想检查所有文件是否都可用。我知道如何手动使用:

<target name="opt">
  <echo message="jars: ${jars}"/>
  <condition property="found">
    <and>
      <available file="a.jar"/>
      <available file="b.jar"/>
      <available file="c.jar"/>
    </and>
  </condition>
  <echo message="found: ${found}"/>
</target>

但是如果文件列表在属性中并且无法写入构建文件,怎么办呢?

我需要“应用和映射可用文件”之类的内容。怎么办呢?

1 个答案:

答案 0 :(得分:2)

您可以使用pathconvert将文件字符串转换为可在文件集中使用的fileset-include-pattern; e.g:

<pathconvert property="includespattern" pathsep=",">
    <path path="a.jar;b.jar;c.jar;nonexisting.jar" />
    <globmapper from="${basedir}/*" to="*" handledirsep="true" />
</pathconvert>

<fileset id="your.fileset" dir="${basedir}" includes="${includespattern}"/>
    <!-- fileset will only contain existing files --> 
<echo>${toString:your.fileset}</echo>