maven的配置文件settings.xml存在于两个地方:

1.安装的地方:${M2_HOME}/conf/settings.xml

2.用户的目录:${user.home}/.m2/settings.xml

前者又被叫做全局配置,对操作系统的所有使用者生效;后者被称为用户配置,只对当前操作系统的使用者生效。如果两者都存在,它们的内容将被合并,并且用户范围的settings.xml会覆盖全局的settings.xml

Maven安装后,用户目录下不会自动生成settings.xml,只有全局配置文件。如果需要创建用户范围的settings.xml,可以将安装路径下的settings复制到目录${user.home}/.m2/。Maven默认的settings.xml是一个包含了注释和例子的模板,可以快速的修改它来达到你的要求。

全局配置一旦更改,所有的用户都会受到影响,而且如果maven进行升级,所有的配置都会被清除,所以要提前复制和备份${M2_HOME}/conf/settings.xml文件,一般情况下不推荐配置全局的settings.xml。

settings.xml中主要包括以下元素:

localRepository:表示Maven用来在本地储存信息的本地仓库的目录。默认是用户家目录下面的.m2/repository目录。

interactiveMode:表示是否使用交互模式,默认是true;如果设为false,那么当Maven需要用户进行输入的时候,它会使用一个默认值。

offline:表示是否离线,默认是false。这个属性表示在Maven进行项目编译和部署等操作时是否允许Maven进行联网来下载所需要的信息。

proxies:其下面可以定义一系列的proxy子元素,表示Maven在进行联网时需要使用到的代理。当设置了多个代理的时候第一个标记active为true的代理将会被使用。

     在特殊的网络策略环境下,可能要需要开发人员通过代理服务器来访问互联网。此时就需要给Maven配置代理服务来访问仓库、更新相关资源。

<proxies>
<proxy>
<id>xxx</id>
<active>true</active> //表示当前代理是否生效
<protocol>http</protocol>
<username>用户名</username>
<password>密码</password>
<host>代理服务器地址</host>
<port>代理服务器的端口</port>
<nonProxyHosts>不使用代理的主机</nonProxyHosts>
</proxy>
</proxies>

servers:其下面可以定义一系列的server子元素,表示当需要连接到一个远程服务器的时候需要使用到的验证方式。这主要有username/password和privateKey/passphrase这两种方式

mirrors:用于定义一系列的远程仓库的镜像。我们可以在pom中定义一个下载工件的时候所使用的远程仓库。但是有时候这个远程仓库会比较忙,所以这个时候人们就想着给它创建镜像以缓解远程仓库的压力,也就是说会把对远程仓库的请求转换到对其镜像地址的请求。每个远程仓库都会有一个id,这样我们就可以创建自己的mirror来关联到该仓库,那么以后需要从远程仓库下载工件的时候Maven就可以从我们定义好的mirror站点来下载,这可以很好的缓解我们远程仓库的压力。在我们定义的mirror中每个远程仓库都只能有一个mirror与它关联,也就是说你不能同时配置多个mirror的mirrorOf指向同一个repositoryId。

profiles:用于指定一系列的profile.

Maven仓库主要有2种:

  • remote repository:相当于公共的仓库,大家都能访问到,一般可以用URL的形式访问

  • local repository:存放在本地磁盘的一个文件夹,例如,windows上默认是C:\Users\{用户名}\.m2\repository目录

Remote Repository主要有3种:

  • 中央仓库:http://repo1.maven.org/maven2/

  • 私服:内网自建的maven repository,其URL是一个内部网址

  • 其他公共仓库:其他可以互联网公共访问maven repository,例如 jboss repository等

repository里存放的都是各种jar包和maven插件。当向仓库请求插件或依赖的时候,会先检查local repository,如果local repository有则直接返回,否则会向remote repository请求,并缓存到local repository。也可以把做的东西放到本地仓库,仅供本地使用;或上传到远程仓库,供大家使用。

Mirror

mirror相当于一个拦截器,它会拦截maven对remote repository的相关请求,把请求里的remote repository地址,重定向到mirror里配置的地址。

需要注意的是,由于镜像仓库完全屏蔽了被镜像仓库,当镜像仓库不稳定或者停止服务的时候,Maven仍将无法访问被镜像仓库,因而将无法下载构件。

私服

私服是一种特殊的远程Maven仓库,它是架设在局域网内的仓库服务,私服一般被配置为互联网远程仓库的镜像,供局域网内的Maven用户使用。

当Maven需要下载构件的时候,先向私服请求,如果私服上不存在该构件,则从外部的远程仓库下载,同时缓存在私服之上,然后为Maven下载请求提供下载服务,另外,对于自定义或第三方的jar可以从本地上传到私服,供局域网内其他maven用户使用。

在<repositories>元素下,可以使用  <repository>子元素声明一个或者多个远程仓库。

最新文章

  1. javascrip中cookie的使用详细分析
  2. js 获取元素宽高
  3. 将List下载到本地保存为Excel
  4. JSP内置对象有哪些呢?
  5. 匿名函数:Lambda表达式和匿名方法
  6. Thumbnailator压缩图片
  7. ECshop网店系统百万级商品量性能优化-加快首页访问速度
  8. git常用操作指令
  9. CXF WebService整合Spring
  10. mlpack:可伸缩C++机器学习库(转)
  11. input编辑框编辑状态切换
  12. leetcode 9 Palindrome Number 回文数
  13. node-basis(提供nodejs开发的基础包)
  14. 从一次线上故障思考Java问题定位思路
  15. python list的一个面试题
  16. Emulator Error: Could not load OpenGLES emulation library: Could not load DLL!
  17. 第十一篇:Linux中权限的再讨论( 下 )
  18. Navicat 导出sql文件和导入sql文件
  19. access 2010,数学
  20. CF1064 E - Dwarves, Hats and Extrasensory Abilities

热门文章

  1. JSP--内置对象&amp;动作标签介绍
  2. Spring中操作Hibernate的几种方式
  3. mongodb,redis简单学习
  4. JavaWeb -- 自定义标签实例, 防盗链, JSTL 核心标签
  5. BZOJ3244/UOJ122 [Noi2013]树的计数
  6. 安装rackspace private cloud --5 Deployment configuration
  7. 保护SSH的三把锁
  8. 5.6 WebDriver API实例讲解(31-40)
  9. ionic2——apk签名
  10. Spring_总结_03_装配Bean(一)_自动装配