maven 配置篇 之 settings.xml 整理中...

2023-11-18

 maven 配置 settings.xml

maven2比起maven1 来说,需要配置的文件少多了,主要集中在pom.xml和settings.xml中。
先来说说settings.xml,settings.xml对于maven 来说相 当于全局性的配置,用于所有的项目。在maven2中存在两个 settings.xml,一个位于maven2的安装目录conf下面,作为全局性配置。对于团队设置,保持一致的定义是关键,所以 maven2/conf下面的settings.xml就作为团队共同的配置文件。保证所有的团队成员都拥有相同的配置。当然对于每个成员,都需要特殊的 自定义设置,如用户信息,所以另外一个settings.xml就作为本地配置。默认的位置为:${user.dir} /.m2/settings.xml目录中(${user.dir} 指windows 中的用户目录)。
settings.xml基本结构如下:
Java代码
  1. <settings xmlns="http://maven .apache.org/POM/4.0.0"    
  2.           xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"    
  3.           xsi:schemaLocation="http://maven .apache.org/POM/4.0.0    
  4.                                http://maven .apache.org/xsd/settings-1.0.0.xsd">    
  5.   <localRepository/>   
  6.   <interactiveMode/>   
  7.   <usePluginRegistry/>   
  8.   <offline/>   
  9.   <pluginGroups/>   
  10.   <servers/>   
  11.   <mirrors/>   
  12.   <proxies/>   
  13.   <profiles/>   
  14.   <activeProfiles/>   
  15. </settings>   
<settings xmlns="http://maven
.apache.org/POM/4.0.0" 
          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
          xsi:schemaLocation="http://maven
.apache.org/POM/4.0.0 
                               http://maven
.apache.org/xsd/settings-1.0.0.xsd"> 
  <localRepository/> 
  <interactiveMode/> 
  <usePluginRegistry/> 
  <offline/> 
  <pluginGroups/> 
  <servers/> 
  <mirrors/> 
  <proxies/> 
  <profiles/> 
  <activeProfiles/> 
</settings> 

简单介绍一下几个主要的配置因素:
localRepository: 表示本地库的保存位置,也就是maven2主要的jar保存位置,默认在${user.dir}/.m2/repository,如果需要另外设置,就换成其他的路径。
offline: 如果不想每次编译,都去查找远程中心库,那就设置为true。当然前提是你已经下载了必须的依赖包。
Servers: 在POM中的 distributionManagement元素定义了开发库。然而,特定的username和pwd不能使用于pom.xml,所以通过此配置来保存server信息
Java代码
  1. <servers>   
  2.     <server>   
  3.       <id>server001</id>   
  4.       <username>my_login</username>   
  5.       <password>my_password</password>   
  6.       <privateKey>${usr.home}/.ssh/id_dsa</privateKey>   
  7.       <passphrase>some_passphrase</passphrase>   
  8.       <filePermissions>664 </filePermissions>   
  9.       <directoryPermissions>775 </directoryPermissions>   
  10.       <configuration></configuration>   
  11.     </server>   
  12.   </servers>  
<servers> 
    <server> 
      <id>server001</id> 
      <username>my_login</username> 
      <password>my_password</password> 
      <privateKey>${usr.home}/.ssh/id_dsa</privateKey> 
      <passphrase>some_passphrase</passphrase> 
      <filePermissions>664</filePermissions> 
      <directoryPermissions>775</directoryPermissions> 
      <configuration></configuration> 
    </server> 
  </servers>

id:server 的id,用于匹配distributionManagement库id,比较重要。
username, password:用于登陆此服务器的用户名和密码
privateKey, passphrase:设置private key,以及passphrase
filePermissions, directoryPermissions:当库文件或者目录创建后,需要使用权限进行访问。参照unix文件许可,如664和775
Mirrors: 表示镜像库,指定库的镜像,用于增加其他库
Java代码
  1. <mirrors>   
  2.   <mirror>   
  3.     <id>planetmirror.com</id>   
  4.     <name>PlanetMirror Australia</name>   
  5.     <url>http://downloads.planetmirror.com/pub/maven2</url>    
  6.     <mirrorOf>central</mirrorOf>   
  7.   </mirror>   
  8. </mirrors>  
  <mirrors> 
    <mirror> 
      <id>planetmirror.com</id> 
      <name>PlanetMirror Australia</name> 
      <url>http://downloads.planetmirror.com/pub/maven2</url> 
      <mirrorOf>central</mirrorOf> 
    </mirror> 
  </mirrors>

