Apache Maven,是一个软件(特别是Java软件)项目管理及自动构建工具,由Apache软件基金会所提供。基于项目对象模型(缩写:POM)概念,Maven利用一个中央信息片断能管理一个项目的构建、报告和文档等步骤。Maven也可被用于构建和管理各种项目,例如C#,Ruby,Scala和其他语言编写的项目。Maven曾是Jakarta项目的子项目,现为由Apache软件基金会主持的独立Apache项目。
1.maven 软件安装
- 确定本地安装 JDK
打开cmd 敲击:echo %JAVA_HOME% 检查 本地是否配置 JAVA_HOME环境变量;JAVA -version 检查 JAVA 可执行程序是否可用 - maven zip 包,解压,解压的路径不要出现中文或者特殊符号
- 配置 maven 的环境变量
配置 MAVEN_HOME 环境变量名称对应的值为:maven 软件的解压路径
配置 PATH 环境变量名称对应的值:%MAVEN_HOME%/BIN - 检查 maven 的环境变量配置是否完成
mvn -v 是否显示maven相关信息,没有显示表示maven 未配置成功
2.快速创建 maven 项目
- mvn archetype:generate -DgroupId=com.xingxue.mavendemo -DartifactId=mavendemo-day1 -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false
-DgroupId : maven 项目的名称
-DartifactId : maven 项目模块名称
-DarchetypeArtifactId :使用maven 的骨架(工程结构)
3.maven 项目工程结构
----| maven 项目模块文件夹
---|src 文件
---|main 主代码
---| java 文件夹:将来都放包
---| resouces 文件夹:将来放配置文件
---|test 测试代码
---| java 文件夹:将来都放包
---| resouces 文件夹:将来放配置文件
---|pom.xml pom文件
- maven 常用命令:
编译命令:mvn compile
清除命令: mvn clean
测试命令: mvn test
打包命令: mvn package
安装命令:mvn install
4.maven 坐标
站在 maven 软件的角度看 项目,每个项目都是一个构建而已,一个项目如果要分模块,可以把每个模块看成一个构建。一个构建要依赖其他的构建,如何去引用其他构建,三坐标来描述一个构建。
三坐标:gav
groupId:描述项目名称(带个组织公司的域名)eg:com.xingxuecn.crm
artifactId:描述项目的模块 eg:crm-service
version:模板的版本号 eg:1.0三坐标在 pom 文件中进行描述
<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>com.xingxue.mavendemo</groupId>
<artifactId>mavendemo-day2</artifactId>
<version>1.0-SNAPSHOT</version>
artifactId + version = 打成jar 的名称
eg:mavendemo-day2-1.0-SNAPSHOT.jar构建在仓库中的路径 = groupId+artifactId+1.0-SNAPSHOT路径下
pom 文件:(project object model),该文件用于来描述模块的信息的,不仅来描述模块的三坐标,将来还要描述依赖管理的插件以及jar包等信息
-
修改 中央仓库的地址:
5.依赖管理
依赖包具有传递性,如果有一个包要依赖其他,其他的包也会同时下载
eg:下载 struts2的包,只需要导入 struts2-core包,就会依赖的下载其他的包
<dependencies>
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-core</artifactId>
<version>2.3.34</version>
</dependency>
</dependencies>
依赖包的图如下:
查询构建的三坐标网站:http://mvnrepository.com/
6.仓库管理
仓库将来就是用于存放一些 jar 包以及 maven 插件(编译插件、打包的插件......)
- 仓库分类
本地仓库 : .m2文件夹 (仓库)
私服 :公司搭建的 maven 仓库
中央仓库:官方 http://repo1.maven.org/maven2
远程仓库:非官方 (镜像地址 ailibaba maven 镜像):http://maven.aliyun.com/nexus/content/groups/public/
本地仓库 --------------------> 私服 ------------------->远程仓库
7.生命周期
Maven有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互独立”,初学者容易将Maven的生命周期看成一个整体,其实不然。这三套生命周期分别是:
Clean Lifecycle 在进行真正的构建之前进行一些清理工作。
Default Lifecycle 构建的核心部分,编译,测试,打包,部署等等。
Site Lifecycle 生成项目报告,站点,发布站点。
注意:它们是相互独立的,你可以仅仅调用clean来清理工作目录,仅仅调用site来生成站点。当然你也可以直接运行 mvn clean install site 运行所有这三套生命周期。
mvn install : 编译 、 测试 、 打包 、 安装,这就是一套默认的构建生命周期
mvn clean: 构建输出的清理
mvn clean install : 先执行 清理,然后编译 、 测试 、 打包 、 安装
常用两套生命周期来玩: mvn clean test 、 mvn clean compile、 mvn clean package....
8. maven 软件 集成到 Eclipse,利用 Eclipse 自带的 maven 插件
- Eclipse 自带的 maven 插件 m2Eclipse 插件。
-
使用 eclipse 创建 maven jar工程
-
使用 eclipse 创建 maven war工程