我在Ant构建文件中使用FileSet,该文件被作为外部源的输入读取。如何检查FileSet中是否存在特定文件?
例如,如果正在读取的FileSet是@font-face {
font-family: 'Comfortaa Regular';
src: url('Comfortaa.eot');
src: local('Comfortaa Regular'),
local('Comfortaa'),
url('Comfortaa.ttf') format('truetype'),
url('Comfortaa.svg#font') format('svg');
}
,我应该能够在其中找到MyClass.java。但是,如果FileSet为**/src/*.java
,则MyClass.java不在其中。
即使有一种方法我可以扩展FileSet并执行包含检查的字符串,那么这应该可行。
有很多方法可以在FileSet中创建选择器,但是我找不到任何可以告诉如何在给定的FileSet中查找/选择文件的方法。所以我不能用一个我可以尝试的例子来支持它。任何帮助将非常感激。
答案 0 :(得分:3)
使用restrict
资源集合仅包含指定文件:
<project ... xmlns:rsel="antlib:org.apache.tools.ant.types.resources.selectors">
...
<restrict id="filtered.fileset">
<fileset refid="source.fileset"/>
<rsel:name name="MyClass.java"/>
</restrict>
<condition property="file.found" value="yes">
<resourcecount when="greater" count="0" refid="filtered.fileset" />
</condition>
答案 1 :(得分:0)
我通过完成整个Fileset与Fileset的交集来实现它,该Fileset只包含我正在查找的这个文件,并验证计数是否等于1.其他条件可以很容易地进行AND-ed或OR-ed。
<target name="checkSomething">
<condition property="something.present">
<and>
<available file="/src/theFile"/>
<resourcecount when="equal" count="1">
<intersect>
<fileset dir="${src.dir}" includes="*"/>
<fileset dir="${src.dir}" includes="**/src/something.java"/>
</intersect>
</resourcecount>
</and>
</condition>
<echo message="Something present: ${something.present}"/>
</target>