解决ANT无法捕获异常的问题

使用过ant的人都知道,ant是无法捕获构建过程中抛出的异常的,确切的说,是无法拦截异常并由用户手动处理的(参考java语言的try-catch语句)。

ant算是一门经典的构建工具了,在maven出现以前,ant的霸主地位一直未被动摇。现在虽然maven抢过了ant的风头,但ant在某些操作上还是maven无法比拟的,例如文件操作、执行远程命令等。

 

公司项目中使用了maven来进行构建,但每次部署时(这里不讨论jenkins),都需要手动打包,拷贝文件到远程web容器,然后清楚web容器缓存文件,最后启动web容器(如果有人对我说热部署,我只能以呵呵回报他)。这一系列操作,恩,来个十次八次的就知道多繁琐了。

 

所以自己考虑使用ANT来进行这些操作,具体的一些细节就不讨论了,只说其中出现的引起大麻烦的“小问题”。

 

自己为了方便,都是直接把ant构建添加在鼠标右键的,这要只需要在需要构建的build.xml文件上鼠标右键即可。但是唯一美中不足的地方就是如果构建过程中出现了异常,我是没办法知道的,因为构建过程是在命令行中一闪而过的,之前自己翻阅了antAPI文档,才知道ant是没办法手动捕获异常的。

 

于是又一次有一个同事自己偷偷把maven打包生成的文件名字改了,我也不知道,在每次调试的时候继续使用ant打包,打包,打包(其实每次ant构建都是失败的)。然后发现一个代码上的问题明明解决了,但是在服务器上居然还存在相应的bug,查来查去才发现是自己一直没有把最新的代码部署上去。

 

自己的思路就是ant构建失败时,能停止构建,并在命令行中弹出“构建异常,按ENTER继续”这样的需要用户接介入的操作,而构建成功时就不显示任何信息。

 

通过再三搜索,终于找到了一个第三方的taskant-contrib,需要的jar是:ant-contrib-1.0b3.jar。这个文件可以在maven的中央仓库找到。

 

下载下来后,为了方便,可以直接将此jar放到$ANT_HOME/lib 下。

 

下面是一个使用此taskdemodemo中手动抛出了一个异常,然后拦截了异常并提示“构建异常,按ENTER继续”:

 


 
 
     
     
                  

    
    这是一个手动抛出的异常
    

 
    构建错误,按Enter结束   
    ${GetBuildError}  
    
 
         
    

构建过程如下:

 

解决ANT无法捕获异常的问题_第1张图片

 

解决ANT无法捕获异常的问题_第2张图片

 

可以看到,ant拦截到了异常并等待用户来处理。这样就不怕构建失败时不被发现了。

 

你可能感兴趣的:(ant)