zoukankan      html  css  js  c++  java
  • Maven笔记(二)仓库

    1.仓库布局

    任何一个构件都有其唯一的坐标,根据这个坐标可以定义其在仓库中的唯一存储路径,这就是Maven的仓库布局方式

    路径与坐标的对应关系为:groupId/artifactId/version/artifactId-version-classifier.packaging。其中groupId是以句点进行分割的。

    例如jersey-common-2.22.1.jar,其POM定义如下(版本继承了父POM文件)

    <parent>
    <groupId>org.glassfish.jersey</groupId>
    <artifactId>project</artifactId>
    <version>2.22.1</version>
    </parent>

    <groupId>org.glassfish.jersey.core</groupId>
    <artifactId>jersey-common</artifactId>
    <packaging>jar</packaging>
    <name>jersey-core-common</name>

    那么在Maven中它的位置应该是,org/glassfish/jersey/core/jersey-common/2.22.1/jersey-common-2.22.1.jar

    2.仓库的分类

    Maven仓库分为两类,本地仓库和远程仓库,其中远程仓库又包括中央仓库,私服,其他公共库。

    1)本地仓库

    默认是在C盘用户名下的.m2 epository下,如C:UsersXXX.m2 epository,可以在settings.xml文件中,通过localRepository标签进行修改(默认被注释掉)。

    对于依赖本地项目的场景,构建模块时,Install插件的install目标将项目的构建输出文件安装到本地仓库,这样其他依赖了这个构件的模块就可以顺利拿到依赖。

    常用mvn clean install

    2)远程仓库

    中央仓库:由于最原始的本地仓库是空的,Maven必须至少知道一个可用的远程仓库才能找到构件。在$M2_HOME/lib/maven-model-builder-3.3.9.jar定义了默认的远程仓库。

    <repositories>
      <repository>
        <id>central</id>
        <name>Central Repository</name>
        <url>https://repo.maven.apache.org/maven2</url>
        <layout>default</layout>
        <snapshots>
          <enabled>false</enabled>
        </snapshots>
      </repository>
    </repositories>

    包含这段配置的文件是所有Maven项目都会继承的超级POM

    开发者也可以自己定义远程仓库,假如要将默认的远程仓库设置为JBosss,在模块的POM文件中,作如下定义:

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

          </snapshots>

          <layout>default</layout>

        </repository>

      </repositories>

    ....

    这个例子中,releases和snapshots元素比较重要,它们用来控制Maven对于发布版构件和快照版构件的下载。

    除了enabled,还有updatePolicy和checksumPolicy两个属性。

    updatePolicy表示从远程仓库检查更新的频率,默认是daily每天检查一次。可以有:never从不 always每次构建都检查 inverval:X 每隔X分钟检查一次,X为任意正整数

    checksumPolicy表示检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件时,Maven会验证校验和文件,如果失败,怎么办?当该值为默认的warn时,只会输出警告信息。其他值:fail 构建失败 ignore 忽略错误信息

    3.远程仓库的认证

    在settings.xml文件中添加servers节点。

    <server>
      <id>deploymentRepo</id>//POM文件中定义的远程仓库ID
      <username>repouser</username>
      <password>repopwd</password>
    </server>

    4.镜像

    如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像。由于地理位置的关系,有时候镜像可以提供比中央仓库更快的服务。

    例如http://maven.net.cn/content/groups/public/是中央仓库http://repo1.maven.org/maven2在中国的镜像,当然跑得比西方快,所以可以用它来替代中央仓库

    在settings.xml文件中设置如下配置即可

    <mirror>
      <id>myMirror</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/nexus/content/groups/public/</url>
    </mirror>

    所有下载构件的请求都会被重定位到私服,这样可以限制在线下载构件。

    6.部署构件

    使用deploy命令可以部署到私服。在工程的pom文件下配置distributionManagement标签

    <distributionManagement>
      <repository>
        <id>myrelease</id>
        <name>my release repo</name>
        <url>http://localhost:8081/nexus/content/repositories/releases/</url>
      </repository>
      <snapshotRepository>
        <id>mysnapshot</id>
        <name>my snapshot repo</name>
        <url>http://localhost:8081/nexus/content/repositories/snapshots/</url>
      </snapshotRepository>
    </distributionManagement>

    如果需要鉴权,那么在settings.xml中配置server节点,填上用户名和密码,或者私钥。

  • 相关阅读:
    web.config信息及RSA加密方式!
    [转载] Backbone.js入门学习笔记目录
    javascript作用域链(Scope Chain)初探
    [转载] script的defer和async
    [转载] javascript的domReady类$(document).ready(function()使用方法
    [转载] jquery源代码研究(ready函数)
    [转载] JSON.stringify 语法讲解
    [转载] javascript 浏览器类型
    [转载] 使用backbone.js、zepto.js和trigger.io开发HTML5 App
    [转载]浏览器的加载与页面性能优化
  • 原文地址:https://www.cnblogs.com/kingsleylam/p/5062062.html
Copyright © 2011-2022 走看看