【读书笔记】《Maven实战》第6章 仓库

时间:2023-03-09 01:51:15
【读书笔记】《Maven实战》第6章 仓库
  • 6.1什么是Maven仓库?
    • Maven仓库:存储所有Maven项目共享的构件的统一位置。
    • Maven仓库的作用:Maven项目仅需声明依赖坐标,即可在需要的时候自动根据坐标找到仓库中的构件。
  • 6.2仓库的布局
    • Maven仓库布局方式:根据构件的唯一的坐标,可以确定其在仓库中的唯一存储路径。
    • 示例:构件groupId=org.testng、artifactId=testng、version=5.8、classifier=jdk15、packaging=jar
      • 1)使用groupId:org.testng对应路径org/testng/
      • 2)使用artifactId:testng对应路径为testng,总路径为/org/testng/testng
      • 3)使用version:5.8对应路径为5.8,总路径为org/testng/testng/5.8
      • 4)使用artifactId和version创建jar包前缀:jar包前缀为testng-5.8,总路径为org/testng/testng/5.8/testng-5.8
      • 5)如果有classifier,使用classifier:jar包文件名变为testng-5.8-jdk5,总路径为org/testng/testng/5.8/testng-5.8-jdk5
      • 6)使用packaging:总路径为org/testng/testng/5.8/testng-5.8-jdk5.jar
      • 因此,构建存在org/testng/testng/5.8/testng-5.8-jdk5.jar路径下
    • 问题排查:当无法获得声明的依赖时,可检查在仓库中是否存在
  • 6.3仓库的分类
    • Maven仓库分类
      • 本地仓库
      • 远程仓库
        • *仓库
        • 私服
        • 其他公共库
    • 构件搜索规则:
      • 1)查找本地仓库
      • 2)本地仓库找不到,查找远程仓库
      • 3)都找不到,报错
    • 6.3.1本地仓库
      • Linux默认地址:用户目录下home/username/.m2/repository/
      • 如何修改本地仓库地址?修改~/.m2/settings.xml
        【读书笔记】《Maven实战》第6章 仓库
      • 安装构件到本地仓库:mvn clean install
    • 6.3.2远程仓库
    • 6.3.3*仓库
      • 默认的远程仓库,Maven自带*仓库配置
        【读书笔记】《Maven实战》第6章 仓库
        • id:仓库的唯一标识,*仓库为central
        • layout:默认仓库布局,即6.2中介绍的布局
        • snaoshots:为false,表示不从改仓库下载快照版本的构件
    • 6.3.4私服
      • 私服:架设在局域网内的仓库服务,私服【代理】广域网上的远程仓库,供局域网内的Maven用户使用
        【读书笔记】《Maven实战》第6章 仓库
      • 构件下载规则:
        • 1)当需要下载构件时,先从私服请求
        • 2)如果私服上找不到,从外部远程仓库下载,缓存在私服
        • 3)私服提供构件下载服务
      • 私服好处:
        • 1)节省自己外网带宽
        • 2)加速Maven构建
        • 3)部署第三方构件。
        • 4)提供稳定性,增强控制。因无需访问Internet,克服网络不稳定问题。
        • 5)克服*仓库负荷。
  • 6.4远程仓库的配置
    • 示例:添加JBoss Maven仓库为远程仓库
      【读书笔记】《Maven实战》第6章 仓库
    • id:任何一个仓库的di必须是唯一的!maven自带*仓库id为central,如果别的仓库声明id为central,则自带*仓库会被覆盖!
    • releases:enabled为true,表示会下载release版本的构件
    • snapshots:enabled为false,表示不会下载SNAPSHOT版本的构件
    • 【读书笔记】《Maven实战》第6章 仓库
    • 6.4.1远程仓库认证
      • 远程仓库认证:需要用户名密码才能访问远程仓库
      • 示例:配置settings.xml,配置id为my-proj仓库的认证信息。注意:id必须与POM中需要认证的repository中的仓库id完全一样。
      • 【读书笔记】《Maven实战》第6章 仓库
    • 6.4.2部署至远程仓库
      • 示例:编辑项目的pom.xml,配置构件部署地址
        【读书笔记】《Maven实战》第6章 仓库
      • repository:发布release版本构件的仓库
      • snapshotRepository:发布SNAPSHOT版本的仓库
      • 发布命令:mvn clean deploy
  • 6.5 快照版本
    • 建议:快照版本不稳定,不应该依赖任何外部的快照版本依赖
  • 6.6 从仓库解析依赖的机制
    • 【读书笔记】《Maven实战》第6章 仓库
  • 6.7镜像
  • 6.8仓库搜索服务