前言:我学的第一个项目构建工具是ANT,但是在项目开发中并没有被使用,那时呆的公司完全作坊型的,直接用MyEclipse打包的。后来在华为做项目的时候里面有一整套CI平台,我没接触过里面的ANT脚本,直到在支付宝做的时候接触到ANTX,那是第一次感受到构建之美。看过网上很多文章都是copy的,我很想站在新手基础上说说为什么要使用Maven。
1.我现在使用MyEclipse工具,她帮我编译,打包,自动部署一直很方便,而且就这样用了几年了,难得这还不够吗?
首先我想说的是MyEclipse是收费的。不是装B,绝对不是装B,当你呆的公司性质不同的话对知识产权是很注重的。像我现在呆的公司如果发现使用未授权的软件是直接罚钱的。我推荐使用Eclipse NetBeans这些免费好用的。
另外我个人观点是,如果你觉得目前这种方式在团队开发、实施都一直很顺利的话是完全不用使用Maven的,满足了你实际用到的就行,就好比你做个登录程序,用jsp足够了,何必用ssh、ejb之类的呢。
2. 我想听听使用Maven有什么实际性的好处,不要说什么新技术、高端之类的废话!
这个问题也很实际,我也这样想过的,我说说我在实际开发中很常见的现象
a) 项目代码过多后在eclipse里面屏幕都装不下了。
mvn里面的多模块开发很nice的,如果是前端的话直接拉action那层的代码就行了,dao service都不用拉的.
b) PM经常过来要你部署下看看效果
用了mvn后PM只需要在页面上点一下就可以部署了
c) 很多开源工具包的源码看不了,老要在eclipse下关联下
用了mvn后自动对应~
d) 代码过多后用eclipse部署都有点慢了
用了mvn后都把模块打成jar了,部署速度快多了。如果不理解的话打个比方:如果你把spring的源码放到工程里面部署 和 直接使用spring的jar部署,看看哪个速度快。
e) 我想看看测试用例一共有多少个,成功多少,失败多少?
用了mvn后直接生成报告,而且还有语法高亮显示。
f) 我和同事加入jar包,有的是log4j.jar,有的是struts-croe-2.1,每个人加的jar规范都不用(注意版本-2.1)
用了mvn后直接在仓库上找了,配合nexus直接搜索。
g) 开发过程中一些配置文件和测试、生产环境的都不同,每次发版本都要人工修改
用了mvn后不用管,配一次就行了,以后她自动修改
h) 每次发版本后测试人员都要刷sql脚本,部署,好麻烦,难得没简单的办法吗?
和b)问题类似,再次强调下,mvn她可以一个命令自动创建数据库,自动从SVN上下载代码,自动编译、测试、打包、部署到tomcat里
3. 我也知道Maven是靠命令的,但是这样开发不会很慢吗,比如我在开发阶段eclipse里面自动部署到tomcat,Maven能做到吗,难得我还需要用命令部署啊,那不是慢死了 ?
这个问题也是我开始使用Maven最郁闷的地方了,其实不然,Maven在开发阶段比传统的快多了, Maven可以内嵌一个Jetty容器的,有个很炫的功能,可以在Main方法里面直接启动她,就像和写普通j2se程序一样的调试 , 并且当你的JSP改动后她也是自动更新 的(class文件不行),怎么样,这样的话岂不是最快了,并且分模块开发后直接导入jar后启动更快。
4. 一般学习Maven需要多长时间?
我带的实习生半天可以生成一个项目,加入JAR包并且测试、打包,大致了解她的生命周期就行了,只需要这样Maven你就会了80%,我个人感觉真的不难,因为资料多,而且不用写一行代码。
5.Maven有什么缺点?
个人感觉唯一缺点是pom.xml文件过长了,gradle采用groovy脚本代码精简了很多