maven实战(三)maven仓库
来源:互联网 发布:海信电视mac是什么 编辑:程序博客网 时间:2024/05/17 07:48
当用户需要自定义仓库目录的时候,可以编辑文件~/.m2/settings.xml,设置localRepository元素的值为想要的仓库地址。例如:
<settings> <localRepository>D:\java\repository\/localRepository></settings>
需要注意的是,默认情况下,~/.m2/settings.xml文件是不存在的,用户需要从Maven安装目录$M2_HOME$/conf/settings.xml复制此文件再进行编辑。
2.远程仓库的配置
很多情况下,默认的中央仓库无法满足项目的需求,可能项目需要额构建存在于另外一个远程仓库中,如JBoss Maven仓库。这时,可以在POM中配置该仓库,如下:
<project> ... <repositories> <repository> <id>jboss</id> <name>JBoss Repository</name> <url>http://repository.jboss.com/maven2/</url> <release> <enabled>true</enabled> </release> <snapshots> <enabled>false</enabled> </snapshots> <layout>default</layout> </repository> </repositories></project>声明了一个id为jboss的仓库。需要注意的是,Maven自带的中央仓库使用的id为central,如果其他的仓库声明也使用该id,就会覆盖中央仓库的配置。
该配置中的releases和snapshots元素比较重要,它们用来控制Maven对于发布构件和快照版构建的下载。这里需要注意的是enabled子元素,该例子中releases的enabled值为true,表示开启JBoss仓库的发布版本下载支持,而snapshots的enabled值为false,表示关闭JBoss仓库的快照版本的下载支持。
远程仓库的认证
大部分远程仓库都不需要认证,但有时候出于安全的考虑,比如公司内部构建了一个私服,就需要配置认证信息,配置认证信息与配置仓库信息不同,仓库信息可以在pom.xml文件中,认证信息必须在settings.xml文件中。
认证代码如下:
<settings> ... <servers> <server> <id>my-proj</id> <username>repo-user</username> <password>repo-pwd</password> </server> </servers> ...</settings>这里的关键是id元素,settings.xml中server元素的id必须和pom中需要认证的repository元素的id完全一致。换句话说,正是这个认证信息与仓库配置联系在了一起。
私服的一大作用是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论日常开发中生成的构件,还是正式版本的构件,都需要部署到仓库中,供其他团队成员使用。
Maven除了能对项目进行编译、测试、打包外,还能将项目生成的构件部署到仓库中。首先需要编辑项目的pom.xml文件。配置distributionManagement元素,如下:
<project> ... <distributionManagement> <repository> <id>proj-releases</id> <name>Proj Release Repository</name> <url>http://192.168.1.100/content/repositories/proj-release</url> </repository> <snapshotRepository> <id>proj-snapshots</id> <name>Proj Snapshot Repository</name> <url>http://192.168.1.100/content/repositories/proj-snapshots</url> </snapshotRepository> </distributionManagement> ...</project>distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库。
配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库。
如果当前项目的版本是发布版本就部署到发布版本的仓库,如果是快照版本就部署到快照版本的仓库。
快照版本
maven为什么要区分发布版本与快照版本呢?简单的1.0,1.1不就够了么,在此我们就可以提到SNAPSHOT到一个SNAPSHOT(快照版本)。
我们只要将版本的版本号设置为2.1-SNAPSHOT,然后发布到私服中,在发布的过程中,maven会自动为版本打上时间戳。比如2.1-20091214.221414-13就表示2009年12月14日22点14分14秒的第13次快照。有了该时间戳,Maven就能随时找到仓库中该构件2.1-SNAPSHOT版本最新的文件。这时,如果配置对于2.1-SNAPSHOT版本的依赖,当她构建模块B的时候,Maven会自动检测模块A的2.1-SNAPSHOT的最新构件,当发现有更新时便立即下载。
当项目经过完善的测试后需要发布后,就应该将快照版本改为发布版本。
镜像
如果仓库X可以提供Y存储的所有内容,那么就可以认为X是Y的一个镜像。换句话说,任何一个可以从仓库Y获得的构件,都能够从他的镜像中获取。举个例子,http://maven.net.cn/content/groups/public是中央仓库http://repol.maven.org/maven2/在中国的镜像,因此,可以配置Maven使用该镜像来替代中央仓库。编辑settings.xml,如下:
<settings> ... <mirrors> <mirror> <id>maven.net.cn</id> <name>one of the central mirrors in china</name> <url>http://maven.net.cn/content/groups/public</url> <mirrorOf>central</mirrorOf> </mirror> </mirrors> ...</settings>该例中,<mirrorOf>的值为central,表示该配置为中央仓库d的镜像,任何对中央仓库的请求都会转至该镜像。
关于镜像的一个更为常见的用法是结合私服。由于私服可以代理任何外部的公共仓库,因此对于组织内的Maven用户来说,使用一个私服地址就等于使用了所有的外部仓库,这时可以配置一个这样的镜像:
<settings> ... <mirrors> <mirror> <id>internal-repository</id> <name>Internal Repository Manager</name> <url>http://192.168.1.100/maven2</url> <mirrorOf>*</mirrorOf> </mirror> </mirrors> ...</settings>该例中<mirrorOf>的值为*,表示该配置是所有Maven仓库的镜像,任何对于远程仓库的请求都会转至http://192.168.1.100/maven2/。如果该镜像需要认证,则配置一个id为internal-repository的<server>即可。
阅读全文
0 0
- maven实战(三)maven仓库
- maven实战(1)-- maven仓库
- 《maven实战》读书笔记(三)——仓库
- Maven实战之Maven仓库
- maven学习(三)--仓库
- Maven学习(三) -- 仓库
- Maven 实战 03 仓库
- Maven实战 nuxus仓库
- 【Maven实战】06 仓库
- Maven实战学习笔记(仓库)
- maven 教程三 仓库
- Maven的仓库(转载自Maven实战 作者许晓斌)
- maven实战 学习记录- 仓库
- 搭建本地maven仓库实战
- maven3实战之仓库(maven仓库分类)
- maven3实战之仓库(maven仓库介绍)
- maven3实战之仓库(maven仓库分类)
- maven3实战之仓库(maven仓库分类)
- 链表(一)
- js基础2
- leetcode217题解
- 利用putty实现文件在linux上传和下载
- ZOJ1074-To the Max(dp)
- maven实战(三)maven仓库
- 反卷积,转置卷积
- Ubuntu 12.04 LTS忘记密码
- 最小生成树
- JZOJ 100041. 【NOIP2017提高A组模拟7.12】列车调度
- Java 8 基础知识
- 浅拷贝类型的危险构造函数
- dubbo注册中心
- MYSQL 在字段里现有内容后面添加字符串