Maven如何对远程仓库进行各种配置呢?
下文笔者讲述maven的远程仓库配置简介说明,如下所示
如:JBoss Maven
Maven可对项目进行编译、测试、打包之外
还可将项目生成的构件部署到远程仓库中
此时我们需配置pom.xml文件
配置distributionManagement元素
由于笔者身在国外,所以没有列表国内的taobao 私服,请见谅
搜索我们所需的jar包即可
远程仓库的配置
远程仓库是第三方新建的仓库,此时我们需在pom.xml中配置仓库信息即可如:JBoss Maven
<!-- 配置远程仓库 --> <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <releases> <enabled>true</enabled> <updatePolicy>daily</updatePolicy> </releases> <snapshots> <enabled>false</enabled> <checksumPolicy>warn</checksumPolicy> </snapshots> <layout>default</layout> </repository> </repositories>
repository
在repositories元素下
可以使用repository子元素声明一个或者多个远程仓库
id
仓库声明的唯一id
尤其需要注意的是
Maven自带的中央仓库使用的id为central
如果其他仓库声明也使用该id
就会覆盖中央仓库的配置。
name
仓库的名称
url
远程仓库地址
该地址都基于http协议
Maven用户都可以在浏览器中打开仓库地址浏览构件。
releases和snapshots
用于控制Maven对于发布版构件和快照版构件的下载权限
需要注意的是enabled子元素
该例中releases的enabled值为true
表示开启JBoss仓库的发布版本下载支持
而snapshots的enabled值为false
表示关闭JBoss仓库的快照版本的下载支持
根据该配置
Maven只会从JBoss仓库下载发布版的构件,而不会下载快照版的构件。
layout
元素值default表示仓库的布局是Maven2及Maven3的默认布局
而不是Maven1的布局。基本不会用到Maven1的布局
其他
对于releases和snapshots来说
除了enabled
它们还包含另外两个子元素updatePolicy和checksumPolicy
元素updatePolicy
用来配置Maven从远处仓库检查更新的频率
默认值是daily
表示Maven每天检查一次
其他可用的值包括
never-从不检查更新
always-每次构建都检查更新
interval:X-每隔X分钟检查一次更新(X为任意整数)。
元素checksumPolicy
用来配置Maven检查校验和文件的策略
当构建被部署到Maven仓库中时,会同时部署对应的检验和文件
在下载构件的时候,Maven会验证校验和文件
如果校验和验证失败,当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息
其他可用的值包括
fail-Maven遇到校验和错误就让构建失败
ignore-使Maven完全忽略校验和错误
远程仓库的认证
公共的远程仓库无须认证就可以直接访问
但我们在平时的开发中往往会架设自己的Maven远程仓库
出于安全方面的考虑
我们需要提供认证信息才能访问这样的远程仓库
配置认证信息和配置远程仓库不同
远程仓库可以直接在pom.xml中配置
但是认证信息必须配置在settings.xml文件中
这是因为pom往往是被提交到代码仓库中供所有成员访问的
settings.xml一般只存在于本机
在settings.xml中配置认证信息更为安全。
<settings>
...
<!--配置远程仓库认证信息-->
<servers>
<server>
<id>releases</id>
<username>admin</username>
<password>admin123</password>
</server>
</servers>
...
</settings>
参数说明:
id为releases的远程仓库认证信息
Maven使用settings.xml文件中的servers元素及其子元素server配置仓库认证信息
认证用户名为admin,认证密码为admin123
settings.xml中server元素的id必须与pom.xml中需要认证的repository元素的id完全一致
此id将认证信息与仓库配置进行关联
部署构件至远程仓库
可将本地的jar包,打包至远程仓库中Maven可对项目进行编译、测试、打包之外
还可将项目生成的构件部署到远程仓库中
此时我们需配置pom.xml文件
配置distributionManagement元素
<distributionManagement>
<repository>
<id>releases</id>
<name>public</name>
<url>http://59.50.95.66:8081/nexus/content/repositories/releases</url>
</repository>
<snapshotRepository>
<id>snapshots</id>
<name>Snapshots</name>
<url>http://59.50.95.66:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
</distributionManagement>
参数说明:
distributionManagement包含repository和snapshotRepository子元素
前者表示发布版本(稳定版本)构件的仓库
后者表示快照版本(开发测试版本)的仓库
这两个元素都需要配置id、name和url,id为远程仓库的唯一标识
注意事项:
maven配置完毕后,可使用mvn clean deploy 即可部署jar至远程仓库中
配置远程仓库的镜像
如果仓库X可以提供仓库Y存储的所有内容
那么就可以认为X是Y的一个镜像
换句话说,任何一个可以从仓库Y获得的构件,都能够从它的镜像中获取
例:http://maven.java265.com/content/groups/public/ 是中央仓库http://repo1.maven.org/maven2/ 在中国的镜像
由于地理位置的因素,该镜像往往能够提供比中央仓库更快的服务
因此,可以配置Maven使用该镜像来替代中央仓库
编辑settings.xml,代码如下:
<mirrors>
<mirror>
<id>maven.oschina.net</id>
<name>maven mirror in China</name>
<url>http://maven.java265.com/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
</mirrors>
注意事项:
mirrorOf的值为central
表示该配置为中央仓库的镜像,任何对于中央仓库的请求都会转至该镜像
用户也可以使用同样的方法配置其他仓库的镜像
id表示镜像的唯一标识符,name表示镜像的名称,url表示镜像的地址。
在日常镜像配置中,我们经常使用maven私服,并在私服中代理所有的外部仓库
此时我们就需在setting.xml中配置私服
<!--配置私服镜像-->
<mirrors>
<mirror>
<id>nexus</id>
<name>internal nexus repository</name>
<url>http://192.168.8.10:8081/nexus/content/groups/public/</url>
<mirrorOf>*</mirrorOf>
</mirror>
</mirrors>
注意事项:
<mirrorOf>的值为星号
表示该配置是所有Maven仓库的镜像
任何对于远程仓库的请求都会被转至http://192.168.8.10:8081/nexus/content/groups/public/
如果该镜像仓库需要认证,则配置一个id为nexus的认证信息即可
可用的Maven镜像仓库列表
下表是笔者收集的市面上常见的可用的maven私服列表由于笔者身在国外,所以没有列表国内的taobao 私服,请见谅
<mirror> <id>repo2</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://repo2.maven.org/maven2/</url> </mirror> <mirror> <id>ui</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://uk.maven.org/maven2/</url> </mirror> <mirror> <id>ibiblio</id> <mirrorOf>central</mirrorOf> <name>Human Readable Name for this Mirror.</name> <url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url> </mirror> <mirror> <id>jboss-public-repository-group</id> <mirrorOf>central</mirrorOf> <name>JBoss Public Repository Group</name> <url>http://repository.jboss.org/nexus/content/groups/public</url> </mirror> <mirror> <id>JBossJBPM</id> <mirrorOf>central</mirrorOf> <name>JBossJBPM Repository</name> <url>https://repository.jboss.org/nexus/content/repositories/releases/</url> </mirror>
jar包坐标检索方法
我们可进入MVNrepository:http://mvnrepository.com/搜索我们所需的jar包即可
版权声明
本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。


