7

antのプロパティをどのように設定解除しますか?それで、それはプロパティとして完全に削除されますか?

<condition property="proguard.config" value="proguard.cfg">
      <isset property="proguarded"/>
</condition>


 <condition property="proguard.config" value="">
      <not>
      <isset property="proguarded"/>
      </not>
</condition>

これはうまくいくようです。ただし、proguard.configなどのプロパティが存在する場合でも、proguardは実行されます。では、条件付きでプロパティとしてproguard.configを完全に削除するにはどうすればよいですか?proguardが.propertiesファイルにproguard.configプロパティがあることを確認すると、実行されることを私は知っています。

4

1 に答える 1

9

Antのマニュアル プロパティ タスクには次のように記載されています。

プロパティは不変です。プロパティを最初に設定した人は誰でも、残りのビルドのためにそれをフリーズします。それらは間違いなく変数ではありません。

そうは言っても、いくつかの回避策があります。

  1. ローカル タスク- 特定のスコープのローカル プロパティは、より高いスコープの同じ名前のプロパティを「シャドウ」します (特にマクロ定義内で役立ちます)。

  2. Ant-Contrib 変数タスク- Ant-Contrib は柔軟性を提供しますが、依存関係も追加するため、Ant スクリプトまたはカスタム Ant タスクでより適切に表現できる手続き型 Ant コードを記述したくなることがあります。


上記の例proguardedでは、Ant プロジェクトの実行中にプロパティが変更されない場合、プロパティを設定解除する必要はありません。たとえば、次のようにターゲットを条件付きで実行できます。

<target name="proguarded-target" if="proguarded">
  ...
</target>

<target name="not-proguarded-target" unless="proguarded">
  ...
</target>
于 2012-05-18T05:54:04.673 に答える