关闭

maven远程仓库配置

标签: maven
3534人阅读 评论(0) 收藏 举报
分类:

maven3实战之仓库(远程仓库的配置)

----------

在很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要的构件存在于另外一个远程仓库中,如:JBoss,Maven仓库。这时,可以在POM中配置该仓库,见代码请单:

 

Xml代码  收藏代码
  1. <project>  
  2.   ...  
  3.   <repositories>  
  4.     <repository>  
  5.       <id>jboss</id>  
  6.       <name>JBoss Repository</name>  
  7.       <url>http://repository.jboss.com/maven2/</url>  
  8.       <releases>  
  9.         <enabled>true</enabled>  
  10.       </releases>  
  11.     </repository>  
  12.     <snapshots>  
  13.       <enabled>false</enabled>  
  14.     </snapshots>  
  15.     <layout>default</layout>  
  16.   </repositories>  
  17.   ...  
  18. </project>  

在repositories元素下,可以使用repository子元素声明一个或者多个远程仓库。该例中声明了一个id为jboss,名称为JBoss Repository的仓库。任何一个仓库声明的id必须是唯一的,尤其需要注意的是,maven自带的中央仓库使用的id为central,如果其他的仓库声明也使用该id,就会覆盖中央仓库的配置。该配置中的url值指向了仓库的地址,一般来说,该地址都基于http协议,maven用户都可以在浏览器中打开仓库地址浏览构件。

该例配置中的releases和snapshots元素比较重要,它们用来控制Maven对于发布版构件和快照版构件的下载。该例中releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持该例中的layout元素值default表示仓库的布局是Maven2及Maven3的默认布局,而不是Maven1的布局

对于releases和snapshots来说,除了enabled,它们还包含另外两个子元素updatePolicy和checksumPolicy:

 

Xml代码  收藏代码
  1. <snapshots>  
  2.   <enabled>true</enabled>  
  3.   <updatePolicy>daily</updatePolicy>  
  4.   <checksumPolicy>ignore</checksumPolicy>  
  5. </snapshots>  

元素updatePolicy用来配置Maven从远程仓库检查更新的频率,默认的值是daily,表示Maven每天检查一次。其他可用的值包括:never---从不检查更新;always---每次构建都检查更新;interval:X---每隔X分钟检查一次更新(X为任意整数)。

元素checksumPolicy用来配置Maven检查检验和文件的策略。当构件被部署到Maven仓库中时,会同时部署对应的校验和文件。在下载构件的时候,Maven会验证校验和文件,如果校验和验证失败,怎么办?当checksumPolicy的值为默认的warn时,Maven会在执行构建时输出警告信息,其他可用的值包括:fail---Maven遇到校验和错误就让构建失败;ignore---使用Maven完全忽略校验和错误


在setting.xml中配置远程仓库

1.需要在profiles标签中添加远程仓库配置

        <profile>
    	    <id>myProfiel</id>  
	    <repositories>  
	        <repository>  
	            <id>me</id>  
	            <name>me Repository</name>  
	            <url>http://192.168.106.58:57770/nexus/</url>  
	            <releases>  
	                <updatePolicy>daily</updatePolicy>never,always,interval n  
	                <enabled>true</enabled>  
	                <checksumPolicy>warn</checksumPolicy>fail,ignore  
	            </releases>  
	            <snapshots>  
	                <enabled>false</enabled>  
	            </snapshots>  
	            <layout>default</layout>  
	        </repository>  
	    </repositories>  
	</profile>
2.在settings标签中添加activeProfiles标签,用于激活配置的profile标签
  <activeProfiles>     
   	<activeProfile>myProfiel</activeProfile>     
  </activeProfiles>


 

1.远程仓库的认证

大部分远程仓库无须认证就可以访问,但有时候出于安全方面的考虑,我们需要提认证信息才能访问一些远程仓库。例如,组织内部有一个Maven仓库服务器,该服务器为每个项目都提供独立的Maven仓库,为了防止非法的仓库访问,管理员为每个仓库提供了一组用户名级密码。这时,为了能让Maven访问仓库内容,就需要配置认证信息。

配置认证信息和配置仓库信息不同,仓库信息可以直接配置在POM文件中,但是认证信息必须配置在settings.xml文件中。这是因为POM往往是被提交到代码仓库中供所有成员访问的,而settings.xml一般只放在本机。因此,settings.xml中配置认证信息更为安全。假设需要为一个id为my-proj的仓库配置认证信息,编辑settings.xml文件见代码清单: 

 

Xml代码  收藏代码
  1. <settings>  
  2.   ...  
  3.   <servers>  
  4.     <server>  
  5.       <id>my-proj</id>  
  6.       <username>repo-user</username>  
  7.       <password>repo-pwd</password>  
  8.     </server>  
  9.   </servers>  
  10.   ...  
  11. </settings>  

