6

タスクを使用すると、リソース (ファイルなど) が利用可能な場合にのみプロパティが TRUE に設定されます。そうでない場合、プロパティは未定義です。

プロパティの値を出力すると、リソースが利用可能な場合は true になりますが、それ以外の場合はプロパティ名のみが出力されます。

リソースが利用できない場合、プロパティを何らかの値に設定する方法はありますか? 利用可能なチェックの前にプロパティを明示的に設定しようとしましたが、アリは文句を言います:

[利用可能] 非推奨 - 既存のプロパティをオーバーライドするために使用されます。
[利用可能] ビルド ファイルは、異なる値に対して同じプロパティ名を再利用すべきではありません。
4

3 に答える 3

16

not と組み合わせて条件を使用できます。

http://ant.apache.org/manual/Tasks/condition.html

  <condition property="fooDoesNotExist">
    <not>
      <available filepath="path/to/foo"/>
    </not>
  </condition>
于 2008-09-25T14:40:20.430 に答える
10
<available filepath="/path/to/foo" property="foosThere" value="true"/>
<property name="foosThere" value="false"/>

foosThere の割り当ては、可用性チェックによってまだ true に設定されていない場合にのみ成功します。

于 2009-09-02T15:19:28.087 に答える
2

この動作の理由は、ターゲットのif/unless属性です。このような属性を持つターゲットは、その名前のプロパティが設定されている場合と設定されていない場合に実行されます。falseに設定されているか、trueに設定されている場合、違いはありません。したがって、available-taskを使用してプロパティを設定(または設定しない)し、これに基づいてタスクを実行する(またはしない)ことができます。antのプロパティは不変であるため、available-taskの前にプロパティを設定することは解決策ではなく、一度設定すると変更できません。

以前に設定されていない場合にプロパティを値に設定するには、次の3つの解決策が考えられます。

  1. available-taskをnotと組み合わせて使用​​します。
  2. プロパティを設定するタスクを作成します。これは、プロパティが設定されていない場合にのみ実行されます(タスクの属性を除く)。
  3. 呼び出しにプロパティを利用可能に設定するだけです。プロパティは設定されていない場合にのみ変更されるため、これで必要な処理が実行されます。
于 2008-09-25T16:07:33.760 に答える