1

我有一个 ant 脚本,它在开始时进行一些检查,然后编译代码并将其部署到 tomcat 服务器。build-war-deploy 过程的脚本如下所示:

<target name="build-war-deploy" depends="clean-up,gwtc,check-settings" description="Package GWT app to web archive and deploy to web server">
<war basedir="${war.dir}" destfile="${deploy.dir}/${app.name}.war" webxml="${webinf.dir}/web.xml">
<!-- <include name="WEB-INF/**" /> -->
<webinf dir="${webinf.dir}/">
<include name="**/*.jar" />
</webinf>
</war>
</target>

这个目标工作得很好,这意味着在运行 ant 脚本之后,应用程序确实部署在 tomcat 上。

在 build-war-deploy 目标之后,我需要进行一些清理过程,因此我创建了一些其他目标,并向 build-war-deploy 目标添加了一个依赖项,以便之后执行它。

<target name="cleanup" depends="build-war-deploy" description="clean up processes">
<exec dir="./" executable="python" failonerror="true">
    <arg line="deploy_cleanup.py ${app.name}" />
</exec>
</target>

但是,在 ant 脚本执行 build-war-deploy 目标后,它会停止并说构建成功。有谁知道为什么它没有执行最后一个目标?

build-war-deploy:
      [war] Building war: C:\Apache Tomcat\apache-tomcat-6.0.33\webapps\test.war
BUILD SUCCESSFUL
Total time: 2 minutes 22 seconds
4

1 回答 1

1

我会尝试使用输出属性。也许 python 文件正在执行——不是做你想做的,而是执行并返回你从未见过的结果。我的意思是如果 python 脚本返回一条错误消息,ant 不认为它成功执行了吗?

就像是:

<exec dir="./" executable="python"  outputproperty="outProp" failonerror="true">
    <arg line="deploy_cleanup.py ${app.name}" />
</exec>
<echo>${outProp}</echo>

outputproperty:应该存储命令输出的属性的名称。除非错误流被重定向到单独的文件或流,否则此属性将包括错误输出。

于 2012-10-06T10:42:28.830 回答