当前位置: 首页 > news >正文

ant来历

看看《ant权威指南》或者ant的网站吧,里面介绍得非常详细ant的来历,目的。
ant是tomcat的一个副产品,是在开发tomcat过程中,开发人员需要一个整合编译工具,因为在一个大项目中,源代码散落在不同的package下面,即不同的子目录下面,子目录即包含源码文件,又包含更深层的子目录,因此,编译源代码并不是一句命令就可以搞定的。

windows下面用visual studio开放产品的时候可以一键编译,是因为visual studio创建了很多项目资源文件,编译时在后台自动调用了很多cc之类的命令,这个和Unix/Linux下编译过程是一样的,只不过没有明显显示出来而已。Unix/Linux下有一个自动编译工具,叫做automake,只要你定义好Makefile,然后只要运行make命令,automake会自动到所有子目录下寻找需要编译的源码进行编译和连接,所以unix/linux下也可以一条命令编译。

可惜,java下并没有这样的工具。所以tomcat的开发者原来想使用automake作为集成编译工具的。不过,后来发现automake并不完全符合他们的要求,首先,automake不是跨平台的,这就意味着他们写的编译脚本不能和tomcat源代码一样被移植。其次,开发者需要的一些特性automake提供不了,扩展其功能也不是非常方便,所以就自己开发了一个基于java的跨平台的make工具,ant就这样诞生了。

由于java程序的特性,不同的源代码编译的时候需要引入很多第三方的jar包,ant可以使用通配符的方法自动装载一些目录下所有的jar,而不再需要一个一个手工指定classpath了。这点是最早引起我注意ant的。用ant管理java程序的发布过程,编译,测试,生成javadoc文档,打包,上传,可以用一个命令就搞定了,是不是很方便?

除此之外,ant可以执行的操作已经远远超过了编译java程序这个范围。ant可以下载网络上的文件,可以通过ftp上传/下载文件,可以自动把编译好的有关文件打包,可以自动打包成jar, war, ear等java ee所需要的应用包的不同格式,自动调用测试程序来测试代码,也可以自动解开压缩包。ant还可以实现文本替换, 实现copy, move, delete 等等文件操作。通过ant配置文件也可以让你用命令行就可以发送邮件,自动部署tomcat应用。还能自动从源码管理系统如CVS/Subverion/VSS里面取出源代码,也能自动向源码版本管理系统提交修改。功能太多了。具体自己看ant的文档吧。

我就曾经用ant实现了一个每日自动把日志文件压缩后并上传到某个服务器,然后发送邮件通知的功能,也实现过每天自动备份指定的目录的功能,ant能够自动识别新修改过的文件而实现了增量备份,省时省力,非常好用,比写perl脚本都要简单许多。整个ant目录不含文档仅3.41M大小,加上文档总共31.4M,ant的文档是非常详细的,几乎每一个ant命令都有示例,依样画葫芦copy下来稍微改一下就可以用了。如果英文水平足够的话光看文档就够了,不需要买任何书就能掌握ant的用法了。

转载于:https://www.cnblogs.com/bluewelkin/p/3519571.html

相关文章:

  • Replication--修改复制代理配置来查看代理运行情况
  • 用JAVA API解决几个实际问题
  • 运行WampServer时,提示Exception Exception in module wampmanager.exe at 000F15A0.解决办法
  • Android增量升级的方法和原理
  • oracle引起一些问题
  • Ubuntu 13.10 下安装python 3.3 IDLE
  • 搭建samba文件共享服务器
  • 实时用户操作审计系统
  • 文件系统与RAID总结
  • HBase工具之监控Region的可用和读写延时状况
  • AppStore占坑注意事项
  • 删除.gitignore中的在version control中的文件
  • ios之coredata(一)
  • Understanding CSS Filter Effects
  • 图像处理-缩放-平移旋转等等
  • python3.6+scrapy+mysql 爬虫实战
  • 收藏网友的 源程序下载网
  • [case10]使用RSQL实现端到端的动态查询
  • [原]深入对比数据科学工具箱:Python和R 非结构化数据的结构化
  • 【跃迁之路】【669天】程序员高效学习方法论探索系列(实验阶段426-2018.12.13)...
  • Angular Elements 及其运作原理
  • CSS盒模型深入
  • extjs4学习之配置
  • Java面向对象及其三大特征
  • oldjun 检测网站的经验
  • Vue ES6 Jade Scss Webpack Gulp
  • Vue组件定义
  • Web标准制定过程
  • yii2权限控制rbac之rule详细讲解
  • 使用Swoole加速Laravel(正式环境中)
  • 硬币翻转问题,区间操作
  • 原创:新手布局福音!微信小程序使用flex的一些基础样式属性(一)
  • 阿里云IoT边缘计算助力企业零改造实现远程运维 ...
  • ​【已解决】npm install​卡主不动的情况
  • ​LeetCode解法汇总2670. 找出不同元素数目差数组
  • !$boo在php中什么意思,php前戏
  • #AngularJS#$sce.trustAsResourceUrl
  • (16)UiBot:智能化软件机器人(以头歌抓取课程数据为例)
  • (arch)linux 转换文件编码格式
  • (pojstep1.3.1)1017(构造法模拟)
  • (rabbitmq的高级特性)消息可靠性
  • (附源码)python旅游推荐系统 毕业设计 250623
  • (附源码)spring boot火车票售卖系统 毕业设计 211004
  • (附源码)ssm捐赠救助系统 毕业设计 060945
  • (一)VirtualBox安装增强功能
  • (已解决)什么是vue导航守卫
  • (转载)利用webkit抓取动态网页和链接
  • ***通过什么方式***网吧
  • .net core Swagger 过滤部分Api
  • .net反混淆脱壳工具de4dot的使用
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .Net下的签名与混淆
  • .Net中wcf服务生成及调用
  • /var/log/cvslog 太大
  • :“Failed to access IIS metabase”解决方法