笔者的博文也用Maven来描述jar依赖配置很久了,本文主要简单总结一下Maven的基本用法,以供自己博文中引用,给没学过Maven的读者参考参考。
一、Maven的安装
二、Maven的生命周期
三、Maven的配置文件settings.xml
四、Maven项目的配置文件pom.xml
一、Maven的安装
1、首先去Apache的Maven官网下载最新版本的Maven: http://maven.apache.org/download.cgi
![](http://dl2.iteye.com/upload/attachment/0117/6068/e0e426c1-fb49-3733-9529-933b0eaa0c43.png)
Windows下下载apache-maven-3.3.9-bin.zip
linux下下载apache-maven-3.3.9-bin.tar.gz
maven最新版本是3.3.9,我用的是3.3.3,懒得下载了,不要在意这些细节。
2、将下载的zip压缩包解压到某个目录
这里将Maven解压到D:\SDK\Maven\apache-maven-3.3.3目录
3、将解压后的Maven目录配置到环境变量中去
以Maven目录为D:\SDK\Maven\apache-maven-3.3.3为例,即如下图所示
配置环境变量M2_HOME为:D:\SDK\Maven\apache-maven-3.3.3
![](http://dl2.iteye.com/upload/attachment/0117/6070/3fd2b144-5f52-3fd6-bf4e-118603d3b42d.png)
配置环境变量Path为:%M2_HOME%\bin
![](http://dl2.iteye.com/upload/attachment/0117/6072/ee3b7af5-0a64-3357-981a-3d0b8f4ec3fa.png)
4、验证Maven安装
windows下打开cmd,执行mvn -version
![](http://dl2.iteye.com/upload/attachment/0117/6074/06f1d624-150d-33a1-8013-5a0ed42a7e62.png)
发现提示没找到JAVA_HOME,那么配置一下环境变量JAVA_HOME
![](http://dl2.iteye.com/upload/attachment/0117/6078/97ac4dbd-73e6-31c0-b4df-c4d597a5d10b.png)
配置好JAVA_HOME变量后,重新打开cmd执行mvn –version
![](http://dl2.iteye.com/upload/attachment/0117/6076/c1bc163d-4194-3de6-ab7f-a831e3b72f4e.png)
至此,maven安装成功了。
二、Maven的生命周期
Maven的生命周期执行命令格式:mvn 任务名
Maven会执行生命周期内的所有在该任务之前的任务
如:mvn clean,会执行pre-clean和clean两个任务。
Maven有三套独立的生命周期,分别是clean、default、site。
clean的生命周期如下(mvn clean)
pre-clean -> clean -> post-clean
pre-clean:执行clean之前需要完成的任务
clean:清理上一次构建生成的文件
post-clean:执行clean之后需要立刻完成的任务
default的生命周期如下(这个是开发者用得最多的)
compile -> test -> package -> install -> deploy
compile:编译项目
test:测试项目
package:打包项目
install:发布项目到本地maven仓库
deploy:发布项目到远程maven仓库
site的生命周期如下
pre-site -> site -> post-site -> site-deploy
pre-site:执行site之前需要完成的任务
site:生成项目的文档站点
post-site:执行site之后需要完成的任务
site-deploy:将生成的文档站点发布到远程服务器
在mavn的这三套生命周期中,开发者还可以自定义插件,实现在生命周期的任意阶段添加任务。对我们开发者而言,一般是不需要编写maven插件的。
三、Maven的配置文件settings.xml
在maven的安装目录下,conf目录下的settings.xml是maven的全局配置文件,主要配置maven的本地仓库路径,插件组,maven的远程服务器和maven仓库的镜像,还有一些maven的全局设置。
1、配置maven的本地仓库路径(默认是操作系统用户下的.m2目录)
<localRepository>D:\SDK\Maven\m2_repository</localRepository>
2、插件组
我平时不用,如用到自行google
3、配置maven的远程服务器
<server> <id>deploymentRepo</id> <username>repouser</username> <password>repopwd</password> </server>
4、配置maven仓库的镜像
<mirror> <id>mirrorId</id> <mirrorOf>repositoryId</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://my.repository.com/repo/path</url> </mirror>
我的maven常用镜像参考: http://jisonami.iteye.com/blog/2298592
5、maven的一些全局配置
这个我也不常用,就是在<profiles>标签下配置,需要结合<activeProfiles>使用
四、Maven项目的配置文件pom.xml
Maven最关键的部分来了,也是我们用的最多的配置文件pom.xml,每个maven项目都有一个pom.xml在其根目录下,用于描述该项目的jar依赖配置。
1、 确定一个Maven项目的坐标
这是Maven最基本的配置,在pom.xml中会用到很多。
<groupId>标签确定一个maven项目的公司名或组织名,一般使用该公司或组织的域名反转
<artifactId>标签确定一个maven项目的项目名或模块名
<version>标签确定一个maven项目的版本
以笔者目前的博文示例项目为例
<groupId>org.jisonami</groupId> <artifactId>Jisonami2</artifactId> <version>0.1.1</version>
2、 maven项目的父项目
<parent>标签确定一个maven项目的父项目,该maven项目会继承自父maven项目所有属性和依赖配置,在本项目中配置的同名属性或依赖会覆盖父项目中的配置
<parent>标签中使用前面介绍的maven坐标三元素确定父maven项目
以继承spring-boot-starter-parent项目为例
<parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>1.3.3.RELEASE</version> </parent>
3、 maven项目的属性
maven项目的属性可以看成是编程语言中的变量,使用<properties>标签定义一些属性,此处定义的属性可以在在pom.xml文档中使用el表达式引用,即${name}的形式引用名为name的属性,属性一般用于maven坐标中的<version>标签,比如
<properties> <oracle6.version>11.2.0.3</oracle6.version> </properties>
4、maven项目的依赖配置
Maven项目的依赖配置使用<dependences>配置,下面嵌套多个<dependence>标签,每个标签配置一个依赖,每个依赖使用maven坐标描述。如下所示:
< dependencies> <!-- 引入oracle数据库jdbc驱动包 --> <dependency> <groupId>com.oracle</groupId> <artifactId>ojdbc6</artifactId> <version>${oracle6.version}</version> </dependency> </dependencies>
5、maven的构建配置
maven的构建配置在<build>标签下配置,我们主要配置一下maven插件,比如使用spring-boot-maven-plugin,则如下配置:
<build> <plugins> <!-- spring boot项目编译插件 --> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> <version>1.3.3.RELEASE</version> </plugin> </plugins> </build>
以上就是我经常使用的maven特性,更详细的配置参考我的Github项目Jisonami2: https://github.com/jisonami/Jisonami2