我有一个属性,其中包含用分号分隔的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>
但是如果文件列表在属性中并且无法写入构建文件,怎么办呢?
我需要“应用和映射可用文件”之类的内容。怎么办呢?
答案 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>