'filematch' 处的非法值:patternSet{ 包括:[Index_*.xml] 不包括:[] }
Illegal value at 'filematch': patternSet{ includes: [Index_*.xml] excludes: [] }
我必须从文件 Index_*.xml 中搜索给定的字符串 "OK"。这个 * 是一个随机生成的 Id。此文件每 15 秒生成一次
这是我到目前为止所做的,但我收到异常“'filematch' 处的非法值:patternSet{ 包括:[Index_*.xml] 排除:[] }”
<?xml version="1.0" encoding="UTF-8"?>
<project name="StringSearch" default="wait-for-some-time" basedir=".">
<patternset id="filematch">
<include name="Index_*.xml"/>
</patternset>
<target name="wait-for-some-time">
<waitfor maxwait="15" maxwaitunit="second" timeoutproperty="notfound">
<resourcecontains refid="filematch" substring="OK" />
</waitfor>
<antcall target="success" />
</target>
<target name="success" depends="fail" unless="notfound">
<echo message="String OK found" />
</target>
<target name="fail" if="notfound">
<echo message="String not found" />
</target>
</project>
这里有什么问题的任何建议,或者如果这是不可行的,可能是另一种方法。
谢谢
新代码:
使用这个
<path id="pathtoIndexfile">
<fileset dir="${destination.dir}">
<include name="Index_*.xml"/>
</fileset>
</path>
<target name="wait-for-some-time">
<echo>${destination.dir}</echo>
<waitfor maxwait="1" maxwaitunit="minute" timeoutproperty="notfound">
<resourcecontains refid="pathtoIndexfile" substring="OK" />
</waitfor>
<antcall target="success" />
</target>
1) 例外是 "java.lang.ClassCastException: org.apache.tools.ant.types.Path cannot be cast to org.apache.tools.ant.types.Resource".
2) 对于 fileSet,例外是 "java.lang.ClassCastException: org.apache.tools.ant.types.FileSet cannot be cast to org.apache.tools.ant.types.Resource"
我是不是漏掉了一些罐子?
我通过以下两个步骤实现了解决方案:
- 第 1 步:将 index_*.xml 文件复制到 output.xml 文件
- 第 2 步:在 output.xml 文件中搜索确定
我临时编写的搜索字符串 "OK" 的代码是
<target name="StringSearch">
<sleep seconds="10"/>
<copy tofile="${destination.dir}/output.xml">
<fileset dir="${destination.dir}">
<include name="Index_*.xml"/>
</fileset>
</copy>
<sleep seconds="10"/>
<echo>destination.dir is: ${destination.dir}</echo>
<loadfile property="OK.exists" srcfile="${destination.dir}/output.xml">
<filterchain>
<linecontainsregexp>
<regexp pattern="OK"/>
</linecontainsregexp>
</filterchain>
</loadfile>
<echo>OK exists: ${OK.exists}</echo>
</target>
我必须从文件 Index_*.xml 中搜索给定的字符串 "OK"。这个 * 是一个随机生成的 Id。此文件每 15 秒生成一次
这是我到目前为止所做的,但我收到异常“'filematch' 处的非法值:patternSet{ 包括:[Index_*.xml] 排除:[] }”
<?xml version="1.0" encoding="UTF-8"?>
<project name="StringSearch" default="wait-for-some-time" basedir=".">
<patternset id="filematch">
<include name="Index_*.xml"/>
</patternset>
<target name="wait-for-some-time">
<waitfor maxwait="15" maxwaitunit="second" timeoutproperty="notfound">
<resourcecontains refid="filematch" substring="OK" />
</waitfor>
<antcall target="success" />
</target>
<target name="success" depends="fail" unless="notfound">
<echo message="String OK found" />
</target>
<target name="fail" if="notfound">
<echo message="String not found" />
</target>
</project>
这里有什么问题的任何建议,或者如果这是不可行的,可能是另一种方法。 谢谢
新代码: 使用这个
<path id="pathtoIndexfile">
<fileset dir="${destination.dir}">
<include name="Index_*.xml"/>
</fileset>
</path>
<target name="wait-for-some-time">
<echo>${destination.dir}</echo>
<waitfor maxwait="1" maxwaitunit="minute" timeoutproperty="notfound">
<resourcecontains refid="pathtoIndexfile" substring="OK" />
</waitfor>
<antcall target="success" />
</target>
1) 例外是 "java.lang.ClassCastException: org.apache.tools.ant.types.Path cannot be cast to org.apache.tools.ant.types.Resource".
2) 对于 fileSet,例外是 "java.lang.ClassCastException: org.apache.tools.ant.types.FileSet cannot be cast to org.apache.tools.ant.types.Resource"
我是不是漏掉了一些罐子?
我通过以下两个步骤实现了解决方案:
- 第 1 步:将 index_*.xml 文件复制到 output.xml 文件
- 第 2 步:在 output.xml 文件中搜索确定
我临时编写的搜索字符串 "OK" 的代码是
<target name="StringSearch">
<sleep seconds="10"/>
<copy tofile="${destination.dir}/output.xml">
<fileset dir="${destination.dir}">
<include name="Index_*.xml"/>
</fileset>
</copy>
<sleep seconds="10"/>
<echo>destination.dir is: ${destination.dir}</echo>
<loadfile property="OK.exists" srcfile="${destination.dir}/output.xml">
<filterchain>
<linecontainsregexp>
<regexp pattern="OK"/>
</linecontainsregexp>
</filterchain>
</loadfile>
<echo>OK exists: ${OK.exists}</echo>
</target>