English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Configuración de archivos de construcción de Maven

Los archivos de configuración de construcción son una serie de valores de opciones de configuración que se pueden usar para establecer o anular los valores predeterminados de construcción de Maven.

Al usar archivos de configuración de construcción, puedes personalizar la forma de construcción para diferentes entornos, como el entorno de producción (Producción) y el entorno de desarrollo (Desarrollo).

Los archivos de configuración se especifican en el archivo pom.xml utilizando activeProfiles o elementos profiles y se pueden activar de diversas maneras. Los archivos de configuración modifican el POM durante la construcción y se utilizan para establecer diferentes entornos de destino para los parámetros (por ejemplo, el servidor de bases de datos en entornos de desarrollo (Desarrollo), prueba (Testing) y producción (Producción)).

Tipos de archivos de configuración de construcción

En general, hay tres tipos de archivos de configuración de construcción:

TipoDónde definir
Nivel de proyecto (Por Proyecto)Definido en el archivo POM del proyecto pom.xml
Nivel de usuario (Por Usuario)Definido en el archivo de configuración de Maven (%USER_HOME%/.m2/settings.xml)
GlobalDefinido en el archivo de configuración global de Maven (%M2_HOME%/conf/settings.xml)

Activación de archivo de configuración

El archivo de configuración de construcción de Maven se puede activar de múltiples maneras.

  • Usar la consola de comandos para activar explícitamente.

  • A través de la configuración de Maven.

  • Basado en variables de entorno (usuario o sistema).

  • Configuración del sistema operativo (por ejemplo, la serie de Windows).

  • La existencia o ausencia de archivos.

Ejemplo de activación de archivo de configuración

Supongamos que la estructura del proyecto es la siguiente:

Entre los cuales en src/main/Hay tres archivos de prueba en la carpeta resources:

Nombre del archivoDescripción
env.propertiesConfiguración predeterminada cuando no se especifica el archivo de configuración.
env.test.propertiesConfiguración de prueba cuando se utiliza el archivo de configuración de prueba.
env.prod.propertiesConfiguración de producción cuando se utiliza el archivo de configuración de producción.

Atención:Estos tres archivos de configuración no representan la función del archivo de configuración de construcción, sino que se utilizan con fines de prueba; por ejemplo, si especifico que el archivo de configuración de construcción es prod, el proyecto utiliza el archivo env.prod.properties.

Atención:El siguiente ejemplo sigue utilizando el plugin AntRun, porque este plugin puede绑定 el período de vida de Maven y, sin escribir un solo código con las etiquetas de Ant, puede generar información, copiar archivos, etc. Esto es todo lo que se relaciona con el archivo de configuración de construcción de esta vez.

1、activación de archivo de configuración

El perfil nos permite definir una serie de información de configuración, luego especificar las condiciones de activación. De esta manera, podemos definir múltiples perfiles, y cada perfil tiene condiciones de activación y configuración diferentes, logrando que diferentes entornos utilicen diferentes información de configuración.

A continuación, en el ejemplo, pondremos maven-antrun-El objetivo plugin:run se agrega a la fase de prueba. De esta manera, podemos generar información de texto en diferentes perfiles. Usaremos pom.xml para definir diferentes perfiles y activarlos mediante comandos Maven en la consola de comandos.

El archivo pom.xml es el siguiente:

<project 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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jsoft.test</groupId>
  <artifactId>testproject</artifactId>
  <packaging>jar</packaging>
  <version>0.1-SNAPSHOT</version>
  <name>testproject</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <profiles>
      <profile>
          <id>test</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.test.properties</echo>
                             <copy file="src/main/resources/env.test.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
      <profile>
          <id>normal</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.properties</echo>
                             <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
      <profile>
          <id>prod</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.prod.properties</echo>
                             <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
   </profiles>
</project>

Atención:archivo de configuración de construcciónSe utiliza <profiles> Nodos.

Notas:Se crearon tres nuevos <profiles>, entre los cuales <id>  Distingue diferentes <profiles> Ejecutar diferentes tareas de AntRun; mientras que las tareas de AntRun pueden entenderse así, AntRun escucha el período de vida de test de Maven, cuando Maven ejecuta test, lanza tareas de AntRun, las tareas dentro de las que se imprime texto y copia archivos a la ubicación especificada; y en cuanto a qué tarea de AntRun ejecutar, en este momentoarchivo de configuración de construcciónJuega un papel en la transmisión de lo especificado, por ejemplo, a través de la entrada de parámetros de línea de comandos especificados <id>.

Ejecutar el comando:

mvn test -Ptest

Consejo: El primer test es el período de vida de Maven, el 2 un test esarchivo de configuración de construcciónEl parámetro <id> especificado, este parámetro se transmite a través de -P para transmitir, por supuesto, puede ser prod o normal, según lo que definas tú.<id>.

