(转)Maven中的库(repository)详解 ---repository配置查找构件(如.jar)的远程库

转:https://blog.csdn.net/taiyangdao/article/details/52287856

Maven中的库(repository)是构件(artifact)的集合。构件以一定的布局存储在库中。

Maven中的库(repository)可以分为本地库和远程库。本地库在安装Maven的计算机上的指定路径下(通常是用户主目录下的.m2/repository),本地库中的构件往往是远程库中下载到本地的部分构件,被本地项目所引用。当然,本地项目发布时,默认也发布到本地库中。远程库往往是由第三方提供的,用于发布构件供项目下载使用,如著名的Maven central库。

根据构件的用途,构件可以分为两类,一类是被其他构件依赖的构件(dependencies),这也是Maven库中主要的构件。另一类是插件(plugins),这是一种特殊的构件。对于依赖的构件,其所在的库通过<repositories>设置。但是对于插件的构件,由于插件的特殊性,所以插件库独立于依赖库,使用<pluginRepositories>单独设置。但是由于依赖和插件都属于构件,所以<repositories>和<pluginRepositories>中的设置基本一致。

如果一个项目需要依赖一个构件,Maven编译的时候会首先从本地库查找该构件。如果本地库中没有,再根据配置的远程库信息,逐个去远程库中查找该构件。

如果在远程库中找到则下载到本地库,如果在所有的远程库中都没有则会抛出编译异常。

Maven中要配置库,可以有多种方式。最直接的是在项目中的pom.xml文件中,通过<repositories>配置库,这样配置的库仅适用于当前项目。也可以通过<profiles>中的<repositories>配置在特定环境下的特殊库,这可以在项目的pom.xml文件中实现,也可以在Maven的settings.xml中实现。

此外,一个项目发布后,其往往要被部署到一个库中,作为库的构件以供其他项目引用。通过<distributionManagement>中的<repositories>配置要发布的库。

1. 在pom.xml或settings.xml中设置<repositories>,往往需要提供一个<repository>的如下信息:

  • id,库的ID
  • name,库的名称
  • url,库的URL
  • layout,在Maven 2/3中都是default,只有在Maven 1.x中才是legacy
  • releases,库中版本为releases的构件
  • snapshots,库中版本为snapshots的构件

根据构件的版本,可以将构件分为releases类型的构件和snapshots类型的构件。

对于一个构件,其版本的变化是否会引起库中更新该构件呢?则需要根据库的<releases>或<snapshots>设置。<releases>和<snapshots>的设置参数一致,如下所示:

  • enabled,是否支持更新
  • updatePolicy,构件更新的策略,可选值有daily, always, never, interval:X(其中的X是一个数字,表示间隔的时间,单位min),默认为daily
  • checksumPolicy,校验码异常的策略,可选值有ignore, fail, warn

在pom.xml中定义<repository>的示例如下:

[html] view plain copy

  1. <repositories>
  2. <repository>
  3. <releases>
  4. <enabled>false</enabled>
  5. <updatePolicy>always</updatePolicy>
  6. <checksumPolicy>warn</checksumPolicy>
  7. </releases>
  8. <snapshots>
  9. <enabled>true</enabled>
  10. <updatePolicy>never</updatePolicy>
  11. <checksumPolicy>fail</checksumPolicy>
  12. </snapshots>
  13. <id>codehausSnapshots</id>
  14. <name>Codehaus Snapshots</name>
  15. <url>https://repository-master.mulesoft.org/nexus/content/groups/public/</span></url>
  16. <layout>default</layout>
  17. </repository>
  18. </repositories>

2.在pom.xml中的<distributionManagement>,负责管理构件的发布包和其他编译生成的支撑文件。

在<distributionManagement>中也可以配置一个<repository>。这里的<repository>给出的是当前项目部署后所发布的库,示例如下:

[html] view plain copy

  1. <distributionManagement>
  2. <repository>
  3. <uniqueVersion>false</uniqueVersion>
  4. <id>corp1</id>
  5. <name>Corporate Repository</name>
  6. <url>scp://repo/maven2</url>
  7. <layout>default</layout>
  8. </repository>
  9. <snapshotRepository>
  10. <uniqueVersion>true</uniqueVersion>
  11. <id>propSnap</id>
  12. <name>Propellors Snapshots</name>
  13. <url>sftp://propellers.net/maven</url>
  14. <layout>legacy</layout>
  15. </snapshotRepository>
  16. ...
  17. </distributionManagement>

该<repository>的url是当前Maven项目的构件所发布的地址(但是注意,未必是访问该构件的地址)。

<distributionManagement>中还可以配置一个<snapshotRepository>,表示开发过程中的发布库。<snapshotRepository>的设置与<repository>一样。如果没有设置<snapshotRepository>,还可以将<repository>用作<snapshotRepository>。

关于<distributionManagement>的具体用法参见后续文章。

3.在pom.xml或settings.xml中的<profile>中都可以设置<repositories>或<pluginRepositories>,其中的<repository>设置与在<profile>外设置<repositories>中的<repository>一样。

