笔记:Maven 仓库及配置详解
本地创建默认路径在 用户目录\.m2\repository,如果需要自定义本地创建目录地址,可以编辑文件 用户目录\.m2\settings.xml(文件不存在,则需要从Maven安装目录的Conf目录复制),设置 localRepository 元素的值为希望的本地仓库地址,例如:
<settings
xmlns="http://maven.apache.org/SETTINGS/1.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- localRepository
| The path to the local repository maven will use to store artifacts.
|
| Default: ${user.home}/.m2/repository-->
<localRepository>D:\MavenRepository</localRepository>
<!--
省略其他配置
-->
</settings>
如果需要将本地项目安装到本地仓库,可以在项目中执行如下命令:
mvn
clean
install
命令结果:

参数:
- -U 强制Maven检查更新
- 配置远程仓库,在默认的中央仓库无法满足项目的需求,可能项目需要的构件存在与另一个远程仓库中,这时,可以在POM中配置该仓库:
<repositories>
<!-- 声明一个仓库 -->
<repository>
<!-- 仓库的名称,必须唯一,如果设置为 central 则会替换中央仓库 -->
<id>JBoss Repository</id>
<!-- 仓库的地址 -->
<url>http://repository.jboss.com/maven2/</url>
<!-- 开启仓库的发布版本下载支持 -->
<releases>
<enabled>true</enabled>
<!-- 配置检查校验和文件的策略,默认值:warn,可选值:fail、ignore -->
<checksumPolicy></checksumPolicy>
<!-- 配置从远程仓库检查更新的频率,默认值:daily(每天),可选值:never(不检查)、always(每次构建都检查)、interval:X(每隔X分钟检查一次) -->
<updatePolicy></updatePolicy>
</releases>
<!-- 开启仓库的快照版本下载支持 -->
<snapshots>
<enabled>false</enabled><!-- 配置检查校验和文件的策略,默认值:warn,可选值:fail、ignore -->
<checksumPolicy></checksumPolicy>
<!-- 配置从远程仓库检查更新的频率,默认值:daily(每天),可选值:never(不检查)、always(每次构建都检查)、interval:X(每隔X分钟检查一次) -->
<updatePolicy></updatePolicy>
</snapshots>
<!-- 仓库布局,default 表示 Maven2及Maven3的布局 -->
<layout>default</layout>
</repository>
</repositories>
- 远程仓库的认证,处于安全方面的考虑,我们需要提供认证信息才能访问一些远程仓库,这时为了能让Maven访问仓库的内容,就需要配置认证信息,认证信息配置在
setting.xml
文件中,使用
servers
元素及其
server子元素配置仓库认证信息,示例配置如下:<servers>
<server>
<!-- POM 配置中,需要认证的
repository元素的 Id --><id>deploymentRepo</id>
<!-- 认证用户 -->
<username>repouser</username>
<!-- 认证密码 -->
<password>repopwd</password>
</server>
</servers>
- 部署到远程仓库,私服的一大作用是部署第三方构建,包括组织内部生成的构建以及一些无法从外部仓库直接获取的构件,在POM文件,配置
distributionManagement
元素,该元素包含
repository
和
snapshotRepository
子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库,如果远程仓库需要认证,则参考前面的描述,示例配置如下:<distributionManagement>
<repository>
<!-- 仓库的唯一标识,必须唯一 -->
<id>Drsoft Repository</id>
<!-- 仓库的名称,方便人阅读 -->
<name>Drsoft 仓库</name>
<!-- 仓库的地址 -->
<url>http://repository.drsoft/meave2/</url>
</repository>
<snapshotRepository>
<!-- 仓库的唯一标识,必须唯一 -->
<id>InnerRepository-Shapshot</id>
<!-- 仓库的名称,方便人阅读 -->
<name>Inner Repository-Shapshot</name>
<!-- 仓库的地址 -->
<url>http://localhost:8081/nexus/content/repositories/InnerRepository-Shapshot/</url>
<!-- 示是否为Snapshot版本分配一个包含时间戳的构建号 -->
<uniqueVersion>true</uniqueVersion>
<!-- 仓库存储布局 -->
<layout>default</layout>
</snapshotRepository>配置完成后,执行以下命令:
mvn clean deploy
Maven
会根据输出的构件部署到配置对应的远程仓库,如果是快照版本则部署到快照仓库,否则部署到发布仓库 - 仓库镜像,如果仓库X可以提供仓库Y存储的所有内容,那么就可以认为X是Y的一个镜像,例如 http://maven.net.cn/content/groups/public/ 是中央仓库在中国的镜像,因此可以配置 Maven 使用该镜像来替代中央仓库,编辑 setting.xml 配置文件,镜像仓库的认证也和远程仓库的认证配置一致,增加镜像仓库的配置:
<mirrors>
<mirror>
<!-- 镜像仓库的唯一标识 -->
<id>mirrorId</id>
<!-- 镜像仓库的名称 -->
<name>Human Readable Name for this Mirror.</name>
<!-- 镜像仓库的URL地址 -->
<url>http://my.repository.com/repo/path</url>
<!-- 配置那个仓库的镜像,其值为 repository 的 Id,可以使用
*
标识所有仓库 --><mirrorOf>repositoryId</mirrorOf>
</mirror>
</mirrors>
高级镜像配置:
- <mirrorOf>*</mirrorOf>:匹配所有远程仓库
- <mirrorOf>external:*</mirrorOf>:匹配所有远程仓库,使用 localhost 除外,使用 file:\\ 协议的除外
- <mirrorOf>repo1,repo2</mirrorOf>:匹配仓库repo1 和 repo2 ,使用逗号分隔多个远程仓库
- <mirrorOf>*,!repo2</mirrorOf>:匹配所有远程仓库,repo2除外,使用!将仓库从匹配中排除
- 仓库搜索服务,Nexus
是当前最流行的开源Maven仓库管理软件,Sonatype架设的一个公共Nexue仓库,提供了关键子搜索、类名搜索、坐标搜索、校验和搜索等功能,访问地址:http://repository.sonatype.org - 国内镜像库
- 阿里云提供的Maven仓库,地址:http://maven.aliyun.com/nexus/content/groups/public
笔记:Maven 仓库及配置详解的更多相关文章
- 学习笔记——Maven settings.xml 配置详解
文件存放位置 全局配置: ${M2_HOME}/conf/settings.xml 用户配置: ${user.home}/.m2/settings.xml note:用户配置优先于全局配置.${use ...
- 学习笔记——Maven pom.xml配置详解
POM的全称是“ProjectObjectModel(项目对象模型)”. pom.xml详解 声明规范 <projectxmlns="http://maven.apache.org/P ...
- maven常用插件配置详解
常用插件配置详解Java代码 <!-- 全局属性配置 --> <properties> <project.build.name>tools</proje ...
- 【转】Maven pom.xml 配置详解
原文链接:https://yq.aliyun.com/articles/38271 pom.xml文件配置详解 --声明规范 <project xmlns="http://maven. ...
- Maven settings.xml配置详解
首先:Maven中央仓库的搜索全部公共jar包的地址是,http://search.maven.org/ ===Maven基础-默认中央仓库============================== ...
- 笔记:Maven 插件及配置详解
插件使用配置 用户能够自己选择将某个插件目标绑定到生命周期的某个阶段上,例如创建项目的源码JAR包,内置的插件绑定关系并没有涉及这个任务,mavent-source-plugin 可以帮助我们完成该任 ...
- (转)Maven pom.xml 配置详解
背景:maven一直感觉既熟悉又陌生,归根结底还是自己不太熟. 1 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述了项目:包括配置文件:开发者 ...
- Maven(四-2) Maven pom.xml 配置详解
转载于:http://niuzhenxin.iteye.com/blog/2042102 什么是pom? pom作为项目对象模型.通过xml表示maven项目,使用pom.xml来实现.主要描述 ...
- Maven pom.xml配置详解
POM的全称是“ProjectObjectModel(项目对象模型)”. 声明规范 <projectxmlns="http://maven.apache.org/POM/4.0.0&q ...
随机推荐
- linux ftp及C/S服务架构
乱码转换工具使用convmv软件:windows中文字符编码为GB2312 linux中文字符编码为utf-8选项:-f:源文件中中文字符编码-t:转换成字符编码-r:代表递归--notest:不测试 ...
- Davinci DM6446开发攻略-UBOOT-2009.03移植2 nand flash的烧写
很长一段时间没有更新博客了,是因为要推出新开发方案和做好客户服务工作,忙得不易乐乎.有关DAVINCI U-BOOT的移植,以前写过一篇u-boot-1.3.4(2008年的),其实和这个u-bo ...
- Netty的并发编程实践1:正确使用锁
很多刚接触多线程编程的开发者,虽然意识到了并发访问可变变量需要加锁,但是对于锁的范围.加锁的时机和锁的协同缺乏认识,往往会导致出现一些问题.下面笔者就结合Netty的代码来讲解下这方面的知识. 打开F ...
- java.lang.IllegalArgumentException: Document base E:\Eclipse\workspace\.metadata\.plugins\org.eclips
1.错误描述 四月 13, 2015 5:56:55 下午 org.apache.catalina.core.AprLifecycleListener init 信息: The APR based A ...
- hdu3081 Marriage Match II
新年第一篇,又花了一早上,真是蠢啊! 二分+网络流 之前对于讨论哪些人是朋友的时候复杂度过高 直接n3的暴力虽然看起来复杂度高,其实并不是每次都成立 #include<bits/stdc++.h ...
- .Net Core下 Redis的String Hash List Set和Sorted Set的例子
1.新建一个.Net Core控制台应用程序,用Nuget导入驱动 打开程序包管理控制台, 执行以下代码. PM> Install-Package ServiceStack.Redis 即可添加 ...
- 零基础6个月学好java月薪1w+看看他是怎么学好java的
21世纪进入信息时代,信息科技给人类的生产和生活方式带来了深刻的变革,信息产业已成为推动国家经济发展的主导产业之一,Java作为含金量极高的一门IT技术,很多人希望从事这个行业,那么想学好Java,要 ...
- 在ASP.NET 中检测手机浏览器(转)
引言 之前做的项目中需要在浏览器查看PDF文件.在电脑端没有问题,但是手机端网页打开失败. 后来使用了pdf.js,个人认为pdf.js的页面不够清爽,就希望网站能自动检测登录设备,电脑端保持原样,手 ...
- NOIP2017总结
NOIP2017 总结 今年又炸飞天了,day1T1T2加起来不到100分,T3只有10分--怕真的要AFO了. 和去年一模一样day1炸飞天,day2虽然发挥正常但也无力回天 day1 Day1T1 ...
- (luogu P4012)深海机器人问题 [TPLY]
网页链接 https://www.luogu.org/problemnew/show/4012 做题背景 在不久的将来,人工智能发展使得人类大量失业,也使得现在的我们做[深海机器人问题]做得想死... ...