id,name:唯一的标志,用于区别镜像
url:镜像的url
mirrorOf:此镜像指向的服务id
Proxies: 此设置,主要用于无法直接访问中心的库用户配置。
Java代码
  1. <proxies>   
  2.   <proxy>   
  3.     <id>myproxy</id>   
  4.     <active>true </active>   
  5.     <protocol>http</protocol>   
  6.     <host>proxy.somewhere.com</host>   
  7.     <port>8080 </port>   
  8.     <username>proxyuser</username>   
  9.     <password>somepassword</password>   
  10.     <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts>   
  11.   </proxy>   
  12. </proxies>  
  <proxies> 
    <proxy> 
      <id>myproxy</id> 
      <active>true</active> 
      <protocol>http</protocol> 
      <host>proxy.somewhere.com</host> 
      <port>8080</port> 
      <username>proxyuser</username> 
      <password>somepassword</password> 
      <nonProxyHosts>*.google.com|ibiblio.org</nonProxyHosts> 
    </proxy> 
  </proxies>

id:代理的标志
active:是否激活代理
protocol, host, port:protocol://host:port 代理
username, password:用户名和密码
nonProxyHosts: 不需要代理的host
Profiles: 类似于pom.xml中的profile元素,主要包括 activation,repositories,pluginRepositories 和properties元素刚开始接触的时候,可能会比较迷惑,其实这是maven2中比较强大的功能。从字面上来说,就是个性配置。
单独定义profile后,并不会生效,需要通过满足条件来激活。
repositories 和pluginRepositories定义其他开发库和插件开发库。对于团队来说,肯定有自己的开发库。可以通过此配置来定义。
如下的配置,定义了本地开发库,用于release 发布。
Java代码
  1. <repositories>   
  2.         <repository>   
  3.           <id>repo-local</id>   
  4.        <name>Internal 开发库</name>   
  5.        <url>http://192.168.0.2:8082/repo-local</url>    
  6.           <releases>   
  7.             <enabled>true </enabled>   
  8.             <updatePolicy>never</updatePolicy>   
  9.             <checksumPolicy>warn</checksumPolicy>   
  10.           </releases>   
  11.           <snapshots>   
  12.             <enabled>false </enabled>   
  13.           </snapshots>   
  14.           <layout>default </layout>   
  15.         </repository>   
  16.       </repositories>   
  17.       <pluginRepositories>   
  18.     <pluginRepository>   
  19.     <id>repo-local</id>   
  20.     <name>Internal 开发库</name>   
  21.     <url>http://192.168.0.2:8082/repo-local</url>    
  22.     <releases>   
  23.             <enabled>true </enabled>   
  24.             <updatePolicy>never</updatePolicy>   
  25.             <checksumPolicy>warn</checksumPolicy>   
  26.     </releases>   
  27.     <snapshots>   
  28.     <enabled>false </enabled>   
  29.     </snapshots>   
  30.     <layout>default </layout>   
  31.     </pluginRepository>   
  32.     </pluginRepositories>   
<repositories> 
        <repository> 
          <id>repo-local</id> 
       <name>Internal 开发库</name> 
       <url>http://192.168.0.2:8082/repo-local</url> 
          <releases> 
            <enabled>true</enabled> 
            <updatePolicy>never</updatePolicy> 
            <checksumPolicy>warn</checksumPolicy> 
          </releases> 
          <snapshots> 
            <enabled>false</enabled> 
          </snapshots> 
          <layout>default</layout> 
        </repository> 
      </repositories> 
      <pluginRepositories> 
    <pluginRepository> 
    <id>repo-local</id> 
    <name>Internal 开发库</name> 
    <url>http://192.168.0.2:8082/repo-local</url> 
    <releases> 
            <enabled>true</enabled> 
            <updatePolicy>never</updatePolicy> 
            <checksumPolicy>warn</checksumPolicy> 
    </releases> 
    <snapshots> 
    <enabled>false</enabled> 
    </snapshots> 
    <layout>default</layout> 
    </pluginRepository> 
    </pluginRepositories> 

