首页 > 其他分享 >maven的配置文件的心得(profile和mirrorof)

maven的配置文件的心得(profile和mirrorof)

时间:2024-05-12 14:55:12浏览次数:20  
标签:profile xml 配置文件 settings nexus maven micmiu

https://www.cnblogs.com/li1111xin/p/4777965.html

1、maven安装后有两个地方有settings.xml,

(1)一个是maven安装路径下:conf/settings.xml,

(2)一个是用户的本地仓库下:.m2/settings.xml,这个路径是默认的用户的maven的本地仓库的路径

(3)如果指定了自定义的本地仓库的路径,那么把settings.xml拷贝一份放到此路径下,此时你的硬盘里有3个maven的settings.xml,只不过(2)步的不起作用了

如果用户范围的settings.xml和安装路径下的settings.xml内容不一样的话,maven在工作的时候会合并这两个settings.xml,而且用户范围的优先

2、再说settings配置详解

先上一个完整的settings.xml的配置文件,后面有干货

<?xml version="1.0" encoding="UTF-8"?>
 
<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 http://maven.apache.org/xsd/settings-1.0.0.xsd">
  <!--指定本地仓库存储路径。默认值为~/.m2/repository 即 ${user.home}/.m2/repository。 -->
  <localRepository>d:/.m2/repository</localRepository>
 
    <!--指定Maven是否需要和用户输入进行交互。true:需要与用户交互;false:使用一个合理的默认值。默认值为true。 -->
  <interactiveMode>true</interactiveMode>
 
  <!--指定是否使用plugin-registry.xml文件来管理插件版本。设为true表示使用。默认值为false。-->
  <usePluginRegistry>false</usePluginRegistry>
 
  <!--指定是否在离线模式下运行。设为true表示项目构建要在离线模式下运行,默认值为false。 -->
  <offline>false</offline>
 
    <!-- 指定插件groupId列表,用于搜索时插件的groupId没有明确规定。 -->
    <pluginGroups>
         <!-- 指定使用插件查找进一步的组标识符 -->
        <pluginGroup>com.micmiu.plugins</pluginGroup>
    </pluginGroups>
 
  <!-- 指定这台机器连接到网络的代理服务器的列表。除非另有规定(系统属性或命令行开关),
       列表中配置的第一代理将被激活使用。-->
  <proxies>
    <!-- 配置代理服务器的相关参数 -->
    <proxy>
        <!-- 代理标识ID,默认值:default -->
      <id>micmiuProxy</id>
      <!-- 指定是否激活,默认值:true -->
      <active>true</active>
      <!-- 指定代理协议,默认值:http -->
      <protocol>http</protocol>
      <!-- 指定代理认证的用户名 -->
      <username>micmiu</username>
      <!-- 指定代理认证用户的密码 -->
      <password>mypwd</password>
      <!-- 指定代理服务器的主机名 -->
      <host>micmiu.com</host>
      <!-- 指定代理服务的端口 默认值:8080 -->
      <port>80</port>
      <!-- 指定不被代理的主机名列表。多个用|分隔。-->
      <nonProxyHosts>ctosun.com|ctosun.micmiu.com</nonProxyHosts>
    </proxy>
  </proxies>
 
  <!-- 这是一个认证配置的列表,系统内部根据配置的serverID使用。认证配置用于maven链接到远程服务-->
  <servers>
    <!-- 指定的身份认证信息用于连接到一个特定的服务器时,确定系统内的唯一的名称(简称下面的'id'属性)。-->
    <server>
        <!-- 这是server的id(注意不是用户登陆的id)。该id与distributionManagement中repository元素的id必须要匹配。-->
      <id>micmiu-releases</id>
      <!-- 服务器认证的用户名 -->
      <username>michael</username>
      <!-- 服务器认证的用户对应的密码 -->
      <password>mypwd</password>
    </server>
 
    <!-- 另一个示例 私钥/密码 -->
    <server>
      <id>micmiu-snapshots</id>
      <!-- 认证时使用的私钥文件。 -->
      <privateKey>/home/micmiu/.ssh/id_dsa</privateKey>
      <!-- 认证时使用的私钥密码,没有密码就设为空 -->
      <passphrase>mypwd</passphrase>
      <!-- 目录被创建时的权限设置。其值对应了unix文件系统的权限,如664,或者775 -->
      <directoryPermissions>775</directoryPermissions>
      <!-- 仓库文件创建时的权限设置。其值对应了unix文件系统的权限,如664,或者775。 -->
      <filePermissions>664</filePermissions>
    </server>
  </servers>
 
  <!-- 指定镜像列表,用于从远程仓库下载资源 -->
  <mirrors>
    <!-- 指定仓库的镜像站点,代替一个给定的库。该镜像藏库有一个ID相匹配的mirrorOf元素。
         ID是用于继承和直接查找目的,必须是唯一的。-->
    <mirror>
        <!--该镜像的唯一标识符。id用来区分不同的mirror元素。 -->
      <id>mirrorId</id>
      <!--被镜像的服务器的id,比如:central,不能和id匹配。-->
           <mirrorOf>central</mirrorOf>
      <name>micmiu for dev.</name>
      <url>http://dev.micmiu.com/repo/maven2</url>
    </mirror>
 
  </mirrors>
 
  <!-- 这是一个可以在各种不同的方式激活的配置文件列表,并可以修改构建过程。在settings.xml中提供的信息,
       旨在提供本地机器允许建立在本地环境中工作的具体路径和库位置。有多种方式可以激活配置属性:一种在settings.xml中<activeProfiles>指定;
       另一种实质上依赖于系统属性,无论是匹配特定的属性值或只是测试到它的存在.配置文件也可以根据JDK版本的前缀进行激活,1.4 可以激活1.4.2_07
    注:对于在settings.xml中定义的配置,你仅限于指定资源仓库、插件仓库和用于插件在POM中变量的自由形式属性的定义 -->
  <profiles>
    <!-- 指定生成过程的介绍,使用一个或多个上述机制被激活。对于继承而言,激活通过<activatedProfiles/>或命令行配置文件,
         配置文件必须有一个唯一的ID。此配置文件的例子使用的JDK版本触发激活。-->
    <profile>
        <!--该配置的唯一标识符。 -->
      <id>jdk-1.4</id>
 
            <!--自动触发配置文件的逻辑定义。Activation的逻辑配置决定了是否开启该profile。activation元素并不是激活profile的唯一方式。
                settings.xml文件中的activeProfile元素可指定需要激活的profile的id。
                profile也可以通过在命令行,使用-P标记和逗号分隔的列表来显式的激活 -->
      <activation>
          <!--指定是否激活的标识 默认值为false-->
            <activeByDefault>false</activeByDefault>
 
          <!--当匹配的jdk被检测到,profile被激活。例如,1.4激活JDK1.4,1.4.0_2,而!1.4激活所有不是以1.4开头的JDK版本。-->
        <jdk>1.4</jdk>
 
        <!-- 当检测到匹配的操作系统属性时,指定该配置文件将被激活, -->
           <os>
                 <!--激活profile的操作系统的名字 -->
                 <name>windows 7</name>
                 <!--激活profile的操作系统所属家族(如 'windows')  -->
                 <family>windows</family>
                <!--激活profile的操作系统体系结构  -->
                 <arch>x86</arch>
                 <!--激活profile的操作系统版本-->
                 <version>6.1</version>
            </os>
 
            <!-- 检测系统对应的属性和值(该值可在POM中通过${属性名称}引用),配置就会被激活。
                如果值字段是空的,那么存在属性名称字段就会激活 -->
            <property>
                 <!-- 属性的名称 -->
                 <name>mavenVersion</name>
                 <!-- 属性的值 -->
                <value>3.0.4</value>
            </property>
            <!-- 通过检测该文件的是否存在来激活配置。missing检查文件是否存在,如果不存在则激活profile;exists则会检查文件是否存在,如果存在则激活。-->
            <file>
                <!--如果指定的文件存在,则激活profile。 -->
                <exists>/usr/local/micmiu/workspace/myfile</exists>
                <!--如果指定的文件不存在,则激活profile。-->
                <missing>/usr/local/micmiu/workspace/myfile</missing>
            </file>
      </activation>
 
            <!-- 对应profile的扩展属性列表。Maven属性和Ant中的属性一样,可以用来存放一些值。这些值可以在POM中的任何地方使用标记${X}来使用,
                 这里X是指属性的名称。属性有五种不同的形式,并且都能在settings.xml文件中访问。
                       1. env.X: 表示系统环境变量。例如,"env.PATH" 等同于 $path环境变量(在Windows上是%PATH%)。
                      2. project.x:表示 POM中对应的属性值。
                      3. settings.x: 表示 settings.xml中对应属性值。
                      4. Java系统属性: 所有可通过java.lang.System.getProperties()访问的属性都能在POM中使用该形式访问。
                      5. x: 在<properties/>元素中,或者外部文件中设置,以${someVar}的形式使用。 -->
             <properties>
              <user.blog>www.micmiu.com</user.blog>
          </properties>
 
    </profile>
 
    <!-- 这是另一个配置文件,根据系统属性来激活 -->
    <profile>
        <!--该配置的唯一标识符。 -->
      <id>env-dev</id>
      <activation>
        <property>
            <!-- 被用来激活配置文件的属性的名称 -->
          <name>target-env</name>
          <!-- 被用来激活配置文件的属性的值 -->
          <value>dev</value>
        </property>
      </activation>
      <!-- 指定配置文件的扩展配置 内容采取property.value的形式 -->
      <properties>
        <tomcatPath>/path/to/tomcat/instance</tomcatPath>
      </properties>
    </profile>
 
    <profile>
            <id>repo-dev</id>
            <!-- 配置远程仓库列表 -->
            <repositories>
                <!-- 远程仓库的配置信息 -->
                <repository>
                    <!-- 远程仓库唯一标识-->
                    <id>nexus</id>
                    <!-- 远程仓库名称 -->
                    <name>nexus for develop</name>
                    <!-- 远程仓库URL -->
                    <url>http://192.168.1.8:8080/nexus/content/groups/public/</url>
                    <layout>default</layout>
                    <releases>
                        <!--是否使用这个资源库下载这种类型的构件 默认值:true-->
                        <enabled>true</enabled>
                        <!--指定下载更新的频率。这里的选项是:always(一直),daily(每日,默认值),interval:X(这里X是指分钟),或者never(从不)。 -->
                  <updatePolicy>daily</updatePolicy>
                  <!--当Maven验证构件校验文件失败时该怎么做fail(失败)或者warn(告警)。-->
                  <checksumPolicy>warn</checksumPolicy>
                    </releases>
                    <snapshots>
                        <!--是否使用这个资源库下载这种类型的构件 默认值:true-->
                        <enabled>true</enabled>
                        <!--指定下载更新的频率。这里的选项是:always(一直),daily(每日,默认值),interval:X(这里X是指分钟),或者never(从不)。 -->
                  <updatePolicy>daily</updatePolicy>
                  <!--当Maven验证构件校验文件失败时该怎么做fail(失败)或者warn(告警)。-->
                  <checksumPolicy>warn</checksumPolicy>
                    </snapshots>
                </repository>
            </repositories>
            <pluginRepositories>
                <pluginRepository>
                    <id>nexus</id>
                    <name>local nexus</name>
                    <url>http://192.168.1.8:8080/nexus/content/groups/public</url>
                    <layout>default</layout>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                </pluginRepository>
            </pluginRepositories>
        </profile>
 
  </profiles>
 
  <!-- 指定被激活的配置文件-->
  <activeProfiles>
    <activeProfile>repo-dev</activeProfile>
  </activeProfiles>
