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

前言

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

依赖

依赖配置

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

依赖范围【scope】

三种classpathspring

  • 编译classpath
  • 测试classpath
  • 运行classpath

五种依赖范围api

  • 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构建maven

  • 部署第三方构建ide

  • 提升稳定性,加强控制学习

  • 下降中央仓库的负荷测试

  • 发布版本ui

  • 用来保存稳定的发行版本阿里云

  • 快照版本

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

镜像

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

仓库和镜像的概念

  • repository是统一存放全部maven项目共享的构件的位置。
  • mirror则至关于一个代理,它会拦截去指定的远程repository下载构件的请求,而后从本身这里找出构件回送给客户端。配置mirror的目的通常是出于网速考虑。mirror自己并非repository,它只是起到远程repository的网络加速器的做用

maven仓库镜像站

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

仓库搜索服务

相关文章
相关标签/搜索