一、Maven 介绍
mvn 中央仓库: https://mvnrepository.com/
1.1、Maven 是什么?
(1) Maven 是主要服务基于java平台的项目构建,依赖管理和项目信息管理的一个工具。即 Maven 是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model,POM文件) 。
(2)项目构建包括清理,编译,测试到生成测试报告,再到打包和部署;依赖管理是maven借助于坐标来实现的。
(3)maven是跨平台的,可以在windows,linux和mac OS等系统上运行。
查询开源公共依赖jar : https://mvnrepository.com/
1.2、Maven 目录结构
(1)bin:maven运行脚本,命令。
(2)boot:包含plexus-classworlds-2.2.3.jar (plexus-classworlds是一个类加载器框架,相对于java 默认类加载器,他提供了更丰富的语法以方便配置,maven使用该框架加载自己的类库)。
(3)conf:配置文件 setting.xml,修改该文件就可以在机器上全局的制定maven的行为。但一般情况下,更倾向于复制该文件到~(用户目录)/.m2/目录下,然后修改该文件,在用户范围内制定maven的行为。
(4)lib:包含maven运行时所需要的java类库,包括第三方的依赖类库。
(5)LICENSE.txt:记录了maven使用该软件的许可证。
(6)NOTICE.txt:记录了maven包含的第三方软件。
(7)README.txt:记录了maven的简要介绍。
1.3、Maven 的项目结构
(1)项目骨架:项目的根目录下方pom.xml
(2)项目主代码:maven认为项目的主代码是位于src/main/java目录下的,所以通常我们会在此目录下创建文件,比如…/java/com/shuyun/myweb/hello/hello.java,该java类的包名是com.shuyun.myweb.hello
(3)资源文件:maven的资源文件位于src/main/resources目录下
(4)测试文件:maven默认的测试代码目录src/test/java目录
二、Maven 的安装
-
第一步,官网下在地址 http://maven.apache.org/download.cgi
-
第二步,解压文件包:apache-maven-3.5.2-bin.zip是压缩包,解压到安装路径即可。
-
第三步,配置环境变量,类似jdk环境配置
1、创建M2_HOME环境变量,指向maven的安装目录。
2、并将%M2_HOME%\bin追加到PATH路径中。
3、调试是否安装成功,在cmd中输入 mvn -version / mvn -v -
第四步,将本地仓库配置到指定路径
(*可以不进行配置,默认在C盘 : C:\Users\hawin.m2\repository)
在maven解压文件中,conf目录中修改settings.xml文件(D:\maven-3.5.2\conf\settings.xml)。可以添加新的仓库路径
<localRepository>D:\maven-3.5.2\repository</localRepository>
-
第五步,配置了中央仓库的镜像(换成了阿里的,比较稳定)
阿里云 官方指导文档 https://maven.aliyun.com/mvn/guidesettings.xml 文件中,在mirrors标签中添加子标签如下:
<mirrors> ...</mirrors> <mirror> <id>nexus-aliyun</id> <name>nexus-aliyun</name> <url>http://maven.aliyun.com/nexus/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> <!-- 下面的新的地址--> <mirror> <id>nexus-aliyun</id> <mirrorOf>central</mirrorOf> <name>Nexus aliyun</name> <url>https://maven.aliyun.com/repository/public</url> </mirror> <!-- 阿里云 官方指导文档 https://maven.aliyun.com/mvn/guide --> <mirror> <!-- 这个 ID 是用于 mirrorOf 匹配, 自定义,但是 mirrors 是唯一的--> <id>aliyunmaven</id> <!-- 这个标签里面放置的是要被镜像的Repository ID --> <mirrorOf>*</mirrorOf> <!-- 这个 name 也是自定义仓库名称 --> <name>阿里云公共仓库</name> <url>https://maven.aliyun.com/repository/public</url> </mirror>
Mirror
mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。
<mirrorOf>*</mirrorOf> 匹配所有仓库请求,即将所有的仓库请求都转到该镜像上 <mirrorOf>repo1,repo2</mirrorOf> 将仓库repo1和repo2的请求转到该镜像上,使用逗号分隔多个远程仓库。 <mirrorOf>*,!repo1</miiroOf> 匹配所有仓库请求,repo1除外,使用感叹号将仓库从匹配中排除。
<!--两个可用的mirror站点-->
<!-- 阿里云的镜像站(首推,新站,速度暴快)-->
<mirror>
<id>nexus-aliyun</id>
<name>Nexus aliyun</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<!-- 剩下就是国外的了,maven官方运维的2号仓库 -->
<!-- <mirror>
<id>repo2</id>
<name>Mirror from Maven Repo2</name>
<url>http://repo2.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror> -->
<!-- maven在UK架设的仓库(有时候速度会比官方2号仓库快) -->
<!-- <mirror>
<id>ui</id>
<name>Mirror from UK</name>
<url>http://uk.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror> -->
<!-- JBoss的仓库 -->
<!-- <mirror>
<id>jboss-public-repository-group</id>
<mirrorOf>central</mirrorOf>
<name>JBoss Public Repository Group</name>
<url>http://repository.jboss.org/nexus/content/groups/public</url>
</mirror> -->
三、Maven 的 settings.xml 说明
参考官网:http://maven.apache.org/guides/mini/guide-mirror-settings.html
# 1. 声明规范
<?xml version="1.0" encoding="UTF-8"?>
<settings 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/xsd/settings-1.0.0.xsd">
# 2. localRepository 本地仓库配置
<!-- 本地仓库的路径。默认值为${user.home}/.m2/repository。 -->
<localRepository