记得在有次面试的时候,跟一个牛比哄哄的技术总监谈到maven的使用,估计这位大牛听说过maven,但没有使用过,所以对其比较不屑。牛哄哄逼供,你为什么要使用maven,有什么好处,我想了想简单的总结,maven使用了类包仓库的机制和全程构建的功能,类库仓库能使开发人员使用到统一的构建类包,避免的了java包的混乱。他不屑的说,我把包全部放到lib底下不更简单,我无语道,开发方式各有各的不同,maven提供了另外一个机制罢了,当时想确实把包放在lib底下没有多大的问题。
maven2出来后,风光了一把,正所谓物极必反,随后而来的是来自各个方面质疑和其他构建工具的对比。之前我也使用过maven来构建,也痛苦了一阵:一是包的插件确实不好管理,以前都是需要什么功能把包下载好以后一股脑塞到lib底下,或者IDE会帮你自动生成,压根就没怎么去注意这个问题,没注意就等于没问题,但使用maven,你不得不考虑周全了;二则从官网下载包确实慢,构建时候等待的时间都够我去找人玩盘魔兽了,为了使用还不得不去找个私服;三是如果官网上有你需要的包,很舒爽写条配置项就好了,其他不用操心,还能顺便把doc和源代码下载下来,开发的时候参考用,但--就是这转折,如果官网上没有你需要的包,或者你需要的版本还属于beta、alpha阶段,头大了,依赖包都得自己弄,不弄个精神崩溃、神经分类誓不罢休,特别是当几个大的框架要组合在一起的时候尤甚。
所以,对于maven的使用与否,我还保留谨慎的态度。不过今天我改变了我的态度,有些东西在特定的场合内还是十分适用的。BOSS任务下达,需要我打开平台的源码做修改,打开cvs,傻眼了,那么多的子项目,不知道里面的包是怎么管理的。结果不出我所料,下载完后,完全不能用,包还得一个一个配置,一个个找到,把ide上的红叉叉全部solve一遍,还是不能保证项目能运行的起来。有些包使用本地的,你得copy一份过来,有些包依赖其他的子项目,你得改路径。搞得每个子项目中,都有长长lib,像极了中午餐厅里那长长的等待咪嘻咪嘻的队伍。
如果使用maven来管理,应该就没有那么多的麻烦了,写好配置文件一股脑塞到服务器上,会发现原来生活可以更好的。对于上面的问题key1:对于维护来说,以后包的更新是必要的,如果对lib完全置之不理,维护的灾难是不可想象的,剔除冗余的包,不用maven还真没办法做到。问题key2:有了artifactory现在建立私服方便了不少,按需下载节省了很多的服务器空间,第二次构建的时候,就不会有时间打魔兽了。问题key3:对于一些自己开发的类库,或者官网没有的lib包,可以手动配置到arityfactory上,一次设置,终身可用,主要是项目中要有人对maven十分的熟悉,这个是成本问题了。
按照“约定大于配置”的原则,在一个大项目中、特别是有多个子项目的工程中,引入maven是很有必要的,就算是只使用它的包管理机制。如果一个项目太依赖与一个ide,或者依赖于某个复杂的运行环境,maven就显得也十分必要。
想要在目前的项目中引入maven,估计是不可能了,等时机再成熟点到我能独立负责一个模块的时候,再向BOSS提议吧,还包括了项目没有引入wiki找个答案麻烦的紧、文档很混乱、文档的编写还是纯手工的原始状态。慢慢来吧
maven2出来后,风光了一把,正所谓物极必反,随后而来的是来自各个方面质疑和其他构建工具的对比。之前我也使用过maven来构建,也痛苦了一阵:一是包的插件确实不好管理,以前都是需要什么功能把包下载好以后一股脑塞到lib底下,或者IDE会帮你自动生成,压根就没怎么去注意这个问题,没注意就等于没问题,但使用maven,你不得不考虑周全了;二则从官网下载包确实慢,构建时候等待的时间都够我去找人玩盘魔兽了,为了使用还不得不去找个私服;三是如果官网上有你需要的包,很舒爽写条配置项就好了,其他不用操心,还能顺便把doc和源代码下载下来,开发的时候参考用,但--就是这转折,如果官网上没有你需要的包,或者你需要的版本还属于beta、alpha阶段,头大了,依赖包都得自己弄,不弄个精神崩溃、神经分类誓不罢休,特别是当几个大的框架要组合在一起的时候尤甚。
所以,对于maven的使用与否,我还保留谨慎的态度。不过今天我改变了我的态度,有些东西在特定的场合内还是十分适用的。BOSS任务下达,需要我打开平台的源码做修改,打开cvs,傻眼了,那么多的子项目,不知道里面的包是怎么管理的。结果不出我所料,下载完后,完全不能用,包还得一个一个配置,一个个找到,把ide上的红叉叉全部solve一遍,还是不能保证项目能运行的起来。有些包使用本地的,你得copy一份过来,有些包依赖其他的子项目,你得改路径。搞得每个子项目中,都有长长lib,像极了中午餐厅里那长长的等待咪嘻咪嘻的队伍。
如果使用maven来管理,应该就没有那么多的麻烦了,写好配置文件一股脑塞到服务器上,会发现原来生活可以更好的。对于上面的问题key1:对于维护来说,以后包的更新是必要的,如果对lib完全置之不理,维护的灾难是不可想象的,剔除冗余的包,不用maven还真没办法做到。问题key2:有了artifactory现在建立私服方便了不少,按需下载节省了很多的服务器空间,第二次构建的时候,就不会有时间打魔兽了。问题key3:对于一些自己开发的类库,或者官网没有的lib包,可以手动配置到arityfactory上,一次设置,终身可用,主要是项目中要有人对maven十分的熟悉,这个是成本问题了。
按照“约定大于配置”的原则,在一个大项目中、特别是有多个子项目的工程中,引入maven是很有必要的,就算是只使用它的包管理机制。如果一个项目太依赖与一个ide,或者依赖于某个复杂的运行环境,maven就显得也十分必要。
想要在目前的项目中引入maven,估计是不可能了,等时机再成熟点到我能独立负责一个模块的时候,再向BOSS提议吧,还包括了项目没有引入wiki找个答案麻烦的紧、文档很混乱、文档的编写还是纯手工的原始状态。慢慢来吧