iteye_6040 2011-11-16 11:19
浏览 260
已采纳

CruiseControl 使用Ant启动tomcat后 cc为何不继续执行,手动关闭tomcat窗口,cc继续轮询下一次构建

因为项目需要做了一个CI服务器,使用的是CruiseContol+SVN+Ant,在CC的中我配置了两个ant的脚本,一个是执行build的脚本,一个是执行release的脚本,build的时间间隔目前设置为3分钟,release是每天往web服务器上将build.xml打出的最新war包部署一次,代码如下:
[code="java"]




[/code]

我单独只放build脚本时CC正常,每隔3分钟构建一次,但加入release脚本后就出现了问题,我release.xml脚本如下:[code="java"]


<!-- 清理tomcat的work文件夹 ,原项目文件及war包-->
<target name="clean" depends="shutdowntomcat">
    <delete dir="${tomcatHome}/work/Catalina/localhost/${ant.project.name}"/>
    <delete dir="${tomcatHome}/webapps/${ant.project.name}"/>
    <delete file="${tomcatHome}/webapps/${ant.project.name}.war"/>
</target>

<!-- 关闭tomcat -->
<target name="shutdowntomcat">
    <!-- 调用tomcat shutdown命令强制关闭 -->
     <exec executable="${tomcatHome}/bin/shutdown.bat" failonerror="false"></exec>
     <!-- 休息30秒,等待关闭完成 -->
     <sleep seconds="30"/>
</target>

<!-- 启动tomcat -->
<target name="startuptomcat" depends="copyWar">
    <exec executable="${tomcatHome}/bin/startup.bat" spawn="true" vmlauncher="false">
      <env key="CATALINA_HOME" value="${tomcatHome}" />
      <arg line="/c start ${tomcatHome}/bin/startup.bat" />
   </exec>
</target>


<!-- 拷贝war至tomcat目录 -->
<target name="copyWar" depends="clean">
    <copy file="${target}/${ant.project.name}.war" todir="${tomcatHome}/webapps"></copy>
</target>
<target name="releaseok" depends="startuptomcat">
    <echo message="release eadp-web ok"></echo>
</target>


[/code]

因为这个脚本中有打开tomcat的target,所以执行这个脚本时打开tomcat后,releaseok的target也能执行,也输出了内容,CC提示Build Success,但是并没有像build.xml脚本执行完成后CC输出的 next build in 3 minutes,查看logs里面的status.txt里面记录的是 2011-11-16T02:08:26 releaseok 就是我的release.xml的最后一个target,然后CC就停止在这里了,不继续轮询下一个构建,如果这时我手动关闭刚才ant打开的tomcat窗口手动关闭,CC的控制台马上就有了反应,会正常输出下一次build的时间 然后一切就正常了。似乎CC是在等待打开的Tomcat窗口给它一个返回的信息,我如何能让ant执行的打开tomcat后让CC继续下一次构建呢?

CC的porject全配置如下:
[code="java"]

    <listeners>
        <currentbuildstatuslistener file="logs/${project.name}/status.txt"/>
    </listeners>

    <bootstrappers>
        <svnbootstrapper localWorkingCopy="projects/${project.name}" />
    </bootstrappers>

    <modificationset quietperiod="30">
        <filesystem folder="projects/${project.name}"/>
    </modificationset>

    <schedule interval="180">
        <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/release.xml" time="1002"/>
        <ant anthome="apache-ant-1.7.0" buildfile="projects/${project.name}/build.xml" />
    </schedule>

    <log>
        <merge dir="projects/${project.name}/target/test-results"/>
    </log>

    <publishers>
        <onsuccess>
    <artifactspublisher dest="artifacts/${project.name}" file="projects/${project.name}/target/eadp.war"/>
        </onsuccess>
    </publishers>

</project>[/code]
  • 写回答

6条回答 默认 最新

  • 爱上一条鱼 2011-11-16 14:24
    关注

    也就是说 要把release的task和build的task写在同一个xml里,也就是把release.xml里的task写到build里

    [code="java"]





    [/code]

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(5条)

报告相同问题?

悬赏问题

  • ¥15 安卓adb backup备份应用数据失败
  • ¥15 eclipse运行项目时遇到的问题
  • ¥15 关于#c##的问题:最近需要用CAT工具Trados进行一些开发
  • ¥15 南大pa1 小游戏没有界面,并且报了如下错误,尝试过换显卡驱动,但是好像不行
  • ¥15 没有证书,nginx怎么反向代理到只能接受https的公网网站
  • ¥50 成都蓉城足球俱乐部小程序抢票
  • ¥15 yolov7训练自己的数据集
  • ¥15 esp8266与51单片机连接问题(标签-单片机|关键词-串口)(相关搜索:51单片机|单片机|测试代码)
  • ¥15 电力市场出清matlab yalmip kkt 双层优化问题
  • ¥30 ros小车路径规划实现不了,如何解决?(操作系统-ubuntu)