使用 ANT,我正在尝试为我的构建创建一个 zip 文件,以便更新到已发布的版本。为了获取已更改文件的列表(这包括文件名中嵌入了版本字符串的.jar文件),我已完成以下操作:
- 将基本文件集复制到临时位置,并从文件名中删除版本字符串。 即 foo_1.0.0.jar -> foo.jar
- 将更新的一组文件复制到临时位置,并从文件名中删除版本字符串。 即 foo_1.0.1.jar -> foo.jar
- 使用"不同"选择器创建一个文件集,以比较已删除版本号的两个目录。
我现在想要创建一个文件集,其中包含步骤 3 中更改的文件,但使用原始更新集中的完整文件名。所以我寻找的文件集会发现 foo.jar 已经更改,并包含"foo_1.0.1.jar"。
但是,我正在努力弄清楚如何将差异文件集与包括版本号在内的真实文件集相匹配。在蚂蚁中如何做到这一点?
我找到了如何做到这一点,(正如马克指出的那样)有点复杂的问题。我的问题是没有使用正确的基础来创建文件集。为此,我做了以下工作。
"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="13"/>
<mapper type="glob" from="*.*" to="*.*"/>
<mapper type="glob" from="*" to="*"/>
</firstmatchmapper>
</present>
</fileset>
</copy>
我需要做的是使用更新文件的位置作为新文件集的基础,然后使用正则表达式映射器匹配目标目录中的文件,该映射器允许我匹配不包括版本字符串的文件名。我还包含两个 glob 映射器,以确保我获得的名称中没有版本字符串的文件不同。