4

現在、Ant で XML ファイルからプロパティをロードしています。ただし、毎回同じプロパティ セットの新しい XML プロパティ ファイルをロードしながら、現在の ant タスクを for ループ内で実行したいと考えています。

プロパティをオーバーライドできる ant-contrib の var タスクの存在を認識しています。ただし、これを XML ファイルからのプロパティの読み込みと組み合わせる方法がわかりません。最初は、すべてのプロパティを反復処理してから、propertyregex タスクを使用してそれらを新しい値に設定することを考えました。残念ながら、そのためのコードを書き始めたときに、プロパティ値を実際にロードする方法がまだわからないことに気付きました。以前に設定されたプロパティを上書きすることはできないからです。(ええと、彼らは var タスクを使用できますが、私が知る限り、これを使用して XML ファイルからロードすることはできません。)

何か案は?私が理想的に探しているのは、次のような名前のタスクです

<xmlvars file="myxmlpropertyfile.xml"/>

これは次のように機能します

<xmlproperty file="myxmlpropertyfile.xml"/>

変数を上書きすることを除いて。

4

2 に答える 2

2

このタスクでできることの 1 つは、<xmlproperty>各プロパティに特定の値をプレフィックスとして付けることです。パラメータの名前を接頭辞として単純に使用しないのはなぜですか?

それ以外の場合は、<echoproperties>タスクを使用してすべてのプロパティを設定解除し、タスクの次の反復をループすることができ<for>ます。

このようなものですが、これはテストされていません:

 <for param="my.directory">
     <fileset dir="${some.directory}"/>
     <sequential>
         <xmlproperty file="@{my.directory}/myxmlpropertyfile.xml"
            prefix="foo-fighters"/>
          <blah, blah, blah/>
          <for param="reset.var">
              <echoproperty prefix=foo-fighters"/>
              <sequential>
                  <var name="@{reset.var}"
                     unset="true"/>
              </sequential>
          </for>
     </sequential>
 </for>

基本的に、外側の<for>ループを使用してディレクトリをループし、 を使用<xmlproperty>してプロパティ名を設定します。手段は<blah blah blah/>あなたが望むことをします。<for>次に、外側のループの次の反復に進む前に、タスクで以前に設定したすべての変数の設定を解除する内側の ループを実行します。<for><xmlproperty>

トリックは、変数名が簡単に見つかることを保証する変数プレフィックスを使用することです。したがってfoo-fighters

于 2012-09-14T02:32:59.433 に答える
0

var タスクのunset属性を使用することで、これを達成できるはずです。また報告します…

于 2012-09-13T23:57:05.853 に答える