maven笔记小抄
作者:互联网
settings.xml
settings.xml位置
- 标签指定本地下载的依赖在本地的保存位置
${user.home}/.m2/repository表示C:\Users\username.m2\settings.xml
- idea中File | Settings | Build, Execution, Deployment | Build Tools | Maven的local repository可以覆盖
settings.xml内容
<?xml version="1.0" encoding="UTF-8"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<pluginGroups></pluginGroups>
<proxies></proxies>
<localRepository>.m2/repository</localRepository>
<mirrors>
<mirror>
<id>settings-mirror</id>
<url>https://maven.aliyun.com/repository/public</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
<profiles>
<profile>
<id>xxx-product</id>
<repositories>
<repository>
<id>xxx-xxx-repo</id>
<url>url</url>
<releases>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</releases>
<snapshots>
<enabled>true</enabled>
<updatePolicy>always</updatePolicy>
</snapshots>
</repository>
<repositories>
</profile>
</settings>
依赖下载基本优先级
- 本地所有Maven项目都复用一个本地仓库
- 中央仓库从远程仓库/私服(可配置)下载必要的构建
本地仓库 > 特定仓库reporitory的镜像mirror > settings中配置的仓库repository
详细优先级: local-repo > settings-profile-repository > pom-profile-repository > pom-repository > central
本地仓库 > 私服 (profile)> 远程仓库(repository)和 镜像 (mirror) > 中央仓库 (central)
Maven核心概念
仓库地址和坐标之间的关系
groupId com.huawei.xxxcommon.xxx
artifactid xxx-service
version 1.0
packaging jar(bundle war...)
classifier 附加构建信息
groupid artifactid version是必须定义的
仓库地址: base + com/huawei/xxcommon/dmq/xxx-service/1.0/xxx.jar
Maven依赖优选原则
- 依赖最短路径优先原则
A-B-C-X{1.0} A-D-X{2.0} 选择X{2.0} - pom文件中声明顺序优先 先声明的依赖
- 覆写优先
子pom内声明的优先于父pom的依赖
maven生命周期
- 三套生命周期相互独立
clean(pre-clean clean post-clean) > default(validate compile test package verify install deploy) > site - 一套生命周期中,生命周期阶段前后依赖
- mvn命令指向生命周期阶段
maven插件
- Maven本身是一个框架,实际的任务都由插件完成
- 插件与生命周期阶段绑定,用户通过指定生命周期阶段就能够隐式的通过插件执行任务
- 打包类型(packaging)控制default生命周期与插件目标(plugin goal)的绑定
常见label的含义
- mirrorOf
为某个仓库repository做镜像, 填写的是repository id, * 匹配所有的仓库
相当于一个拦截器,它会拦截maven对remote repository的相关请求,
把请求里的remote repository地址,重定向到mirror里配置的地址
mirrorOf=“*” //刚才经过,mirror一切,你配置的repository不起作用了
mirrorOf=my-repo-id //镜像my-repo-id,你配置的my-repo-id仓库不起作用了
mirrorOf=*,!my-repo-id //!表示非运算,排除你配置的my-repo-id仓库,其他仓库都被镜像了
就是请求下载my-repo-id的仓库的jar不使用mirror的url下载,其他都是用mirror配置的url下载
mirrorOf=external:* //如果本地库存在就用本地库的,如果本地没有所有下载就用mirror配置的url下载
- packaging
项目的发布形式jar war rar pom maven-plugin ear ejb par
multi-moduls
maven3支持maven项目的多模块结构(聚合项目), 通常由一个父模块和若干个子模块构成
父模块必须以pom打包类型,同时以给出所有的子模块
- relativePath
是maven为了寻找父模块pom.xml所额外增加的一个寻找路径
<parent>
<groupId>com.company.department.group</groupId>
<artifactId>reponame</artifactId>
<version>xxx-SNAPSHOT</version>
<relativePath>../../../pom.xml</relativePath>
</parent>
标签:repo,repository,仓库,小抄,笔记,maven,pom,mirror 来源: https://blog.csdn.net/qq_32252957/article/details/121990714