我是ANT的新手。
我有一个非常具体的场景需要处理:
STEP-1:我需要在某些ear文件中查找文件名的模式。如果模式匹配,那么我需要提取这些文件。步骤2:如果从某个ear(类似于zip文件)文件中提取了任何文件,那么我需要搜索另一组文件,并复制这些文件。
要处理的情况是"如何识别文件是否是从特定归档中复制的",如果找到,则转到步骤2,否则转到下一个归档。
我已经实现了第1步,但不知道如何实现第2步。
第1步
<!-- Set via arguments passed -->
<patternset id="pattern.needtocopy" includes="${needtocopyfile.pattern}" excludes="${ignore.pattern}">
</patternset>
<target name="get-binaries-from-baseline">
<for param="binary">
<path>
<fileset dir="${baseline.dir}/target/aaa/bbb/ccc" includes="*.ear" />
</path>
<sequential>
<basename file="@{binary}" property="@{binary}.basename" />
<unzip src="@{binary}" dest="${baseline.dir}">
<patternset refid="pattern.needtocopy" />
<mapper type="flatten" />
</unzip>
</sequential>
</for>
</target>
第2步:
在这方面需要帮助。
谢谢。
我使用了一个基于我能找到的资源的groovy脚本,解决了同样的问题。
<target name="findJars">
<zipfileset id="found" src="${ear-name}">
<patternset refid="${patternsetref}" />
</zipfileset>
<groovy>
project.references.found.each {
println it.name
println project.properties.'ear-name'
println project.properties.'dest.dir'
}
</groovy>
</target>
然后我添加了另一个任务,它将这个文件名和ear文件名作为输入,并根据文件到搜索模式提取相关的jar。