1

使用 ANT,我正在尝试为我的构建创建一个 zip 文件,以更新已发布的版本。要获取已更改文件的列表(这包括在文件名中嵌入版本字符串的 .jar 文件),我执行了以下操作:

  1. 将基本文件集复制到临时位置,并从文件名中删除版本字符串。即 foo_1.0.0.jar -> foo.jar
  2. 将更新的文件集复制到临时位置,并从文件名中删除版本字符串。即 foo_1.0.1.jar -> foo.jar
  3. 使用“不同”选择器创建一个文件集,以比较删除版本号的两个目录。

我现在想创建一个文件集,其中包含步骤 3 中更改的文件,但包含原始更新集中的完整文件名。所以我寻找的文件集会发现 foo.jar 已更改,并包含“foo_1.0.1.jar”。

但是,我正在努力弄清楚如何将差异文件集与包括版本号在内的真实文件集相匹配。在 ANT 中如何做到这一点?

4

1 回答 1

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 映射器,以确保我得到的文件名称中没有不同的版本字符串。

于 2013-09-23T13:30:41.033 回答