zoukankan      html  css  js  c++  java
  • 笔记:Maven 仓库及配置详解

    本地创建默认路径在 用户目录.m2 epository,如果需要自定义本地创建目录地址,可以编辑文件 用户目录.m2settings.xml(文件不存在,则需要从Maven安装目录的Conf目录复制),设置 localRepository 元素的值为希望的本地仓库地址,例如:

    <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">

        <!-- localRepository

    | The path to the local repository maven will use to store artifacts.

    |

    | Default: ${user.home}/.m2/repository-->

        <localRepository>D:MavenRepository</localRepository>

        <!--

        省略其他配置

    -->

    </settings>

       

    如果需要将本地项目安装到本地仓库,可以在项目中执行如下命令:

    mvn clean install

    命令结果:

       

    参数:

    • -U 强制Maven检查更新

       

    1. 配置远程仓库,在默认的中央仓库无法满足项目的需求,可能项目需要的构件存在与另一个远程仓库中,这时,可以在POM中配置该仓库:

          <repositories>

              <!-- 声明一个仓库 -->

              <repository>

              <!-- 仓库的名称,必须唯一,如果设置为 central 则会替换中央仓库 -->

                      <id>JBoss Repository</id>

                      <!-- 仓库的地址 -->

                      <url>http://repository.jboss.com/maven2/</url>

                      <!-- 开启仓库的发布版本下载支持 -->

                      <releases>

                            <enabled>true</enabled>

      <!-- 配置检查校验和文件的策略,默认值:warn,可选值:fail、ignore -->

      <checksumPolicy></checksumPolicy>

      <!-- 配置从远程仓库检查更新的频率,默认值:daily(每天),可选值:never(不检查)、always(每次构建都检查)、interval:X(每隔X分钟检查一次) -->

      <updatePolicy></updatePolicy>

      </releases>

                      <!-- 开启仓库的快照版本下载支持 -->

                      <snapshots>

                           <enabled>false</enabled>

      <!-- 配置检查校验和文件的策略,默认值:warn,可选值:fail、ignore -->

      <checksumPolicy></checksumPolicy>

      <!-- 配置从远程仓库检查更新的频率,默认值:daily(每天),可选值:never(不检查)、always(每次构建都检查)、interval:X(每隔X分钟检查一次) -->

      <updatePolicy></updatePolicy>

                      </snapshots>

                      <!-- 仓库布局,default 表示 Maven2及Maven3的布局 -->

                      <layout>default</layout>

                </repository>

         </repositories>

    2. 远程仓库的认证,处于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库,这时为了能让Maven访问仓库的内容,就需要配置认证信息,认证信息配置在 setting.xml 文件中,使用 servers 元素及其 server子元素配置仓库认证信息,示例配置如下:

      <servers>

          <server>

              <!-- POM 配置中,需要认证的 repository元素的 Id -->

              <id>deploymentRepo</id>

              <!-- 认证用户 -->

              <username>repouser</username>

              <!-- 认证密码 -->

              <password>repopwd</password>

          </server>

      </servers>

    3. 部署到远程仓库,私服的一大作用是部署第三方构建,包括组织内部生成的构建以及一些无法从外部仓库直接获取的构件,在POM文件,配置 distributionManagement 元素,该元素包含 repository snapshotRepository 子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库,如果远程仓库需要认证,则参考前面的描述,示例配置如下:

      <distributionManagement>

          <repository>

              <!-- 仓库的唯一标识,必须唯一 -->

              <id>Drsoft Repository</id>

              <!-- 仓库的名称,方便人阅读 -->

              <name>Drsoft 仓库</name>

              <!-- 仓库的地址 -->

              <url>http://repository.drsoft/meave2/</url>

          </repository>

          <snapshotRepository>

              <!-- 仓库的唯一标识,必须唯一 -->

              <id>InnerRepository-Shapshot</id>

              <!-- 仓库的名称,方便人阅读 -->

              <name>Inner Repository-Shapshot</name>

              <!-- 仓库的地址 -->

              <url>http://localhost:8081/nexus/content/repositories/InnerRepository-Shapshot/</url>

              <!-- 示是否为Snapshot版本分配一个包含时间戳的构建号 -->

              <uniqueVersion>true</uniqueVersion>

              <!-- 仓库存储布局 -->

              <layout>default</layout>

        </snapshotRepository>

      配置完成后,执行以下命令:

      mvn clean deploy

      Maven 会根据输出的构件部署到配置对应的远程仓库,如果是快照版本则部署到快照仓库,否则部署到发布仓库

    4. 仓库镜像,如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像,例如 http://maven.net.cn/content/groups/public/ 是中央仓库在中国的镜像,因此可以配置 Maven 使用该镜像来替代中央仓库,编辑 setting.xml 配置文件,镜像仓库的认证也和远程仓库的认证配置一致,增加镜像仓库的配置:

      <mirrors>

          <mirror>

              <!-- 镜像仓库的唯一标识 -->

              <id>mirrorId</id>

              <!-- 镜像仓库的名称 -->

              <name>Human Readable Name for this Mirror.</name>

              <!-- 镜像仓库的URL地址 -->

              <url>http://my.repository.com/repo/path</url>

              <!-- 配置那个仓库的镜像,其值为 repository 的 Id,可以使用 * 标识所有仓库 -->

              <mirrorOf>repositoryId</mirrorOf>

          </mirror>

      </mirrors>

         

      高级镜像配置:

    • <mirrorOf>*</mirrorOf>:匹配所有远程仓库
    • <mirrorOf>external:*</mirrorOf>:匹配所有远程仓库,使用 localhost 除外,使用 file:\ 协议的除外
    • <mirrorOf>repo1,repo2</mirrorOf>:匹配仓库repo1 和 repo2 ,使用逗号分隔多个远程仓库
    • <mirrorOf>*,!repo2</mirrorOf>:匹配所有远程仓库,repo2除外,使用!将仓库从匹配中排除
    1. 仓库搜索服务,Nexus 是当前最流行的开源Maven仓库管理软件,Sonatype架设的一个公共Nexue仓库,提供了关键子搜索、类名搜索、坐标搜索、校验和搜索等功能,访问地址:http://repository.sonatype.org
    2. 国内镜像库
      1. 阿里云提供的Maven仓库,地址:http://maven.aliyun.com/nexus/content/groups/public

         

  • 相关阅读:
    监控页面所有checkbox改变状态的简单方法
    poorman’sgraphicalboot
    Linux 高精確的時序(sleep, usleep,nanosleep)
    【转】跟我一起写udev规则(译)
    什么情况下可以不创建QCoreApplication
    Linux双网卡bonding举例
    many former solutions has been "deleted"
    文件浏览器
    配置站点集的配额和锁
    HyperV的三种网卡
  • 原文地址:https://www.cnblogs.com/li3807/p/6416206.html
Copyright © 2011-2022 走看看