1. Maven 是什么?

 Maven 是一个Java 项目构建工具,那么什么叫java 项目的构建工具呢, 简单的说就是通过调用JVM的封装好的命令(比如jar,javac..)命令来编译,打包成jar或者war包。

 所以说如果不是用maven 去构建项目的话, 我们就只能使用jdk底层提供的命令去打包我们用eclipse 或则别的IDE开发的项目了,这样做的话会很繁琐。

 

2. Maven 相关概念理解和特点

 特点:

 a. 约定优于配置

 这个特性我觉得体现在以下方面,第一是maven 的项目目录结构如下:

 

maven使用jar Maven使用心得_maven

这个目录结构已经约定好了,从名字可以看出main/java 下方的是项目的类文件,main/resource放的是资源文件,test/java放的是测试代码,test/resource放的是测试用的资源文件。

第二点体现约定优于配置的地方是Maven 的life cycle,phase,goal 这几个概念的关系。

Life cycle:maven项目构建的生命周期,一言以蔽之,执行一条maven命令经历了那些phase(阶段),所以life cycle 是由phase 组成的

Phase: 把一个项目的构建过程,分成好几个阶段,validate compile test package verify install deploy

比如说 maven install , 这个构建的生命周期就是 validate compile test package verify

goal :组成phase 的基本单位

validate: 看看项目有没有编译错误

compile: 把*.java 文件编译成*.class 文件放到对应的target 目录下面

test: 跑写的措施代码,比如说junit test case

package :把项目打成一个jar 或者一个war

install :把打成的jar 或者war 放到本地的仓库(默认可以在你的user 目录下找到一个.m 文件夹,就是你的本地仓库的位置)

deploy: 把打成的war 或者jar 发布到远程的私服上面。

 

b.把项目抽象成一个对象

 Maven 使用pom.xml (project object model)文件来描述整个项目,可以把整个项目看做一个对象,把这个pom.xml 文件看作一个对象。每个节点都是一个成员变量。比如dependency,plugins。

 

3.Maven 环境的搭建

  a. Maven jar的管理是这样一个过程,首先会从本地仓库里面去找jar,如果没有找到,就会从私服上面去找依赖的jar,在没有就回去从中央仓库下面去找。其关系过程如下图:

maven使用jar Maven使用心得_jar_02

通常情况下私服是可以配置的在maven 的setting.xml 文件中,比如说我就在我的文件下面这么配置的。中央仓库就是maven 默认的一个仓库。

<mirrors>
		<mirror>
			<id>alimaven</id>
			<name>aliyun maven</name>
			<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
			<mirrorOf>central</mirrorOf>
		</mirror>
	</mirrors>

2. Maven 环境变量的配置,由于maven 是一个纯java项目,所以首先需要安装好jdk,环境变量的配置可以通过在网上搜索对应的教程,最后通过mvn -version 来验证maven 是不是安装好了。

3. Eclipse + Maven 环境的搭建,通过M2E 把eclipse 和maven 连起来,使Maven 和Eclipse 一起工作,一般情况下比较新的版本的eclipse 都有自带的M2E.

结语:Maven 的功能还是很强大的,Maven 可以通过调用Ant的插件来调用自定义的task ,但是这个ant的插件必须要绑定到Maven 相对应的一个phase 上面,或者直接把这个task 绑到一个phase 上。其实就是,如果需要写一个自定义个的goal, 就必须把这个goal 放到对应的phase 里面,这样就显得Maven 有点不灵活了,同时这也是约定优于配置的缺点吧!