【Maven实战】之依赖,仓库,镜像

前言

  • 本文仅仅是为了记录学习【maven实战】知识点以及相关拓展,所以有些知识点也仅仅是一笔带过,所以需要了解的朋友可以去阅读【maven实战】这本书。

依赖

依赖配置

  • groupId,artifactId,version:依赖的基本坐标
  • type:依赖类型,默认值Jar
  • optional;标记依赖是否可选
  • exclusions:用来排除传递性依赖
  • scope:依赖范围
  • 代码如下:

    ...
    
        
            ...
            ...
            ...
            ...
            ...
            ...
            
                ...
                ...
            
        
    
    ...

依赖范围【scope】

三种classpath
- 编译classpath
- 测试classpath
- 运行classpath

五种依赖范围
- compile:编译依赖范围。默认依赖范围。在三种classpath有效例如:【spring-core】
- test:测试依赖范围。只在test-classpath有效。例如【Junit】
- provided:已提供有效范围。在编译,测试classpath有效。例如:【servlet-api】-运行时,容器已经提供。
- runtime:运行时依赖范围。测试,运行classpath有效。例如【JDBC驱动实现】
- system:系统依赖范围。在编译,测试classpath有效。使用时,需通过systemPath元素显试地指定依赖文件路径,由于不是maven仓库解析,与本机绑定,可能造成构建的不可移植。
- import:导入依赖范围。不会对三种classpath产生实际的影响。

#

  • 查看已解析依赖
mvn dependency:list
  • 查看依赖树
mvn dependency:tree
  • 解析依赖
mvn dependency:analyze

仓库

  • 私仓
  • 节省自己的外网带宽
  • 加速maven构建
  • 部署第三方构建
  • 提高稳定性,增强控制
  • 降低中央仓库的负荷

  • 发布版本

  • 用来保存稳定的发行版本
  • 快照版本
  • 快照仓库用于保存开发过程中的不稳定版本

镜像

  • 如果仓库X可以提供仓库Y的存储的所有内容,那么可以认为X是Y的一个镜像。
<settings>
    ...
    <mirrors>
        <mirror>
            <id>internal-repositoryid>
            <name>Internal Respository Managername>
            <url>http://192.168.1.1/maven2url>
            <mirrorOf>*mirrorOf>
        mirror>
    mirrors>
    ...
settings>
该配置表示是所有的Maven仓库的镜像,任何对远程仓库的请求都会被转发【http://192.168.1.1/maven2】。如果该镜像仓库需要认证,则配置一个id为【internal-repository】的server即可,如下:
 <server>
      <id>deploymentRepo_releasesid>
      <username>repouserusername>
      <password>repopwdpassword>
    server>
  • 1.*
    匹配所有远程仓库。
  • 2.external:*
    匹配所有远程仓库,使用localhost的除外,使用file://协议的除外。也就是说,匹配所有不在本机上的远程仓库。
  • 3.repo1,repo2
    匹配仓库repo1和repo2,使用逗号分隔多个远程仓库。
  • 4.*,!repo1
    匹配所有远程仓库,repo1除外,使用感叹号将仓库从匹配中排除

仓库和镜像的概念

  • repository是统一存放所有maven项目共享的构件的位置。
  • mirror则相当于一个代理,它会拦截去指定的远程repository下载构件的请求,然后从自己这里找出构件回送给客户端。配置mirror的目的一般是出于网速考虑。mirror本身并不是repository,它只是起到远程repository的网络加速器的作用

maven仓库镜像站

1.阿里云的镜像站
<mirror>
    <id>nexus-aliyunid>
    <name>Nexus aliyunname>
    <url>http://maven.aliyun.com/nexus/content/groups/public/url>
    <mirrorOf>centralmirrorOf>
mirror>
2.maven官方运维的2号仓库
<mirror>
    <id>repo2id>
    <name>Mirror from Maven Repo2name>
    <url>http://repo2.maven.org/maven2/url>
    <mirrorOf>centralmirrorOf>
mirror>
3-maven在UK架设的仓库(有时候速度会比官方2号仓库快)
<mirror>
    <id>uiid>
    <name>Mirror from UKname>
    <url>http://uk.maven.org/maven2/url>
    <mirrorOf>centralmirrorOf>
mirror>
4.JBoss的仓库
<mirror>
    <id>jboss-public-repository-groupid>
    <mirrorOf>centralmirrorOf>
    <name>JBoss Public Repository Groupname>
    <url>http://repository.jboss.org/nexus/content/groups/publicurl>
mirror>

仓库搜索服务

  • 1, Sonatype Nexus
  • http://repository.sonatype.org/
  • 2, Jarvana
  • http://www.jarvana.com/
  • 3, MVNbrowser
  • http://www.mvnbrowser.com
  • 4, MVNrepository
  • http://mvnrepository.com/

你可能感兴趣的:(学习笔记)