Maven的基本用法

Maven好几年前就成为Java企业级开发的标配了,不懂Maven,你都不好意思说你是Java开发者。甚至像Spring、Hibernate等开源框架早都已经用上更新的Gradle作为项目依赖管理工具。

笔者的博文也用Maven来描述jar依赖配置很久了,本文主要简单总结一下Maven的基本用法,以供自己博文中引用,给没学过Maven的读者参考参考。

一、Maven的安装
二、Maven的生命周期
三、Maven的配置文件settings.xml
四、Maven项目的配置文件pom.xml

一、Maven的安装
1、首先去Apache的Maven官网下载最新版本的Maven: http://maven.apache.org/download.cgi



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



配置环境变量Path为:%M2_HOME%\bin



4、验证Maven安装
windows下打开cmd,执行mvn -version



发现提示没找到JAVA_HOME,那么配置一下环境变量JAVA_HOME



配置好JAVA_HOME变量后,重新打开cmd执行mvn –version



至此,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

猜你喜欢

转载自jisonami.iteye.com/blog/2300036