Apache Ant - 如何处理目标错误?

问题描述 投票:0回答:1

我们使用下面的 ant 目标来部署应用程序并执行部署后任务。使用此目标部署了多个应用程序。 对于少数目标,属性“failOnError”设置为“false”,而对于其他目标,属性“failOnError”设置为“true”。

部署完成后,我们需要发布应用程序部署报告,其中提到每个应用程序的部署是否成功完成或失败。

  1. 如果目标在“failOnError”设置为“false”时失败,我们也没关系。
  2. 但是,我们希望执行不同的目标,例如当任何目标失败且“failOnError”设置为“true”时,“deployment.report”。

是否可以在“部署”目标级别识别目标中的错误/故障(上面第 2 点中提到的)并执行“deployment.report”目标?

<target name="deploy" 
    depends="upload.jar, create.app, disable.features, enable.features, provision.features, edit.properties, wire.application, distribute.app, deploy.app, start.app">
</target>

<target name="deployment.report">
    <!-- execute java code here to update deployment report csv file -->
</target>
ant
1个回答
0
投票

使用来自

trycatch
antcontrib
我终于能够执行目标
update.deployment.report
,如下所示:

<target name="deploy">
        <trycatch>
            <try>
                <antcall target="upload.daa"/>
                <antcall target="create.app" depends="upload.daa"/>
                <antcall target="disable.features" depends="create.app"/>
                <antcall target="enable.features" depends="disable.features"/>
                <antcall target="provision.features" depends="enable.features"/>
                <antcall target="edit.properties" depends="provision.features"/>
                <antcall target="wire.application" depends="edit.properties"/>
                <antcall target="distribute.app" depends="wire.application"/>
                <antcall target="deploy.app" depends="distribute.app"/>
                <antcall target="start.app" depends="deploy.app"/>
            </try>
            <catch>
                <fail message="deployment of application - ${app.name} failed. Please check logs."/>
            </catch>
            <finally>
                <antcall target="update.deployment.report"/>
            </finally>
        </trycatch>
    </target>
© www.soinside.com 2019 - 2024. All rights reserved.