使用ANT,我正在尝试为我的构建创建一个zip文件,以便更新已发布的版本。要获取已更改文件的列表(这包括文件名中嵌入了版本字符串的.jar文件),我已完成以下操作:
我现在想要创建一个包含步骤3中已更改文件的文件集,但是包含原始更新集中的完整文件名。所以我寻找的文件集会发现foo.jar已经改变,并包含“foo_1.0.1.jar”。
然而,我正在努力弄清楚如何将diff'ed文件集与真实文件集(包括版本号)相匹配。怎么会在ANT中做到这一点?
答案 0 :(得分:0)
我发现如何做到这一点,(正如马克指出的那样)有些复杂的问题。我的问题是没有使用正确的基础来创建文件集。为此,我做了以下事情。
“update.offering”=更新代码的位置 “$ {temp.dir} / diffFiles”=位置我复制了从基本版本发现更改的文件,减去了文件名中的版本字符串
<copy todir="${temp.dir}/outFiles" includeemptydirs="false">
<fileset dir="${update.offering}" id="final.set">
<present present="both" targetdir="${temp.dir}/diffFiles">
<firstmatchmapper>
<regexpmapper from="(.*)(_[0-9]\..*)(\..*)" to="\1\3"/>
<mapper type="glob" from="*.*" to="*.*"/>
<mapper type="glob" from="*" to="*"/>
</firstmatchmapper>
</present>
</fileset>
</copy>
我需要做的是使用更新文件的位置作为新文件集的基础,然后使用正则表达式映射器匹配目标目录中的文件,该映射器允许我匹配不包括版本字符串的文件名。我还包括两个glob映射器,以确保我得到的文件没有名称不同的版本字符串。