在Ant中,目标内的任务顺序是否重要?

Mat*_*hew 4 java ant tomcat

我想制作一个重启tomcat6的目标.现在,我有这样的事情:

<taskdef name="stop" classname="org.apache.catalina.ant.StopTask" />
<taskdef name="start" classname="org.apache.catalina.ant.StartTask" />

...

<target name="restart" depends="deploy" description="Restart Tomcat" >
    <stop url="${manager}" username="${username}" password="${password}" path="${path}" />
    <start url="${manager}" username="${username}" password="${password}" path="${path}" />
</target>
Run Code Online (Sandbox Code Playgroud)

我可以在开始前依赖停止运行吗?或者我应该制作两个单独的目标,并且"开始"依赖于"停止"?

mat*_*t b 5

通常,您可以依赖Ant按顺序执行任务.在<start>不执行,直到<stop>完成.

但是考虑到Tomcat的本质以及"停止Tomcat"意味着什么,它StopTask实际上是做什么的

  1. 连接到Tomcat的关闭端口并告诉Tomcat正常关闭
  2. 发送消息后,退出

因此,StopTask可以预期 Tomcat完成它的关闭过程之前完成 - 任务只是告诉Tomcat关闭,它不会等待它关闭.

您需要在脚本中使用其他一些机制来确保在同一端口上的另一个实例仍处于关闭状态(例如,睡眠任意秒数)时,不要尝试启动Tomcat实例.