关于Maven的理解

来源:互联网 发布:new3dsll 淘宝 编辑:程序博客网 时间:2024/05/16 13:57

最近两个月项目用到了Maven,之前听过Maven,但是一直没有机会用。Maven的入门其实不难,大概一两天的时间,就可以做一些基本的事情了。所以在开始用Maven的时候,我是挺不理解为什么要用这个技术的。因为Maven说白了,就是在用一个pom.xml文件来对项目进行管理,maven程序就是通过这个pom.xml文件,去生成相应的项目(war包等)。而所谓的依赖,其实就是将所有需要用到的jar以某种规则(maven里就叫做坐标)写到pom.xml文件里,maven就会根据这些信息到网上帮我们下载需要的jar,而不是像以前那样,我们需要自己去下载jar文件,然后再将jar放到某个目录(例如lib)里。我们可以经常在网上看到一些教程,说maven这样做给我们带来了很多方便,因为不用我们直接去下载jar包,其实我觉得就这一点来说,还真没体现出maven的好处,因为要让maven知道我们所需要的jar包,我们是要先去找坐标,去网上查一下groupId,version,artifactId等等这些信息,然后写到pom.xml文件去;这跟我们直接去官网找jar包,我想是没多大的优势的。

但是随着Maven的不断学习,我逐渐明白,为什么要用Maven来管理项目。其实不是上面提到的下不下载的问题,而是maven有其他更加强大的功能。例如我们用Maven的话,可以将一个项目分成多个模块,以传统的MVC模式为例,我们可以将dao层做为一个模块来管理(其实我们可以理解为就是eclipse里的一个项目,只是到最后,这个项目不打成war包,而是打成了jar包的形式),service层,utilities等几个模块。这几个模块到最后都可以打成jar包供别人调用,彼此之间有依赖关系。这有什么好外呢?一、可以为这几个模块建立权限。例如utilities包这种基础包,它应该是只能让某些人去修改,那么在svn上,我们就只让某些人check out修改,其他人只能引用。二、重用。例如utilites模块,假如现在这个项目做完了,但是这个utilites模块对我们之后的项目还是可以用的啊?这没有问题,因为我们是以一个项目的形式来管理这个模块的,那么我们只需要在其他的项目配置一下引入这个模块就可以了,而不用从原来的项目抽取分离代码,这样做对我们建立管理自己的基础类库有很大的帮助。三、部署升级的时候方便。因为其中一个模块的修改,我们只需要将其打成jar包后,把原来的jar给替换就可以了,不用将所有的配置文件和.class文件都换了。四、可以直接查看开源的代码。如果用以前的方式的话,是要反编译或者去网上down源码下来看的,而且down下来的跟当前的项目是联系不上的,只能自己慢慢找。但是用maven就不同了,在eclipse里maven就可以直接帮我们下载源码,而且跟当前项目紧密联系,这个对我们的学习或者解决问题都有莫大的好处。

学习maven,我觉得有以下几点是需要理解清楚的:

1、maven的pom.xml文件里常用节点的作用,例如groupId,dependency,build等节点的意思。

2、插件的配置和插件在编译打包时的作用。例如有时候我们打成war包时,我们并不想将一些静态资源打入war包,因为我们有自己的apache,nginx等服务器,这个时候我们就可以用war插件来帮我们打包,因为maven默认是没有这些功能的。当然,还有其他的插件,例如用jetty来做调试等等。至于到哪里查找这些插件,则可以去这个网址看一下:http://maven.apache.org/plugins/。

3、生命周期。这个对我们理解maven的命令有很大的帮助,例如mvn install等命令,究竟maven是做了什么工作,通过这个生命周期的解释,我们可以很清晰的明白。

4、插件解析机制。

原创粉丝点击