Maven4-仓库

作者: 毛大黑 | 来源:发表于2018-03-01 16:14 被阅读22次

    坐标和构建是一个构件在Maven世界中的逻辑表示方式,而其物理表示方式是文件。
    Maven通过仓库来统一管理这些文件

    什么是Maven仓库?

    在Maven世界中,任何一个依赖,插件或者项目构建的输出,都可以称为构建,任何一个构建都有一组坐标唯一标识。
    得益于坐标机制,任何Maven项目使用任何一个构件的方式都是完全相同的,在此基础上,Maven可以在某个位置统一存储所有Maven项目共享的构件,这个统一的位置就是仓库.
    这样Maven项目就可以不再各自存储其依赖文件,只需要声明这些依赖的坐标,在需要的时候,Maven会自动根据坐标找到仓库中的构件并使用。

    仓库的分类

    对于Maven来说,仓库分为两类:本地仓库和远程仓库
    使用顺序为,先查找本地仓库,若不存在或要寻找更高的版本,则到远程仓库中寻找到后,下载到本地仓库再使用,如果都没有,则报错

    本地仓库

    一般情况下,在Maven项目目录下,没有诸如lib/这样用来存放依赖文件的目录。
    当Maven在执行编译或测试时,如果需要使用依赖文件,它总是基于坐标使用本地仓库的依赖文件
    一般情况下,每个用户在自己的用户目录下都有一个路径名为.m2/repository/的仓库目录

    远程仓库

    远程仓库有很多:

    • 中央仓库:默认的远程仓库,Maven的安装文件自带了中央仓库的配置,包含了这个世界上绝大多数流行的开源Java构件
    • 私服:一种特殊的远程仓库,架设在局域网内的仓库服务,私服代理广域网上的远程仓库,供局域网内的Maven用户使用


      私服的用途

    远程仓库的那些事

    远程仓库的配置
    <project>
    ...
         <repositories>
             <repository>
                  <id>jboss</id>
                  <name>JBoss Repository</name>
                  <url>http://repository.jboss.com/maven2/</url>
                  <releases>
                       <enabled>true</enabled>
                  </releases>
                  <snapshots>
                       <enabled>false</enabled>
                       <updatePolicy>daily</updatePolicy>
                       <checksumPolicy>ignore</checksumPolicy>
                  </snapshots>
                  <layout>default</layout>
             </repository>
         </repositories>
    </project>
    
    • updatePolicy 用来配置Maven从远程仓库检查更新的频率
    • checksumPolicy 用来配置Maven检查检验和文件的策略

    远程仓库的认证

    大部分远程仓库无须认证就可以访问,但有时处于安全方面的考虑,需要提供一些认证信息才能访问一些远程仓库。
    配置认证信息应该在settings.xml中,而不是POM中(因为settings.xml一般只放在本机中)

    <settings>
    ...
         <servers>
             <server>
                 <id>my-proj</id>
                  <username>repo-user</username>
                  <password>repo-pwd</password>
             </server>
         </servers>
    </settings>
    

    这里的id需要和pom中的id相同

    部署至远程仓库

    <project>
    ...
         <distributionManagement>
             <repository>
                  <id>proj-release</id>
                  <name>Proj Release Repository</name>
                  <url>http://192.168.1.100/content/repositories/proj-releases</url>
              </repository>
              <snapshotRepository>
                  <id>proj-snapshots</id>
                  <name>Proj Snapshots Repository</name>
                  <url>http://192.168.1.100/content/repositories/proj-snapshots</url>
               </snapshotRepository>
         </distributionManagement>
    </project>
    

    然后执行mvn clean deploy,Maven将会将项目构建输出的构建部署到配置对应的远程仓库

    快照版本

    快照版本对应了大量的带有不同时间戳的构建。
    快照版本只应该在组织内部的项目或模块间依赖使用

    相关文章

      网友评论

        本文标题:Maven4-仓库

        本文链接:https://www.haomeiwen.com/subject/fqtnxftx.html