Maven中的库repository详解
作者:sgsrj
一、简介
所谓的仓库就是用于存放项目需要的jar包的。在我们的maven项目中其实并没有项目所需要的jar包,只在pom.xml文件中记录了jar的坐标。maven依赖管理通过jar的坐标去仓库中下载jar文件。
如果一个项目需要依赖一个构件,Maven编译的时候会首先从本地库查找该构件。如果本地库中没有,再根据配置的远程库信息,逐个去远程库中查找该构件。
如果在远程库中找到则下载到本地库,如果在所有的远程库中都没有则会抛出编译异常。
Maven中要配置库,可以有多种方式。最直接的是在项目中的pom.xml文件中,通过<repositories>配置库,这样配置的库仅适用于当前项目。也可以通过<profiles>中的<repositories>配置在特定环境下的特殊库,这可以在项目的pom.xml文件中实现,也可以在Maven的settings.xml中实现。
二、配置repository
在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
1. 在pom.xml中配置<repository>
<repositories> <repository> <releases> <enabled>false</enabled> <updatePolicy>always</updatePolicy> <checksumPolicy>warn</checksumPolicy> </releases> <snapshots> <enabled>true</enabled> <updatePolicy>never</updatePolicy> <checksumPolicy>fail</checksumPolicy> </snapshots> <id>codehausSnapshots</id> <name>Codehaus Snapshots</name> <url>https://repository-master.mulesoft.org/nexus/content/groups/public/</span></url> <layout>default</layout> </repository> </repositories>
2. Settings.xml配置<repository>
<profile> <id>nexus-profile</id> <repositories> <repository> <id>nexus-repo</id> <url>https://nexus3.nx-code.com/repository/maven-public/</url> <releases> <enabled>true</enabled> </releases> <snapshots> <updatePolicy>always</updatePolicy> <enabled>true</enabled> </snapshots> </repository> </repositories> </profile>
三、分类
maven仓库分为两类:
2.1 本地仓库
默认maven会在c盘创建一个.m2的本地仓库。默认位置:用户目录/.m2/repository/,可以修改setting.xml文件来修改本地仓库地址
<localRepository>D:\software\mvn\m2\repository</localRepository>
2.2 远程仓库
中央仓库:默认的远程仓库。
私有仓库:局域网内的仓库。可以理解为自己公司的仓库,也叫Nexus私服。
镜像仓库:其他公开的资源仓库 例如国内的阿里云,jboss,jcenter 仓库等
到此这篇关于Maven中的库(repository)的文章就介绍到这了,更多相关Maven repository内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!