AntからNT サービスを停止・開始する
NTサービスを制御する
scというMS-DOSコマンドがありますので、それをExecタスクを用いて呼び出します。
開始にはstart
停止にはstop
をscコマンドの一つ目の引数で渡します。
そして二つ目の引数には、サービス名を渡します。

一つ目の引数にマシン名を渡すとネットワーク経由でサービスの管理もできるようです。
使用例
再起動の成功例、以下のような感じの出力がでます。
[exec]
[exec] SERVICE_NAME: Apache Tomcat 4.1
[exec] TYPE : 10 WIN32_OWN_PROCESS
[exec] STATE : 3 STOP_PENDING
[exec] (STOPPABLE,NOT_PAUSABLE,ACCEPTS_SHUTDOWN)
[exec] WIN32_EXIT_CODE : 0 (0x0)
[exec] SERVICE_EXIT_CODE : 0 (0x0)
[exec] CHECKPOINT : 0x0
[exec] WAIT_HINT : 0x88b8
[exec]
[exec] SERVICE_NAME: Apache Tomcat 4.1
[exec] TYPE : 10 WIN32_OWN_PROCESS
[exec] STATE : 2 START_PENDING
[exec] (NOT_STOPPABLE,NOT_PAUSABLE,IGNORES_SHUTDOWN)
[exec] WIN32_EXIT_CODE : 0 (0x0)
[exec] SERVICE_EXIT_CODE : 0 (0x0)
[exec] CHECKPOINT : 0x0
[exec] WAIT_HINT : 0x7d0
[exec] PID : 1368
[exec] FLAGS :
BUILD SUCCESSFUL
Total time: 10 seconds
Tomcatを停止します。
<target name="stop"> <exec executable="sc"> <arg value="stop"/> <arg value="Apache Tomcat 4.1"/> </exec> </target>
Tomcatを開始します。
<target name="stop"> <exec executable="sc"> <arg value="start"/> <arg value="Apache Tomcat 4.1"/> </exec> </target>
Tomcatを再起動します。
sleepタスクで時間まつのは美しくないけど
<target name="stop"> <exec executable="sc" resultproperty="stop"> <arg value="stop"/> <arg value="Apache Tomcat 4.1"/> </exec> <sleep seconds="10"/> <exec executable="sc"> <arg value="start"/> <arg value="Apache Tomcat 4.1"/> </exec> </target>
