Maven说白了,就是在用一个pom.xml文件来对项目进行管理,maven程序就是通过这个pom.xml文件,去生成相应的项目(jar、war包等)。

 

而所谓的依赖,其实就是将所有需要用到的jar以某种规则(maven里就叫做坐标)写到pom.xml文件里,maven就会根据这些信息到网上帮我们下载需要的jar,而不是像以前那样,我们需要自己去下载jar文件,然后再将jar放到某个目录(例如lib)里。

 

我们可以经常在网上看到一些教程,说maven这样做给我们带来了很多方便,因为不用我们直接去下载jar包,其实我觉得就这一点来说,还真没体现出maven的好处,因为要让maven知道我们所需要的jar包,我们是要先去找坐标,去网上查一下groupId,version,artifactId等等这些信息,然后写到pom.xml文件去;这跟我们直接去官网找jar包,我想是没多大的优势的。

 

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

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

<project
xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/maven-v4_0_0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>exam</groupId>
<artifactId>exam_3</artifactId>
<packaging>war</packaging>
<version>0.0.1-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-web</artifactId>
<version>3.0.5.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>3.0.5.RELEASE</version>
</dependency> 
</dependencies> 
</project>

 

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

 

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

 

4、插件解析机制(热部署,热编译)

在你web项目已经运行的时候,修改代码的能直接被web服务器所接受,就不需要你 重启服务器了,或者重新部署代码了,而且你可以直接通过maven打包war或者jar项目。