我有一个Ant构建脚本,它当前启动一个服务器,然后等待,直到URL可以解析,然后才为我执行一些Selenium测试。这个任务看起来像这样;
<target name="test.selenium" depends="compile.constants, launch.server" description="Run the Selenium tests">
<echodesc/>
<waitfor maxwait="1" maxwaitunit="minute" checkevery="2" checkeveryunit="second">
<http url="http://127.0.0.1:${product.listenport}/"/>
</waitfor>
<exec executable="${deps.python}" spawn="false" failonerror="true" dir="src">
<arg line="manage.py test --selenium-only" />
</exec>
</target>
在成功之后,我想调用一个URL,它将关闭服务器,但我不确定如何使用Ant做到这一点。有可能让Ant调用127.0.0.1:${product.listenport}/QUIT
吗?
我以前是通过taskkill
命令来实现这一目标的,但是这已经开始导致Windows错误,并且该URL干净地关闭了服务器。
我能找到的最好的解决方案是这个宏在浏览器中打开一个URL,但这仍然会导致我的问题,因为我有一个开放的浏览器在我的测试结束;http://chris.m0nk3y.net/blog/post/opening-a-url-in-the-default-browser-with-ant
我的解决方案最终我使用了以下ant目标;
<target name="shutdown.server" depends="init.properties" description="Shutdown the server">
<get src="http://127.0.0.1:${product.listenport}/QUIT" dest="NUL"/>
</target>
'NUL'使我能够使用get而无需处理正在创建的新文件,因此这对于作业来说是完美的o/
可以使用get
任务调用http url。这里有更多的信息https://ant.apache.org/manual/Tasks/get.html.
例如<get src="http://127.0.0.1:${product.listenport}/QUIT" dest="${temp.dir}/quit.res"/>