3

ファイルを特定の場所にコピーする必要があるタスクがあります。ファイルが宛先に既に存在する場合、これらの宛先ファイルの名前を変更する (.bak を追加する) 必要があります。宛先ファイルが存在しない場合は、ファイルを配置するだけです。

現在、私はこれを持っています:

<target name="install-jsps">
    <copy todir="target">
        <fileset dir="source"/>
        <globmapper from="*.jsp" to="*.jsp.bak"/>
    </copy>
</target>

ただし、これにより、ソース ファイルをコピーする前にターゲットファイルの名前を変更したいときに、ソースファイルの名前が変更されます。一部のターゲット ファイルがソース ファイルセットにないため、ターゲット フォルダー全体の名前を変更できません。

できれば、ant-contrib のような外部ライブラリを使用したくありません。

4

1 に答える 1

5

2 つのコピー タスクで実行できます。1 つはバックアップを作成するタスク、もう 1 つはソースから新しいファイルをコピーするタスクです。必要な余分なビットは、バックアップを作成するために使用されるファイルセットのpresentセレクターです。セレクターを使用すると、置き換えようとしているファイル、つまりソース ディレクトリに存在するファイルのみをバックアップできます。

<copy todir="dest">
    <fileset dir="dest" includes="*.jsp">
        <present targetdir="source" />
    </fileset>
    <globmapper from="*" to="*.bak" />
</copy>

<copy todir="dest">
    <fileset dir="source" includes="*.jsp" />
</copy>
于 2012-12-13T23:11:48.123 に答える