ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

maven笔记小抄

2021-12-17 23:02:36  阅读:173  来源: 互联网

标签:repo repository 仓库 小抄 笔记 maven pom mirror


settings.xml
settings.xml位置
  1. 标签指定本地下载的依赖在本地的保存位置

${user.home}/.m2/repository表示C:\Users\username.m2\settings.xml

  1. 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>
依赖下载基本优先级
  1. 本地所有Maven项目都复用一个本地仓库
  2. 中央仓库从远程仓库/私服(可配置)下载必要的构建

本地仓库 > 特定仓库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依赖优选原则
  1. 依赖最短路径优先原则
    A-B-C-X{1.0} A-D-X{2.0} 选择X{2.0}
  2. pom文件中声明顺序优先 先声明的依赖
  3. 覆写优先
    子pom内声明的优先于父pom的依赖
maven生命周期
  1. 三套生命周期相互独立
    clean(pre-clean clean post-clean) > default(validate compile test package verify install deploy) > site
  2. 一套生命周期中,生命周期阶段前后依赖
  3. 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有