2

これがやろうとしていることです。ビルド中に多数のプロパティファイルから名前とアドレスを置き換えたいのですが、残念ながらこれを行うことはできません。誰かが助けることができますか?

<target name="replace" >
<foreach target="replace.name,replace.address" param="foreach.file" inheritall="true">
    <path>
                <fileset dir="${build.tmp.dir}/resource">
                <!-- some complicated conditions go here -->
    </path>
</foreach>
</target>

<target name="replace.address">
    <echo>replacing #Address# for ${foreach.file}</echo>
    <replace file="${foreach.file}" token="#Address#" value="${address}" />
</target>

<target name="replace.name">
    <echo>replacing #Name# for ${foreach.file}</echo>
    <replace file="${foreach.file}" token="#Name#" value="${Name}" />
</target>

.properties ファイルは次のようになります

name=#Name#
address=#Address#
4

1 に答える 1

2

targetofforeachは、複数のターゲット名を取るようには設計されていません。指定されたターゲットではなく、指定されたリストを反復処理するだけです。

実装をより DRY にするために、次のことができます。

  • 2 つの のfor代わりにループを使用します。foreachantcall
  • ループmacrodefで使用--いくつかの ant xml コードをタスクのようなものにパックできますformacrodef

実際、2 つのターゲット --replace.addressreplace.nameについて、コマンドラインからそれらを呼び出してもよろしいですか? -replace.addressそうでない場合は、それらに名前を付けて-replace.name使用するかmacrodef、繰り返し本体を公開することはforeachお勧めできません。

于 2013-02-14T14:42:30.510 に答える