1

ANT を使用して、リリース済みバージョンへの更新用にビルド用の zip ファイルを作成しようとしています。変更されたファイル (これには、ファイル名にバージョン文字列が埋め込まれた .jar ファイルが含まれます) のリストを取得するために、次のことを行いました。

  1. ファイル名からバージョン文字列を削除して、ファイルの基本セットを一時的な場所にコピーします。つまり、foo_1.0.0.jar -> foo.jar
  2. 更新された一連のファイルを一時的な場所にコピーし、ファイル名からバージョン文字列を削除します。つまり、foo_1.0.1.jar -> foo.jar
  3. 「異なる」セレクターを使用してファイルセットを作成し、バージョン番号が削除された 2 つのディレクトリを比較します。

ここで、ステップ 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>

私がしなければならなかったのは、更新されたファイルの場所を新しいファイルセットの基礎として使用し、次に正規表現マッパーを使用してターゲット ディレクトリ内のファイルを一致させ、バージョン文字列を除いてファイル名を一致させることでした。また、名前にバージョン文字列が含まれていない異なるファイルを取得できるように、2 つのグロブ マッパーも含めました。

于 2013-09-23T13:30:41.033 に答える