Java工程构建工具ANT与Maven的区别

时间:2022-06-18 18:39:45

Ant与Maven也许几乎所有的程序员在程序开发过程中都遇到过,在我的工作过程中ant和maven都用到过,在这里说一下个人感受。

第一家公司开发业务代码,最后打war包采用了ant+hudson的持续集成方式,ant脚本当时也是由我一个人编写的,也是我刚入职最早的工作,当时项目组开发工程的依赖库都放在了svn上,svn上各种分支,因为开发的版本都是按省份来区分的。每次上线一个省份版本就需要新建一个build.xml脚本。当时我们用ant主要目的是为了编译与打包,在编写ant的打包脚本时,给人感觉就像编写shell脚本,设置变量(<property>),创建(<mkdir>),删除(<delete>)目录等,编写task(<target>),每个task还要用顺序,弄明白相互的依赖。每次如果有新的改动,需要重新修改build.xml脚本。编写完脚本配置到Hudson上,就可以打包了,运维人员直接在服务器拿war包即可。在这个过程中发现,这个脚本如果很复杂的话,需要有专门的人来维护,我当时的项目组估计只有我自己能比较熟练的修改这个脚本,这就造成后续维护人员的维护成本。

第二家公司完全采用maven的管理方式,给我的感觉就是整个项目变的清晰,已于管理,尤其是jar包的依赖,通过nexus私服管理所有的jar包,以及自己的jar包上传以及版本升级更易于理解,之前用ant没有jar包升级的概念,采用全量打包,所有jar包全部依赖,使得war包体量很大,用maven管理dependency相关的jar包一目了然。再一个打包更方便了,只需要输入命令mvn package -P即可,区分了测试环境,线上环境。

总之,约定大于开发是开发走上容易管理的道路,更容易控制整个项目的管理。我认为开发更倾向于maven构建工程。