Ant ターゲットには、オプションのif
orunless
節を含めることができます。これは、プロパティが句で設定されているか、句で設定解除されている場合にのみタスクを実行することを意味しif
ます1。興味深いことに、そのor句は、依存タスクが最初に実行された後にチェックされます。unless
if
unless
つまり、特定の条件が満たされた場合にのみ Ant タスクを実行する方法として、標準の Ant でこれを行うことができます。
<target name="test.if.tomcat.is.running">
<condition property="tomcat.running">
<socket server="${tomcat.host}" port="${tomcat.port}"/>
</condition>
</target>
<target name="my.target"
if="tomcat.running"
depends="test.if.tomcat.is.running">
<yaddah/>
<yaddah/>
<yaddah/>
</target>
Ant に Target を実行させることを指定しますmy.target
。Antはターゲットにmy.target
依存することを認識し、それを最初に実行します。Tomcat が実際に実行されている場合、タスクはプロパティtest.if.tomcat.is.running
をtest.if.tomcat.is.running
設定します。tomcat.running
それ以外の場合、そのプロパティは設定されません。
最後に、Ant はターゲットに戻りmy.target
、プロパティtomcat.running
が設定されているかどうかを確認し、設定されている場合にのみターゲットを実行しmy.target
ます。
または、Ant-contrib タスクを使用して、ビルド プロセス全体を理解しやすくすることもできます。
Ant-Contrib ルートに行きたい場合は、Ant-Contrib をセットアップする簡単な方法があるため、Ant-contrib jar は実際にはプロジェクトの一部です。誰かがバージョン管理システムからプロジェクトをチェックアウトすると、Ant-contrib jar も取得されるため、Ant-Contrib を自分でインストールする必要はありません。
Ant-Contrib jar をダウンロードし、プロジェクトのルートにある というディレクトリに配置しますantlib/ac
。Findbugsや PMDantlib
など、あらゆる種類のオプションのタスク jar に使用できます。オプションの Ant jar をそれぞれ独自のディレクトリの下に配置するだけです(ディレクトリの下に Ant-Contrib を配置したように)。antlib
ac
次に、 でbuild.xml
、Ant-Contrib タスクを次のように指定します。
<taskdef resource="net/sf/antcontrib/antlib.xml">
<classpath>
<fileset dir="${basedir}/antlib/ac"/>
</classpath>
</taskdef>
これで、特定のマシンにインストールされているかどうかを気にすることなく、Ant-Contrib タスクを使用できます。プロジェクトをチェックアウトすると、それらのタスクに自動的にアクセスできます。
1.そうです、if/unless
句はプロパティが設定されているかどうかをチェックし、true
/ではなくfalse
、多くの混乱を引き起こす可能性があります。false
開発者がプロパティをorに設定しているのを見たことがありますが、句が false に設定されているno
ため、ターゲットが実際に実行されているのはなぜだろうかと考えています。if