Maven使用settings.xml文件中并不显而易见的servers元素及其server子元素配置仓库认证信息。上例中,仓库的认证用户名为repo-user,认证密码为repo-pwd。这里的关键是id元素,settings.xml中server元素的id必须与POM中需要认证的repository元素的id完全一致。换句话说,正是这个Id将认证信息与仓库配置联系在了一起。

 

2.部署至远程仓库

私服的一大作用是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其他团队成员使用。

Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构建部署到仓库中。首先,需要编辑项目的pom.xml文件。配置distributionManagement元素,见代码:

Xml代码  收藏代码
  1. <project>  
  2.   ...  
  3.   <destributionManagement>  
  4.     <repository>  
  5.       <id>proj-releases</id>  
  6.       <name>Proj Release Repository</name>  
  7.       <url>http://192.168.1.100/content/repositories/proj-releases</url>  
  8.     </repository>  
  9.     <snapshotRepository>  
  10.       <id>proj-snapshots</id>  
  11.       <name>Proj Snapshot Repository</name>  
  12.       <url>http://192.168.1.100/content/repositories/proj-snapshots</url>  
  13.     </snapshotRepository>  
  14.   </destributionManagement>  
  15.   ...  
  16. </project>  

distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库。这两个元素下都需要配置id、name和url,id为该远程仓库的唯一标识,name是为了方便人阅读,关键的url表示该仓库的地址。

往远程仓库部署构件的时候,往往需要认证。就是需要在settings.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置的方式是一样的。配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则部署到快照版本仓库地址,否则就部署到发布版本仓库地址。  

0
0
查看评论
发表评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场

Maven详解之仓库------本地仓库、远程仓库

maven的本地仓库和远程仓库,详解maven的远程仓库。 在实际开发中,快照版本的实际意义和作用。如何进行安全认证的配置?创建私服的好处,maven仓库依赖解析的机制
  • wanghantong
  • wanghantong
  • 2014-08-11 20:42
  • 273803

Maven 配置远程仓库

maven 配置远程仓库
  • jing_EVA
  • jing_EVA
  • 2016-11-14 17:52
  • 2391

Maven3配置远程仓库

Maven是一个项目管理工具,它包含了一个项目对象模型 (Project Object Model),一组标准集合,一个项目生命周期(Project Lifecycle),一个依赖管理系统(Depen...
  • peterwanghao
  • peterwanghao
  • 2012-07-13 10:07
  • 21514

国内maven远程仓库配置

Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. ...
  • linbren
  • linbren
  • 2016-12-15 10:10
  • 1262

Maven——远程仓库的配置

在很多情况下,默认的中央仓库无法满足项目需求,可能项目需要的构件存在于另外一个远程仓库中,如JBoss Maven仓库。这时,可以在pom文件中配置该仓库。        jobss  ...
  • hehexiaoyou
  • hehexiaoyou
  • 2014-11-06 14:07
  • 5809

Maven仓库:本地仓库 vs 远程仓库 详解

参考原文:http://www.wirelessqa.com/?p=289 1.什么是Maven仓库 在不用Maven的时候,比如说以前我们用Ant构建项目,在项目目录...
  • u010221213
  • u010221213
  • 2016-05-24 14:48
  • 2609

maven配置开源中国远程仓库

配置 mirror ...                     osc             central &#...
  • jinchaomail
  • jinchaomail
  • 2016-09-13 09:53
  • 1188

Maven远程仓库的各种配置

Maven远程仓库的各种配置 1.远程仓库的配置 在平时的开发中,我们往往不会使用默认的中央仓库,默认的中央仓库访问的速度比较慢,访问的人或许很多,有时候也无法满足我们项目的需求,...
  • Javazzc123
  • Javazzc123
  • 2017-08-29 17:43
  • 352

maven仓库配置

1.两类仓库 1.1本地仓库(local repository) 可以自定义本地仓库的位置,修改${user.home}/.m2/settings.xml : Xml代码  setting...
  • dongnan591172113
  • dongnan591172113
  • 2012-06-22 21:43
  • 62569

Maven添加远程仓库

默认情况下,Maven从Maven中央仓库下载所有依赖关系。但是,有些库丢失在中央存储库,只有在Java.net或JBoss的储存库远程仓库中能找到。 添加Java.net远程仓库的详细信息...
  • Java_gjyw
  • Java_gjyw
  • 2016-12-28 11:18
  • 1145
    个人资料
    • 访问:945793次
    • 积分:5485
    • 等级:
    • 排名:第5671名
    • 原创:33篇
    • 转载:144篇
    • 译文:0篇
    • 评论:84条
    文章分类
    最新评论