</settings>

 

(1)各个节点的注释都有,可以看一下

(2)在配置了mirrorof的镜像后,并且mirrorof的规则是*的话,后面的profiles的repositories节点是没有意义的,可以去掉,但是profile节点还可以配置其他很多东西,所以不影响此节点下其他的除了repositories之外ide节点的东西

(3)maven的镜像从指定mirrorof的地址下载资源后,如果此地址没有该资源,不会去maven的超级pom下的中央仓库去下载资源,此时的nexus私服配置的有中央仓库地址,此时nexus私服会去中央仓库下,如果还没有,则要另外从网上下载,并上传到私服下

(4)maven的超级pom所在位置:D:\maven\apache-maven-3.3.1\lib\maven-model-builder-3.3.1.jar,打开这个jar包:org\apache\maven\model\**.pom

(5)maven发布项目到私服上,需要配置私服节点吗,需要验证?

标签:profile,xml,配置文件,settings,nexus,maven,micmiu
From: https://www.cnblogs.com/zhoading/p/18187814

相关文章

  • 1-分库分表概述_工作过程_分片规则_目录结构_配置文件
    1.分库分表概述工作过程分片规则目录结构配置文件分库分表概述 工作过程 分片规则 目录结构 配置文件分库分表应用注意1.在数据库设计时考虑垂直分库和垂直分表2.数据量增加时,不要马上做水平分割,而是先考虑缓存处理、读写分离、使用索引等方式。如果以上方式不能解决,......
  • MacOS 上 Flutter 3.19.6 修改 maven 的源
    将Flutter中的maven访问源修改为国内镜像源。因为目前网站多数教程已经不适用了,找了很久才找到替换方法,故特此记录。本篇方法参考了此链接。下面是修改的方法:(1)打开Flutter的安装目录/packages/flutter_tools/lib/src/http_host_validator.dart文件 (2)将maven的访......
  • maven
    1.常用命令编译:mvncompile将Java源程序编译成class字节码文件。测试:mvntest并生成测试报告清空:mvnclean将以前编译得到的旧的class字节码文件删除打包:mvnpakage动态web工程打war包,Java工程打jar包。安装jar包到本地仓库中:mvninstall跳过测试:mvnxxx-Dsk......
  • mybatis核心配置文件
    在resource目录下,创建mybatis-config.xml(官方建议起名方式)核心配置文件常用元素properties:通过resource属性从外部指定属性文件(db.properties),该属性文件描述数据库连接的相关配置(数据库驱动、连接数据库的url、数据库用户名、数据库密码),位置也是在/resources目录下settin......
  • 1-Maven-Nexus3
    1.Maven&Nexus3maven是java编写的开源项目管理工具,采用POM(ProjectObjectModel)来管理项目,所有项目配置信息被保存在POM.xml文件中,通过该文件Maven可以管理整个项目的生命周期私服是架设在局域网的一种特殊远程仓库,目的是代理远程仓库和第三方构件。有了私服务,当Maven需要下载......
  • 配置文件
    //1.QMetaObject::connectSlotsByNamevoidWidget::on_btnOpen_clicked(){QStringconf_path=qApp->applicationDirPath()+"/conf/settings.ini";std::unique_ptr<QSettings>iniSet(newQSettings(conf_path,QSettings::IniFormat))......
  • Maven随手笔记
    1当同时存在多个maven软件时,在windows上要如何区分? 查看当前使用的是哪个maven的指令,mvn-vC:\Users\yangd>mvn-vApacheMaven3.6.3(cecedd343002696d0abb50b32b541b8a6ba2883f)Mavenhome:D:\Java_developer_tools\Must_learn_must_know_technology\MavenProgram\apache......
  • maven 打包 pom build
     <build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1......
  • 日志 配置文件 依赖注入 系统自动日志 控制台应用
    日志级别学习//Trace:0,包含最详细的消息。这些消息可能包含敏感的应用数据。//Debug:1,用于调试和开发。//Information:2,一般用于跟踪系统的日志。//Warning:3,一般用于记录异常事件或意外事件。//Error:4,一般用于记录无法处理的异常。//Critical:5,需要马上处理的失败,比如数......
  • Linux 7修改网卡名称后,配置文件中的默认网关不生效【转载】
    背景 为了系统统一管理在创建了系统后统一将网卡名称修改为eth0,eth1等格式,并在修改完网卡名称重新编译grub配置文件重启后,添加了静态路由,使用route-n查看系统发现路由可以生效,但是配置的默认网关不生效,记录下排查过程。检查网卡配置文件并手动配置默认网关 在检查了网卡配......