前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >maven配置解析和最佳配置

maven配置解析和最佳配置

作者头像
十毛
发布2019-10-30 11:27:15
1.2K0
发布2019-10-30 11:27:15
举报

最近公司更换了软件源,发现之前的maven的配置存在一些问题,特别是mirrors和server的使用。 本文就maven的settings.xml配置进行了解析,并给出了一般最常用的配置。

配置解析

代码语言:javascript
复制
<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
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!-- 本地仓库(建议放在非C盘) -->
  <localRepository/>

  <!-- 交互模式,默认值为true,如果为false,则会在配置时使用默认值 -->
  <interactiveMode/>

  <!-- 表示maven是否需要在离线模式下运行: 当由于网络设置原因或者安全因素,构建服务器不能连接远程仓库的时候,该配置就十分有用。 -->
  <offline/>

  <!-- 当插件的组织id(groupId)没有显式提供时,供搜寻插件组织Id(groupId)的列表。默认情况下该列表包含了org.apache.maven.plugins和org.codehaus.mojo -->
  <pluginGroups/>

  <!-- 网络代理配置 -->
  <proxies/>

  <!-- 仓库的授权信息:支持username&password, privateKey&passphrase -->
  <servers/>

  <!-- 仓库的镜像 -->
  <mirrors/>
  
  <!-- 根据环境参数来调整构建配置的列表 -->
  <profiles />

  <!-- 手动激活profiles的列表,按照profile被应用的顺序定义activeProfile -->
  <activeProfiles/>
</settings>

mirrors vs servers

  • mirros就是当要访问指定仓库时,实际上访问镜像仓库(一般用在私建中央仓库代理,提高效率,或者使用国内的仓库镜像,比如aliyun的镜像)
  • server就是实际仓库配置

更多区别参见Maven:mirror和repository 区别

配置示例

代码语言:javascript
复制
<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
                          https://maven.apache.org/xsd/settings-1.0.0.xsd">

  <localRepository>E:\m2_repository</localRepository>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
  <pluginGroups/>
  <servers>
    <server>
      <id>tenmao-release</id>
      <username>tenmao</username>
      <password>123456</password>
    </server>
    <server>
      <id>tenmao-snapshot</id>
      <username>tenmao</username>
      <password>123456</password>
    </server>
  </servers>
  <mirrors>
    <mirror>
        <id>nexus-aliyun</id>
        <mirrorOf>central</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>
  </mirrors>

  <profiles>
    <profile>
      <id>default</id>
      <activation>
        <activeByDefault>true</activeByDefault>
      </activation>
    <repositories>
        <repository>
          <id>tenmao-release</id>
          <url>https://mirrors.tenmao.com/repository/maven/tenmao_release</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>false</enabled>
          </snapshots>
        </repository>

        <repository>
          <id>tenmao-snapshot</id>
          <url>https://mirrors.tenmao.com/repository/maven/tenmao_snapshot</url>
          <releases>
            <enabled>false</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </repository>
    </repositories>
  </profile>
</profiles>

  <proxies>
    <!--代理元素包含配置代理时需要的信息 -->
    <proxy>
      <!--代理的唯一定义符,用来区分不同的代理元素。 -->
      <id>myproxy</id>
      <!--该代理是否是激活的那个。true则激活代理。当我们声明了一组代理,而某个时候只需要激活一个代理的时候,该元素就可以派上用处。 -->
      <active>true</active>
      <!--代理的协议。 协议://主机名:端口,分隔成离散的元素以方便配置。 -->
      <protocol>http</protocol>
      <!--代理的主机名。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
      <host>web-proxy.tenmao.com</host>
      <!--代理的端口。协议://主机名:端口,分隔成离散的元素以方便配置。 -->
      <port>8080</port>
      <!--不该被代理的主机名列表。该列表的分隔符由代理服务器指定;例子中使用了竖线分隔符,使用逗号分隔也很常见。 -->
      <nonProxyHosts>*.oa.com|192.168.58.*|10.*|mirrors.tenmao.com</nonProxyHosts>
    </proxy>
  </proxies>
  <activeProfiles/>
</settings>

注意事项

  • 代理中多个跳过代理域名使用|隔开: <nonProxyHosts>*.oa.com|192.*|10.*</nonProxyHosts>

参考

本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2019.10.28 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 配置解析
  • mirrors vs servers
  • 配置示例
  • 注意事项
  • 参考
相关产品与服务
对象存储
对象存储(Cloud Object Storage,COS)是由腾讯云推出的无目录层次结构、无数据格式限制,可容纳海量数据且支持 HTTP/HTTPS 协议访问的分布式存储服务。腾讯云 COS 的存储桶空间无容量上限,无需分区管理,适用于 CDN 数据分发、数据万象处理或大数据计算与分析的数据湖等多种场景。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档