mavensettings配置_maven settings.xm配置文件详解

概要

maven是一款项目资料仓库,大概有以下几个目标:

  • 简化构建过程
  • 提供统一的构建系统
  • 提供优质项目资料

目前java程序大部分都是基于maven进行构建的,可以说是java程序员必学的一门功课。

ad75f687414553ebf0419d6638427249.png

maven

配置文件settings.xml

maven配置文件可以使maven的按指定的方式进行工作。maven的配置文件一般有两个存放的位置:

  • ${user.home}/.m2/settings.xml
  • ${maven.home}/conf/settings.xml

以下示例展示settings.xml的所有一级元素

                  

xml的内容可以使用以下表达式进行插值:

  • ${user.home} 系统属性 (Maven 3.0以上版本支持)
  • ${env.HOME} 环境变量写法

各元素介绍

1.localRepository

设置本地仓库目录,默认是${user.home}/.m2/repository,设置该值后在远程maven仓库下载的依赖都会存储在该目录下。

/path/to/local/repo

2.interactiveMode

是否与用户交互以获取输入,默认true。

3.offline

是否离线模式,默认为fasle,设置为true将不会从互联网上下载依赖内容。offiline属性在一些因网络原因以及安全因素不能连接远程仓库时十分有效。

false

3.pluginGroups

可以添加多个pluginGroup的元素列表,内容包含一个groupId, 当使用插件并且命令行中没有提供groupId时,会搜索列表。该列表会自动包含 org.apache.maven.plugins 和 org.codehaus.mojo。

    org.eclipse.jetty

设置了以上内容后,maven命令

org.eclipse.jetty:jetty-maven-plugin:run

可以简化为

mvn jetty:run

4.servers

仓库的下载部署一般是定义在pom.xml文件的repositories和distributionManagement 元素中。但是仓库访问的账号密码应该放在settings.xml文件中。

          server001       my_login      my_password      ${user.home}/.ssh/id_dsa      some_passphrase      664      775          
  • id:server唯一标识,与用户无关,需与pom文件中的repository的id一致
  • username, password: 用户账号密码,(密码在 2.1.0版本后也可以使用加密技术,可以参见maven官方文档,本文不讨论)
  • privateKey, passphrase:跟username、password类似,这里是指定私钥的路径(默认 ${user.home}/.ssh/id_dsa)和密码
  • filePermissions, directoryPermissions:文件和目录创建时的权限,值对应unix系统的三位权限数字 664,775

如果使用了privateKey就不要在天password了,否则privateKey会被忽略。

5.mirrors

一般来讲,我们会在项目pom.xml文件中配置指定仓库用于下载依赖和maven插件,有时我们希望为仓库使用另外的镜像,但是不希望修改项目中的文件,这时就可以配置mirrors。

为什么我要配置mirrors:

  • 使用地理上更近的镜像将更快速(比如国内阿里云比国外的快)
  • 希望使用自己内部的仓库,将更易于管理
  • 希望运行仓库管理器来为镜像提供本地缓存,因此需要使用url代替

配置示例

  aliyunmaven  阿里云公共仓库  https://maven.aliyun.com/repository/public  *
  • id:唯一标识,用于区分不同的mirror
  • name:仓库名称
  • mirrorOf:作为镜像的存储库的id。比如 central , *, !foo,不同的mirror里mirrorOf不能重复,否则将只使用第一个。

官方的仓库 由Sonatype公司托管,通过CDN分布在世界各地。如果mirrorOf 设置成central 将会替换官方的仓库从而使用自己配置的仓库。如果mirrorOf 设置成“*”,则会强制使用该仓库,那么该仓库就必须包含所有你需要的内容,该特性在 2.0.5以上版本有效。

在 Maven 2.0.9以上版本,你可以将mirrorOf 配置成逗号隔开的方式来配置多个仓库,注意不能有空格。

  aliyunmaven  阿里云公共仓库  https://maven.aliyun.com/repository/public  repo,repo1

可以在首字母前加感叹号来排除某个仓库

  ...            internal-repository      Maven Repository Manager running on repo.mycompany.com      http://repo.mycompany.com/proxy      external:*,!foo              foo-repository      Foo      http://repo.mycompany.com/foo      foo        ...

external:* 代表所有依赖都是外部,都不在本地主机上,也不基于文件。

6.proxies

设置代理服务器

          myproxy      true      http      proxy.somewhere.com      8080      proxyuser      somepassword      *.google.com|ibiblio.org    
  • id: 唯一标识
  • active: 是否生效,只能一个代理设置为true
  • protocol, host, port: 组合起来就是代理地址 protocol://host:port
  • username, password: 服务器账号密码
  • nonProxyHosts:不用代理的主机列表,多个可以用 | 分割,逗号也是可以的

7.profiles

settings.xml文件中的profile是pom.xml中的profile的其中一部分,有以下部分组成:

(1)activation: 当满足所有指定的条件时,就会激活该profile,如下示例指定了条件jdk、系统、配置参数、文件是否存在或不存在等条件。

          test              false        1.5                  Windows XP          Windows          x86          5.1.2600                          mavenVersion          2.0.3                          ${basedir}/file2.properties          ${basedir}/file1.properties                    ...    

如果某个profile被启用,将会覆盖pom中同id的profile。启用某个profile不只activation一种方式,还可以通过maven命令加 -P 参数启用某个profile。

(2)repositories:

当profile被激活时定义在profile里的远程仓库将被使用。

          ...                        codehausSnapshots          Codehaus Snapshots                      false            always            warn                                true            never            fail                    http://snapshots.maven.codehaus.org/maven2          default                            ...            ...    
  • releases, snapshots: 仓库依赖的类型策略,发布版本和快照版本,可以设置启用某个版本,比如可能出于开发目的只启用快照版本。
  • enabled: true代表启用该类型
  • updatePolicy:更新频率 Maven将比较本地POM的时间戳(存储在存储库的Maven元数据文件中)和远程POM的时间戳。 选项有:always(总是)、daily(每天,默认值)、interval:X(每隔X分钟)或never(从不)。
  • checksumPolicy:当Maven将文件部署到仓库时,它还将部署相应的校验文件,可选项 ignore, fail, warn 处理在校验文件缺失或不正确的情况。
  • layout: 仓库布局,可选项 default , legacy

(3)pluginRepositories

插件仓库, Maven plugins是一种特殊的依赖项,与普通的jar包依赖仓库分开定义,结构与repositories类似。

                            snapshots          Snapshots Repositories          http://ip:8090/nexus/repository/maven-snapshots/                  

(4)properties

定义参数,可以在pom文件中通过${属性名}引用,如下示例可以通过${user.install}引用。

          ...              ${user.home}/our-project            ...    

在pom文件中有几种访问方式可以访问变量

  1. ${env.x} :访问环境变量的x变量的值
  2. ${project.x}:访问pom文件里的x元素的值,
  3. ${settings.x}:访问settings.xml文件里元素的值,比如${settings.offline}对应settings.xml文件中的 false
  4. ${x}:访问pom文件中的properties元素下的值

8.activeProfiles

activeProfiles包含一组activeProfile元素,值为profile的id,如果设为true,那么将启用该profile配置。

     env-test  


以上就是setings.xml文件的全部内容了,因为添加了示例代码,有些长了,希望对大家能有所帮助。

欢迎关注我,不定时更新Java、IT技术。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值