maven构建配置文件分为两部分:环境配置,构建配置。环境配置主要是仓库配置,构建配置主要是项目中pom 文件依赖的jar,构建流程配置。
1.仓库说明
仓库分为本地,远程仓库 。远程仓库又包含中央默认仓库,私服,其他远程仓库
2.环境配置,环境配置分为全局,用户,项目是三个级别;构建的时候按照一定顺序读取仓库下载依赖
类别 | 文件位置 | 备注 |
---|---|---|
全局级别配置 | maven/conf/setting.xml 中配置 | 无 |
用户级别配置 | .m2/setting.xml | 很少用到 |
项目级别配置 | 项目目录下的pom 文件 | 无 |
3.配置说明
(1)本地仓库配置只有全局配置在maven/conf/setting.xml中 打开localRepository 默认是注释的;
<localRepository>/you/wanted/path</localRepository>
(2)远程仓库配置
中央仓库是默认的,无法修改但是可以给中央仓库,添加镜像;
<mirror>
<id>mirrorId</id> //镜像id 一般用于下载时显示
<mirrorOf>repositoryId</mirrorOf> //用于需要添加镜像的源id
<name>Human Readable Name for this Mirror.</name> //描述信心
<url>http://my.repository.com/repo/path</url>
</mirror>
例:镜像中央仓库到华为云
<mirror>
<id>huaweicloud</id>
<mirrorOf>central</mirrorOf> //代理中央库
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
<mirror>
<id>huaweicloud</id>
<mirrorOf>tainzehao</mirrorOf> //代理pom中设置的远程id为tianzehao的源
<url>https://mirrors.huaweicloud.com/repository/maven/</url>
</mirror>
全局自定义远程仓库设置全profile仓库,通过 settings.xml 中的 settings.repositories.repository 配置;一般全局的profile要与activeProfiles标签联合使用
或者动态传进来
<profiles>
<profile>
<id>s_profile</id>
<repositories>
<repository>
<id>settings_profile_repo</id>
<name>netease</name>
<url>http://mirrors.163.com/maven/repository/maven-public/</url>
<releases>
<enabled>true</enabled>
</releases>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
</profile>
</profiles>
<activeProfiles/> //通过这个标签来选择激活
私服也可以通过这个来定义远程仓库
项目级设置仓库,在项目pom中定义远程仓库地址
<repositories>
<repository>
<id>jdk14</id>
<name>Repository for JDK 1.4 builds</name>
<url>http://www.myhost.com/maven/jdk14</url>
<layout>default</layout>
<snapshotPolicy>always</snapshotPolicy>
</repository>
</repositories>
项目profile仓库,通过 pom.xml 中的 project.profiles.profile.repositories.repository 配置
总结仓库配置可以分为6中
名称 | 说明 | 配置方式 |
---|---|---|
本地仓库 | 本机下载存储的路径 | maven/conf/setting.xml 标签localRepository |
中央仓库 | 无需设置有个默认id central | |
全局远程仓库 | 全局的远程仓库,可以用来搭建私服,优先获取仓库 一般与标签activeProfiles 连用 | 在maven/conf/setting.xml中配置 |
镜像仓库 | 镜像仓库可以镜像任何远程仓库只要id唯一对应,其实镜像仓库只是算个接口标签不算仓库 | 在maven/conf/setting.xml中配置 |
项目远程仓库 | 直接在写在项目中的仓库地址 | 由pom.xml 文件配置 |
项目profile远程仓库 | project.profiles.profile.repositories.repository 配置 |
重要总结
这些仓库搜索顺序是 local_repo(本地仓库) > settings_profile_repo(全局远程仓库) > pom_profile_repo(项目profile远程仓库) > pom_repositories(项目远程仓库) > settings_mirror(镜像仓库) > central(中央仓库)
这写都配置的情况下,是按照这个顺序收缩的,找不到就报错;
如果没有找到说明是镜像配置不够全,这是我常用的镜像配置。也可以自行查找阿里云的镜像说明https://developer.aliyun.com/mvn/guide
<mirrors>
<mirror>
<id>alimaven</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/central</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alicentral</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimavenspring</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/spring</url>
<mirrorOf>spring</mirrorOf>
</mirror>
<mirror>
<id>alimavenspringplugin</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/spring-plugin</url>
<mirrorOf>spring-plugin</mirrorOf>
</mirror>
</mirrors>
附:setting 标签配置说明
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.2.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.2.0 https://maven.apache.org/xsd/settings-1.2.0.xsd">
<localRepository>H:/.m2/repository</localRepository>
<pluginGroups>
</pluginGroups>
<proxies>
</proxies>
<servers>
</servers>
<mirrors>
<mirror>
<id>alicentral</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>alimavenspring</id>
<name>aliyun maven</name>
<url>https://maven.aliyun.com/repository/spring</url>
<mirrorOf>spring</mirrorOf>
</mirror>
</mirrors>
<profiles>
</profiles>
</settings>