3

フィルタセットを使用して、antプロパティとして設定されている変数を置き換えるファイルを書き出したいのですが。ネストされたフィルターセットがある場合はプロパティを渡すことができますが、refidは渡しません。フィルタセットを再利用しているので、refidを使用したいと思います。

foo.oldにはfoo=@foo@

これは機能します:

<target name = "filterset-test1">
  <property name = "bar" value = "here is foo" />
  <copy file = "foo.old" tofile = "foo.new1">
    <filterset begintoken = "@" endtoken = "@">
      <filter token = "foo" value = "$ {bar}" />
    </ filterset>
  </ copy>
</ target>

そして、これはトークンの置き換えに失敗します:

<filterset id = "test-filters" begintoken = "@" endtoken = "@">
  <filter token = "foo" value = "$ {bar}" />
</ filterset>
<target name = "filterset-test3">
  <property name = "bar" value="プロパティが通過しません"/>
  <copy file = "foo.old" tofile = "foo.new3">
    <filterset refid = "test-filters" />
  </ copy>
</ target>

後者を行う方法はありますか?また、プロパティファイルを作成してfiltersfileプロパティとして使用してみました。

4

1 に答える 1

4

問題は、トップレベルのフィルターセット内の問題のようです。

<filterset id="test-filters" begintoken="@" endtoken="@">
  <filter token="foo" value="${bar}" />
</filterset>

プロパティbarは未定義です。bar外部ターゲットのプロパティ定義を移動すると、機能するfilterset-test3はずです。

<?xml version="1.0" encoding="UTF-8" ?>
<project name="filter-test">

  <property name="bar" value="property doesn't pass thru" />

  <filterset id="test-filters" begintoken="@" endtoken="@">
    <filter token="foo" value="${bar}" />
  </filterset>

  <target name="filterset-test3">
    <copy file="foo.old" tofile="foo.new3">
      <filterset refid="test-filters" />
    </copy>
  </target>
</project>
于 2012-06-19T00:32:48.303 に答える