El resultado de la ejecución es el siguiente:

se puede ver que se desencadenó con éxito la tarea AntRun. Y es el correspondiente.archivo de configuración de construcciónel nodo <id> test de la tarea.

prueba las otras dos órdenes, los resultados son los siguientes:

2、activar el archivo de configuración de Maven

abre %USER_HOME%/.m2 la carpeta settings.xml los archivos, donde %USER_HOME% representa la carpeta del directorio principal del usuario. Si el archivo setting.xml no existe, copia directamente %M2_HOME%/conf/settings.xml hasta .m2 la carpeta, donde %M2_HOME% representa la carpeta de instalación de Maven.

Configura el archivo setting.xml, agrega la propiedad <activeProfiles>:

<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">
   ...
   <activeProfiles>
      <activeProfile>test</activeProfile>
   </activeProfiles>
</settings>

Ejecutar el comando:

mvn test

Aviso 1:En este momento, no es necesario usar -Ptest para ingresar parámetros, el archivo setting.xml mencionado anteriormente ya ha especificado el parámetro test en <activeprofile>.

Aviso 2:También se puede usar en %M2_HOME%/conf/settings.xml el archivo de configuración tiene el mismo efecto.

Resultado de la ejecución:

3、activar el archivo de configuración a través de las variables de entorno

Primero, elimina todos los valores de setting.xml del paso anterior.

Luego, en el nodo <profile> con <id> test de pom.xml, agrega el nodo <activation>:

<project 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/maven-v4_0_0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>com.jsoft.test</groupId>
  <artifactId>testproject</artifactId>
  <packaging>jar</packaging>
  <version>0.1-SNAPSHOT</version>
  <name>testproject</name>
  <url>http://maven.apache.org</url>
  <dependencies>
    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>
  </dependencies>
  <profiles>
      <profile>
          <id>test</id>
          <activation>
            <property>
               <name>env</name>
               <value>test</value>
            </property>
          </activation>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.test.properties</echo>
                             <copy file="src/main/resources/env.test.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
      <profile>
          <id>normal</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.properties</echo>
                             <copy file="src/main/resources/env.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
      <profile>
          <id>prod</id>
          <build>
              <plugins>
                 <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-antrun-plugin</artifactId>
                    <version>1.8</version>
                    <executions>
                       <execution>
                          <phase>test</phase>
                          <goals>
                             <goal>run</goal>
                          </goals>
                          <configuration>
                          <tasks>
                             <echo>Using env.prod.properties</echo>
                             <copy file="src/main/resources/env.prod.properties" tofile="${project.build.outputDirectory}"/env.properties" overwrite="true"/>
                          </tasks>
                          </configuration>
                       </execution>
                    </executions>
                 </plugin>
              </plugins>
          </build>
      </profile>
   </profiles>
</project>

Ejecutar el comando:

mvn test -Denv=test

Aviso 1:arriba se utiliza -D transmite la variable de entorno, donde evn coincide con el valor <name> configurado anteriormente, y test coincide con <value>.

Aviso 2:en Windows 10 Se probó la variable de entorno del sistema, pero no funcionó, por lo que, solo se puede -D Pasado.

Resultado de la ejecución:

4y a través de la configuración de perfil de activación del sistema operativo

El elemento activation contiene la información del sistema operativo siguiente. Cuando el sistema sea Windows XP, se activará el perfil de test.

<profile>
   <id>test</id>
   <activation>
      <os>
         <name>Windows XP</name>
         <family>Windows</family>
         <arch>x86</arch>
         <version>5.1.2600</version>
      </os>
   </activation>
</profile>

Ahora abra la consola de comandos, navegue al directorio donde se encuentra pom.xml y ejecute el siguiente comando mvn. No utilice -La opción P especifica el nombre del perfil. Maven mostrará los resultados del perfil de test activado.

mvn test

5y a través de la existencia o falta del archivo de configuración

Ahora utilice el elemento activation para incluir la información del sistema operativo siguiente. Cuando el objetivo/generated-sources/axistools/wsdl2java/com/companyname/Si falta el grupo, se activará el perfil de test.

<profile>
   <id>test</id>
   <activation>
      <file>
         <missing>target/generated-sources/axistools/wsdl2java/
         com/companyname/group</missing>
      </file>
   </activation>
</profile>

Ahora abra la consola de comandos, navegue al directorio donde se encuentra pom.xml y ejecute el siguiente comando mvn. No utilice -La opción P especifica el nombre del perfil. Maven mostrará los resultados del perfil de test activado.

mvn test

Referencia: https://www.cnblogs.com/EasonJim/p/6828743.html