困扰于这几个工具的用途,故查了些资料和文档,并找到了一个很好的博文:
http://javarevisited.blogspot.com/2015/01/difference-between-maven-ant-jenkins-and-hudson.html
自己简单翻译和梳理一下:
ANT 和 Maven都是构建工具,所谓构建通常的工作有:生成源代码,编译,编译测试源代码,执行测试,打包,静态分析,生成报告;Maven在ANT之后出现,做了一些功能的拓展。
ANT VS Maven 主要的不同点有:
1. Maven只要很少的配置,而ANT是几乎每一项都要配置(源代码目录,Junit目录,库的目录等),Maven应用所谓的 Convention over configuration 的原则,做了一些合理的缺省的配置。
2. Maven提供了依赖管理,引入了repository的概念,来存放所有的依赖的library,JAR等,且在构建时Maven会自动下载依赖。 而ANT只是用了一个目录来存放library。
3. 第三个不同点事,Maven提供了一致的接口来构建java工程 pom.xml
4. Ant任务没有生命周期,需要定义targets和第三方依赖;Maven是有生命周期的,当指令被调用时,Maven会执行一系列步骤。
5. Maven相比ANT不只是一个构建工具,更像一个工程管理工具,并生成报告。
Jenkins 和 Hudson: 二者是源于一个源代码库的,只是Jenkins开源而Hudson不开源,故事是这样的,Hudson原来是Sun公司的开源项目,Sun被Oracle收购后,Oracle就将商标和平台都控制收入囊下了,于是开源工作者么忍不了就重新开发了一个Jenkins。 二者都是持续集成的工具(CI),让工程可以定时地,自动地构建和部署。
Maven和Jenkins(Hudson)的区别:
1. Maven是构建工具,Jenkins则是触发构建(持续集成工具)的,通过jenkins控制何时构建。
2. Jenkins可以使用Maven作为构建工具,二者配合使用,当然,Jenkins还可以跑一些测试脚本,交付一些文件到服务器。