我想制作一个重启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>
我可以在开始前依赖停止运行吗?或者我应该制作两个单独的目标,并且“开始”依赖于“停止”?
答案 0 :(得分:5)
通常,您可以依赖Ant按顺序执行任务。在<start>
完成之前,<stop>
不会执行。
然而,考虑到Tomcat的本质以及“停止Tomcat”意味着什么,StopTask
实际上做的是
因此,StopTask
可以在 Tomcat完成关闭过程之前完成 - 该任务只是告诉Tomcat关闭,它不会等待它关闭。
您的脚本中需要一些其他机制来确保您不会尝试启动Tomcat实例,而同一端口上的另一个实例仍处于关闭状态(例如,睡眠任意数量的秒)。
答案 1 :(得分:2)
是的,任务顺序很重要,在你的情况下,在'start'之前运行'stop'。但是,'停止tomcat'(过程,而不仅仅是任务)不能保证在'start'开始之前完成。
您可能希望进行'start'检查并等到tomcat未运行,然后再启动新实例。
答案 2 :(得分:1)
是的,停止会在开始前运行。当然,制作两个单独的目标可以让你从蚂蚁开始和停止,这可能是个人有用的。