Prioridad de configuración de Maven (resumen)

I. Introducción

Cuando se realizan proyectos internos de investigación y desarrollo de la empresa, algunas herramientas habituales se empaquetan normalmente en paquetes jar y se cargan en sus propios servidores privados de Maven. Estos paquetes jar solo se pueden proporcionar en la intranet de la empresa. Cuando no estamos en la empresa, es posible que necesitemos descargar algunos otros paquetes jar.Podemos elegir Alibaba Cloud como la dirección de proxy de duplicación de Maven. Al cambiar el archivo de configuración de Maven settings.xml, asegúrese de averiguar la validez del archivo de configuración; de lo contrario, una configuración irrazonable puede hacer que algunos paquetes jar no se descarguen.

Dos, prioridad del archivo de configuración settings.xml

Prioridad: pom.xml> configuración de usuario> configuración global

Descripción :

  • Configuración global: $ {M2_HOME} /conf/settings.xml (configurable por Eclipse o herramientas de desarrollo de Idea)
  • Configuración de usuario: user.home / .m2 / settings.xml (configurable por las herramientas de desarrollo Eclipse o Idea)
  • La configuración local tiene prioridad sobre la configuración global
  • Si estos archivos existen al mismo tiempo, su contenido se fusionará cuando se aplique la configuración. Si hay configuraciones duplicadas, la configuración con mayor prioridad sobrescribirá la configuración con menor prioridad. (Principio de cobertura de fusión)

Tres, vea la configuración efectiva

Tome la herramienta de desarrollo de ideas como ejemplo:

1. Seleccione el proyecto => Clic derecho => Ejecutar Maven => Nuevo objetivo ...

Run-Maven

2. Ingrese ayuda: configuración-efectiva, haga clic en Ejecutar, la consola generará el archivo settings.xml final después de fusionar y sobrescribir.

3. Ingrese la ayuda: perfiles activos, haga clic en Ejecutar, la consola generará los perfiles efectivos, la ventana Maven de la herramienta Idea mostrará directamente el estado efectivo de los perfiles.

En cuarto lugar, el archivo settings.xml del agente de duplicación de Alibaba Cloud

Nota : se recomienda ponerlo directamente en el directorio $ {M2_HOME} / conf y sobrescribir el archivo settings.xml original como la configuración global predeterminada. En el almacén privado interno de la empresa, se establece un settings.xml por separado y se configura en el cuadro de entrada del archivo de configuración del usuario de Idea como una configuración fusionada y sobrescrita.

<?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">
 
    <!-- 默认的值是${user.home}/.m2/repository -->
    <localRepository>D:\maven\aliyun-repository</localRepository>
 
    <!-- 如果Maven要试图与用户交互来得到输入就设置为true,否则就设置为false,默认为true。 -->
    <interactiveMode>true</interactiveMode>
 
    <!-- 如果Maven使用${user.home}/.m2/plugin-registry.xml来管理plugin的版本,就设置为true,默认为false。 -->
    <usePluginRegistry>false</usePluginRegistry>
 
    <!-- 如果构建系统要在离线模式下工作,设置为true,默认为false。 如果构建服务器因为网络故障或者安全问题不能与远程仓库相连,那么这个设置是非常有用的。 -->
    <offline>false</offline>
 
 <mirrors>

    <mirror>
        <id>nexus-aliyun</id>
		<mirrorOf>central,spring-milestone,spring-plugins-release,spring-libs-release,spring-snapshot</mirrorOf>
        <name>Nexus aliyun</name>
        <url>http://maven.aliyun.com/nexus/content/groups/public</url>
    </mirror>   
     
  </mirrors>
 
    <!-- settings.xml中的profile是pom.xml中的profile的简洁形式。 它包含了激活(activation),仓库(repositories),插件仓库(pluginRepositories)和属性(properties)元素。 
        profile元素仅包含这四个元素是因为他们涉及到整个的构建系统,而不是个别的POM配置。 如果settings中的profile被激活,那么它的值将重载POM或者profiles.xml中的任何相等ID的profiles。 -->
    <profiles>
        <profile>
            <id>default</id>
            <activation>
                <activeByDefault>true</activeByDefault>
                <jdk>1.8</jdk>
            </activation>
            <repositories>
                <repository>
                    <id>aliyun-public</id>
                    <name>aliyun public</name>
                    <url>https://maven.aliyun.com/repository/public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-central</id>
                    <name>aliyun central</name>
                    <url>https://maven.aliyun.com/repository/central</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-spring</id>
                    <name>aliyun spring</name>
                    <url>https://maven.aliyun.com/repository/spring</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-spring-plugin</id>
                    <name>aliyun spring-plugin</name>
                    <url>https://maven.aliyun.com/repository/spring-plugin</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-apache-snapshots</id>
                    <name>aliyun apache-snapshots</name>
                    <url>https://maven.aliyun.com/repository/apache-snapshots</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-google</id>
                    <name>aliyun google</name>
                    <url>https://maven.aliyun.com/repository/google</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-gradle-plugin</id>
                    <name>aliyun gradle-plugin</name>
                    <url>https://maven.aliyun.com/repository/gradle-plugin</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-jcenter</id>
                    <name>aliyun jcenter</name>
                    <url>https://maven.aliyun.com/repository/jcenter</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-releases</id>
                    <name>aliyun releases</name>
                    <url>https://maven.aliyun.com/repository/releases</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-snapshots</id>
                    <name>aliyun snapshots</name>
                    <url>https://maven.aliyun.com/repository/snapshots</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-grails-core</id>
                    <name>aliyun grails-core</name>
                    <url>https://maven.aliyun.com/repository/grails-core</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>

                <repository>
                    <id>aliyun-mapr-public</id>
                    <name>aliyun mapr-public</name>
                    <url>https://maven.aliyun.com/repository/mapr-public</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>        
                </repository>
                <repository>
                    <id>spring-milestone</id>
                    <name>Spring Milestone Repository</name>
                    <url>https://repo.spring.io/milestone</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>
                </repository>
                <repository>
                    <id>spring-plugins-release</id>
                    <name>Spring plugins Repository</name>
                    <url>https://repo.spring.io/plugins-release/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>
                </repository>
                <repository>
                    <id>spring-libs-release</id>
                    <name>Spring libs Repository</name>
                    <url>https://repo.spring.io/libs-release/</url>
                    <releases>
                        <enabled>true</enabled>
                    </releases>
                    <snapshots>
                        <enabled>false</enabled>
                    </snapshots>
                    <layout>default</layout>
                </repository>
                <repository>
                    <id>spring-snapshot</id>
                    <name>Spring Snapshot Repository</name>
                    <url>https://repo.spring.io/snapshot</url>
                    <releases>
                        <enabled>false</enabled>
                    </releases>
                    <snapshots>
                        <enabled>true</enabled>
                    </snapshots>
                    <layout>default</layout>
                </repository>
            </repositories>
        </profile>
    </profiles>
    <!-- activations是profile的关键,就像POM中的profiles,profile的能力在于它在特定情况下可以修改一些值。 
        而这些情况是通过activation来指定的。 -->
    <!-- <activeProfiles/> -->
 
</settings>

Nota : No se recomienda que todo central, especialmente settings.xml como configuración global, se establezca en * para evitar el problema de que el contenido de la configuración no se debe sobrescribir.

Supongo que te gusta

Origin blog.csdn.net/ory001/article/details/108616831
Recomendado
Clasificación