2015-12-03 8 views
1

Я использую FileSet в файле сборки Ant, который считывается как вход из внешнего источника. Как проверить, существует ли определенный файл в FileSet?Проверьте, существует ли файл в Ant FileSet

Например, если прочитанный FileSet равен **/src/*.java, я должен найти в нем MyClass.java. Однако, если FileSet равен **/src/AClass.java, **/src/BClass.java, тогда MyClass.java не находится в нем.

Даже если есть способ, я могу развернуть FileSet, а строка содержит проверку, тогда это должно работать.

Существует множество способов создания селекторов в FileSet, но я ничего не могу найти, что говорит о том, как найти/выбрать файл в данном FileSet. Поэтому я не могу поддержать это с примером, который я мог бы попробовать. Любая помощь будет очень оценена.

ответ

0

Я осуществил что делает пересечение полного набора файлов с набора файлов, содержащих только этот файл, который я ищу, и проверить, что если счет равен 1. Другие условия могут быть легко И-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> 
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> 
Смежные вопросы