美文网首页开发辅助技术
maven配置解析和最佳配置

maven配置解析和最佳配置

作者: 十毛tenmao | 来源:发表于2019-10-28 23:19 被阅读0次

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

    配置解析

    <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 区别

    配置示例

    <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>

    参考

    相关文章

      网友评论

        本文标题:maven配置解析和最佳配置

        本文链接:https://www.haomeiwen.com/subject/tbkivctx.html