releases, snapshots:每个产品的版本的Release或者snapshot(注:release和snapshot的区别,release一般是比较稳定的版本,而snapshot基本上不稳定,只是作为快照)
properties: maven 的properties作为placeholder值,如ant的properties。
包括以下的5种类型值:
1.        env.X,返回当前的环境变量
2.        project.x:返回pom中定义的元素值,如project.version
3.        settings.x:返回settings.xml中定义的元素
4.        java 系统属性:所有经过java.lang.System.getProperties()返回的值
5.        x:用户自己设定的值
Activation: 用于激活此profile
Java代码
  1. <activation>   
  2.         <activeByDefault>false </activeByDefault>   
  3.         <jdk>1.5 </jdk>   
  4.         <os>   
  5.           <name>Windows XP</name>   
  6.           <family>Windows</family>   
  7.           <arch>x86</arch>   
  8.           <version>5.1 .2600 </version>   
  9.         </os>   
  10.         <property>   
  11.           <name>mavenVersion</name>   
  12.           <value>2.0 .3 </value>   
  13.         </property>   
  14.         <file>   
  15.           <exists>${basedir}/file2.properties</exists>   
  16.           <missing>${basedir}/file1.properties</missing>   
  17.         </file>   
  18.       </activation>   
<activation> 
        <activeByDefault>false</activeByDefault> 
        <jdk>1.5</jdk> 
        <os> 
          <name>Windows XP</name> 
          <family>Windows</family> 
          <arch>x86</arch> 
          <version>5.1.2600</version> 
        </os> 
        <property> 
          <name>mavenVersion</name> 
          <value>2.0.3</value> 
        </property> 
        <file> 
          <exists>${basedir}/file2.properties</exists> 
          <missing>${basedir}/file1.properties</missing> 
        </file> 
      </activation> 

jdk:如果匹配指定的jdk版本,将会激活
os:操作系统
property:如果maven 能检测到相应的属性
file: 用于判断文件是否存在或者不存在
除了使用activation来激活profile,同样可以通过activeProfiles来激活
Active Profiles:
表示激活的profile,通过profile id来指定。
Java代码
  1. <activeProfiles>   
  2.   <activeProfile>env-test</activeProfile> 指定的profile id   
  3. </activeProfiles>  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

maven 配置篇 之 settings.xml 整理中... 的相关文章

  • 如何在 Openfire 中使用 smack

    你好 我计划开发一个可以连接到 gtalk facebook 等的聊天客户端 我决定将 smack API 与 openfire 一起使用 但我需要很少的指导来了解如何将它与 openfire 服务器一起使用 openfire 是否提供了基
  • Logback:SizeAndTimeBasedRollingPolicy 不遵守totalSizeCap

    我正在尝试以一种方式管理我的日志记录 一旦达到总累积大小限制或达到最大历史记录限制 我最旧的存档日志文件就会被删除 当使用SizeAndTimeBasedRollingPolicy在 Logback 1 1 7 中 滚动文件追加器将继续创建
  • tomcat 7.0.50 java websocket 实现给出 404 错误

    我正在尝试使用 Java Websocket API 1 0 JSR 356 中指定的带注释端点在 tomcat 7 0 50 上实现 websocket 以下是我如何对其进行编码的简要步骤 1 使用 ServerEndpoint注解编写w
  • 如何在java Spring Boot中实现通用服务类?

    我有许多具有重复代码的服务 我想知道如何实现通用服务 以便我的所有服务都可以扩展它 服务接口示例 重复代码 Service public interface IUserService List
  • Android蓝牙java.io.IOException:bt套接字已关闭,读取返回:-1

    我正在尝试编写一个代码 仅连接到运行 Android 5 0 KitKat 的设备上的 目前 唯一配对的设备 无论我尝试了多少方法 我仍然会收到此错误 这是我尝试过的最后一个代码 它似乎完成了我看到人们报告为成功的所有事情 有人能指出我做错
  • Java:从集合中获取第一项

    如果我有一个集合 例如Collection
  • 从直方图计算平均值和百分位数?

    我编写了一个计时器 可以测量任何多线程应用程序中特定代码的性能 在下面的计时器中 它还会在地图中填充花费了 x 毫秒的调用次数 我将使用这张图作为我的直方图的一部分来进行进一步的分析 例如调用花费了这么多毫秒的百分比等等 public st
  • 添加到列表时有没有办法避免循环?

    我想知道这样的代码 List
  • 在 Java 中通过 XSLT 分解 XML

    我需要转换具有嵌套 分层 表单结构的大型 XML 文件
  • 通过 appassembler-maven-plugin 生成的脚本无法在 Spring Boot 应用程序中找到主类

    我使用 appassembler maven plugin 生成的启动脚本有问题 我有一个基本的 spring boot 应用程序 只有一个类 SpringBootApplication public class ScriptDemoApp
  • Spring Data JPA:查询如何返回非实体对象或对象列表?

    我在我的项目中使用 Spring Data JPA 我正在演奏数百万张唱片 我有一个要求 我必须获取各种表的数据并构建一个对象 然后将其绘制在 UI 上 现在如何实现我的 Spring 数据存储库 我读到它可以通过命名本机查询来实现 如果指
  • JAVA中遍历JSON数据

    我是 JSON 新手 我使用 HTTPUrlConnections 并在 JAVA 程序中获得一些响应 响应数据将类似于 data id 1 userId 1 name ABC modified 2014 12 04 created 201
  • IntelliJ 组织导入

    IntelliJ 是否具有类似于 Eclipse 中的组织导入功能 我拥有的是一个 Java 文件 其中多个类缺少导入 例子 package com test public class Foo public Map map public J
  • 如何从 Ant 启动聚合 jetty-server JAR?

    背景 免责声明 I have veryJava 经验很少 我们之前在 Ant 构建期间使用了 Jetty 6 的包装版本来处理按需静态内容 JS CSS 图像 HTML 因此我们可以使用 PhantomJS 针对 HTTP 托管环境运行单元
  • Hadoop NoSuchMethodError apache.commons.cli

    我在用着hadoop 2 7 2我用 IntelliJ 做了一个 MapReduce 工作 在我的工作中 我正在使用apache commons cli 1 3 1我把库放在罐子里 当我在 Hadoop 集群上使用 MapReduceJob
  • 替换文件中的字符串

    我正在寻找一种方法来替换文件中的字符串而不将整个文件读入内存 通常我会使用 Reader 和 Writer 即如下所示 public static void replace String oldstring String newstring
  • Java 的 PriorityQueue 与最小堆有何不同?

    他们为什么命名PriorityQueue如果你不能插入优先级 它看起来与堆非常相似 有什么区别吗 如果没有区别那为什么叫它PriorityQueue而不是堆 默认的PriorityQueue是用Min Heap实现的 即栈顶元素是堆中最小的
  • 将对象从手机共享到 Android Wear

    我创建了一个应用程序 在此应用程序中 您拥有包含 2 个字符串 姓名和年龄 和一个位图 头像 的对象 所有内容都保存到 sqlite 数据库中 现在我希望可以在我的智能手表上访问这些对象 所以我想实现的是你可以去启动 启动应用程序并向左和向
  • 如何使用通配符模拟泛型方法的行为

    我正在使用 EasyMock 3 2 我想基于 Spring Security 为我的部分安全系统编写一个测试 我想嘲笑Authentication http docs spring io autorepo docs spring secu
  • 基于 Spring Boot 的测试中的上下文层次结构

    我的 Spring Boot 应用程序是这样启动的 new SpringApplicationBuilder sources ParentCtxConfig class child ChildFirstCtxConfig class sib