<profile>中的<repositories>表示在该<profile>环境中所特有的库。

原文地址:https://www.cnblogs.com/wangle1001986/p/8996560.html

时间: 2024-08-30 01:30:21

(转)Maven中的库(repository)详解 ---repository配置查找构件(如.jar)的远程库的相关文章

史上最全的maven的pom.xml文件详解

史上最全的maven的pom.xml文件详解 http://www.cnblogs.com/hafiz/p/5360195.html <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 h

Maven的pom.xml配置文件详解

1 Maven的pom.xml配置文件详解 2 Maven简述 3 Maven项目对象模型(POM),可以通过一小段描述信息来管理项目的构建,报告和文档的软件项目管理工具. 4 Maven 除了以程序构建能力为特色之外,还提供高级项目管理工具.由于 Maven 的缺省构建规则有较高的可重用性,所以常常用两三行 Maven 构建脚本就可以构建简单的项目.由于 Maven 的面向项目的方法,许多 Apache Jakarta 项目发文时使用 Maven,而且公司项目采用 Maven 的比例在持续增长

Maven之pom.xml配置文件详解

Maven之pom.xml配置文件详解 2019-06-05 一.什么是pom? POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示,名称叫做pom.xml.作用类似ant的build.xml文件,功能更强大.该文件用于管理:源代码.配置文件.开发者的信息和角色.问题追踪系统.组织信息.项目授权.项目的url.项目的依赖关系等等.事实上,在Maven世界中,project可以什么都没有,甚至没有代码,但是必须包含pom.xml文件.

Java NIO中的Glob模式详解

Java NIO中的Glob模式详解 作者:chszs,转载需注明.博客主页:http://blog.csdn.net/chszs 一.什么是Glob? 在编程设计中,Glob是一种模式,它使用通配符来指定文件名.例如:.java就是一个简单的Glob,它指定了所有扩展名为"java"的文件.Glob模式中广泛使用了两个通配符""和"?".其中星号表示"任意的字符或字符组成字符串",而问号则表示"任意单个字符&quo

Java I/O : Java中的进制详解

作者:李强强 上一篇,泥瓦匠基础地讲了下Java I/O : Bit Operation 位运算.这一讲,泥瓦匠带你走进Java中的进制详解. 一.引子 在Java世界里,99%的工作都是处理这高层.那么二进制,字节码这些会在哪里用到呢? 自问自答:在跨平台的时候,就凸显神功了.比如说文件读写,数据通信,还有Java编译后的字节码文件.下面会有个数据通信的例子哦. Java对对象实现Serializablle接口,就可以将其转化为一系列字节,而在通信中,不必要关系数据如何在不同机器表示和字节的顺

Maven实战——仓库的分类详解

仓库的分类 本地仓库.远程仓库(中央仓库.私服.其他公共库) 1.本地仓库 无论是在window还是在Linux系统上,每一个用户在自己用户目录下都有一个.m2/repository/仓库的目录.例如: 我的windows上是c:\users\jader.m2\repository,linux上是:home/jader/.m2/repository,在Linux系统中,以.开头的文件或目录是隐藏的,可以使用ls -a来显示隐藏文件或目录 有时候C盘空间可以自定义本地仓库目录,在Maven的安装目

C#中web.config文件详解

C#中web.config文件详解 一.认识Web.config文件 Web.config 文件是一个XML文本文件,它用来储存 ASP.NET Web 应用程序的配置信息(如最常用的设置ASP.NET Web 应用程序的身份验证方式),它可以出现在应用程序的每一个目录中.当你通过.NET新建一个Web应用程序后,默认情况下会在根目录自动创建一个默认的 Web.config文件,包括默认的配置设置,所有的子目录都继承它的配置设置.如果你想修改子目录的配置设置,你可以在该子目录下新建一个 Web.

Python学习教程(Python学习路线):Pandas库基础分析-详解时间序列的处理

Python学习教程(Python学习路线):Pandas库基础分析-详解时间序列的处理 在使用Python进行数据分析时,经常会遇到时间日期格式处理和转换,特别是分析和挖掘与时间相关的数据,比如量化交易就是从历史数据中寻找股价的变化规律.Python中自带的处理时间的模块有datetime,NumPy库也提供了相应的方法,Pandas作为Python环境下的数据分析库,更是提供了强大的日期数据处理的功能,是处理时间序列的利器. 1.生成日期序列 主要提供pd.data_range()和pd.p

Python中标准模块importlib详解

Python中标准模块importlib详解 模块简介 Python提供了importlib包作为标准库的一部分.目的就是提供Python中import语句的实现(以及__import__函数).另外,importlib允许程序员创建他们自定义的对象,可用于引入过程(也称为importer). 什么是imp? 另外有一个叫做imp的模块,它提供给Python import语句机制的接口.这个模块在Python 3.4中被否决,目的就是为了只使用importlib. 这个模块有些复杂,因此我们在这