随机推荐

  • 企业网上下单订货管理软件源码搭建功能介绍

    网上下单订货管理软件源码搭建功能介绍 订货通订单管理系统APP 一 系统概述和用途 系统基于网络 实现厂家和代理商批发商通过网络下单订货功能 什么是订货通 什么是企业订货管理系统 是一款针对中小型企业通过网络实现 厂家和客户 经销商 批发商
  • flutter 的 FutureBuilder使用时在wait部分无限循环,反复调用接口

    反复调用接口说明调用接口的方法反复被调用了 所以为了页面稳定 需要找到一种值调用一次改接口的方法 添加全局变量 var futureBuilderFuture 在初始化时唯一一次调用该接口 override void initState s
  • Pycharm通过ssh远程连接服务器

    目录 一 概述 二 步骤 1 连接服务器 2 设置Python解释器 3 建立Mapping 4 实现代码自动上传 一 概述 笔记本没有英伟达独显 需要跑深度学习的代码 可以使用pycharm远程连接服务器 将本机代码同步到实验室服务器中运
  • Vue 动态连接线

    尝试了两个连线库 jsplumb 和 leadline 其实两个库都很强大 但是基于个人使用的习惯 决定还是用 leadline 在Vue 下我使用它的一个包装库 leader line vue 下面是上图的连接线示例代码 连接线很轻松的就
  • 刷脸支付服务于人就是制胜关键

    在过去 一句 我出门都不用带钱 刷脸就行了 道出的是四海之内皆兄弟的 面子 市场 而如今 不需要兄弟给 面子 任何人露一下脸便可完成交易 方便快捷是支付技术革新的最终目的 成功的互联网企业 或者说互联网企业想要成功 都要解决一个共同问题 服
  • angularjs $http调用接口的方式

    angularjs http调用接口的方式 http get merchantmall merchant json success function data status headers config console log argume
  • 【LEDE】树莓派上玩LEDE终极指南-75-获取CPU温度

    先来说说获取CPU温度的方法 1 通过hwmon获取 2 通过thermal获取 而树莓派就比较蛋疼了 没有额外的传感器 所以sensor detect这些东西完全不起作用 唯独CPU封装内的VideoCore具有温度传感功能 而想要与Vi
  • airpods pro动画不显示_airpodspro为什么没有弹窗

    大家好 我是时间财富网智能客服时间君 上述问题将由我为大家进行解答 airpodspro没有弹窗的原因是 1 耳机离手机太远 2 手机有bug 重启手机试试 3 可能是系统没有升级 更新系统试试 4 也有可能手机没有打开蓝牙功能 5 有可能
  • 总听大佬说起数字化转型,但你真正理解什么是数字化吗?( 2017-02-14 大愚若智 译 )

    作者 Reda Hmeid 译者 大愚若智 充分理解数字化 明确数字化是什么以及不是什么 对于一个架构师来说非常重要 毕竟我们需要向董事长 CEO CTO 分析师 开发者 以及其他所有相关人员解释这些概念 同样重要的是明确数字化转型成功的标
  • Java 压缩多个文件为zip包(中间不生成临时文件,直接压缩为zip二进制流),以及解压zip包二进制流为文件

    Java 压缩多个文件为zip包及解压zip包以及压缩多文件为zip文件流解压zip二进制流 中间不生成临时文件 直接压缩为zip二进制流 并验证解压 1 效果图 2 源码 这篇博客将提供俩种方法 提前生成要压缩的多个文件 然后读取文件夹多
  • 大数据技术之Kafka——Kafka入门

    目录 一 概述 1 1 为什么要有Kafka 1 2 定义 1 3 消息队列 1 消息队列的应用场景 2 消息队列的两种模式 1 4 基础架构 二 Producer生产者 2 1 生产者消息发送流程 2 1 1 发送原理 2 2 异步发送A
  • Python中常见文件操作,纯干货

    Python文件操作 一 关于文件 二 读写文件简单操作 三 文件权限 四 文件高级操作 五 大文件的读取 基本方法 常用函数 六 大文件的读取其他方式 一 关于文件 文件的作用 把一些数据储存起来 使用文件流程 打开文件 读写文件 关闭文
  • 什么是JIT

    一些其他解释的网站 http www sohu com a 169704040 464084 1 动态编译 dynamic compilation 指的是 在运行时进行编译 与之相对的是事前编译 ahead of time compilat
  • 用Google浏览器下载网页视频(包括优酷,土豆等网站视频)

    用Google浏览器下载网页视频 包括优酷 土豆等网站视频 一 准备工具 Google浏览器 Video download helper Chrome插件 二 步骤 1 安装Video download helper插件 1 下载网址 ht
  • 设计模式的 C++ 实现---原型模式

    前文回顾 单例模式 一 单例模式 二 观察者模式 简单工厂模式 工厂方法模式 一 工厂方法模式 二 抽象工厂模式 一 抽象工厂模式 二 前言 原型模式指直接用一个已经存在的对象来创建一个新的对象 然后对新对象进行稍微修改即可 类似复制的操作
  • 动手学CV-目标检测入门教程4:模型结构

    3 4 模型结构 本文来自开源组织 DataWhale CV小组创作的目标检测入门教程 对应开源项目 动手学CV Pytorch 的第3章的内容 教程中涉及的代码也可以在项目中找到 后续会持续更新更多的优质内容 欢迎 如果使用我们教程的内容
  • 在单链表中删除指定值的节点

    在单链表中删除指定值的节点 题目 给定一个单链表和一个数val 删除链表中所有值为val的节点 例如 1 gt 2 gt 3 gt 4 删除3 结果为 1 gt 2 gt 4 思路1 用栈 def remove node with val1
  • Java中如何设置注释模板呢?

    转自 Java中如何设置注释模板呢 下文笔者讲述在日常开发IDE工具中设置注释模板的方法分享 如下所示 Eclipse中设置Java注释模板 Eclipse设置注释模板的菜单 Window gt Preference gt Java gt
  • 实时音频编解码之八 频带扩展

    本文谢绝任何形式转载 谢谢 1 4 8 频带扩展 在线性预测应用中 由于极点过于靠近单位圆 合成滤波器可能处于临界稳定的状态 在定点实现中这一问题更加严重 定点的量化和计算中的精度损失可能使得临界稳定的滤波器变得不稳定 极点位于单位圆外 这
  • maven 配置篇 之 settings.xml 整理中...

    maven 配置 settings xml maven2比起maven1 来说 需要配置的文件少多了 主要集中在pom xml和settings xml中 先来说说settings xml settings xml对于maven 来说相 当