Perfil Maven build diferentes entornos utilizando el paquete de implementación

Después de un buen desarrollo del proyecto, por lo general a utilizar en múltiples entornos, como nuestra empresa hasta cinco entorno: ambiente nativo ( locales ), entorno de desarrollo ((auto-prueba dentro del equipo de desarrollo) dev ), (siempre que el equipo de pruebas) entorno de prueba ( la prueba ), el medio ambiente de pre-liberación ( pre ), el entorno de producción oficial ( Prod ), cada entorno tiene sus propios parámetros de configuración, tales como: la conectividad de base de datos y WS dirección de las llamadas remotas y así sucesivamente. Si cada entorno de compilación antes de modificar manualmente estos parámetros, aparentemente demasiado de moda.

experto habría tenido en cuenta estas cuestiones, véase el siguiente fragmento de pom:

<profiles>
        <profile>
            <!-- 本地环境 -->
            <id>local</id>
            <properties>                
                <db-url>jdbc:oracle:thin:@localhost:1521:XE</db-url>
                <db-username>***</db-username>
                <db-password>***</db-password>
            </properties>
        </profile>
        <profile>
            <!-- 开发环境 -->
            <id>dev</id>
            <properties>                
                <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url>
                <db-username>***</db-username>
                <db-password>***</db-password>
            </properties>
            <!-- 默认激活本环境 -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        ...
    </profiles>
perfiles nodo definido dos tipos de medio ambiente: local, dev (entorno de desarrollo se activa por defecto), puede ser añadido en los valores de las propiedades respectivas entorno requeridas, construir el siguiente nodo de modificar, con referencia al siguiente ejemplo:

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

nodo de recursos es la clave, indica que los archivos de configuración en el directorio que necesita ser reemplazado con valores de propiedades basado en entorno de perfil.

Por lo general, los archivos de configuración en el directorio de recursos, cuando ficheros de construcción de ese directorio se copiará automáticamente en el directorio de la clase siguiente

La figura anterior como ejemplo, cuando el contenido es la primavera-database.xml:

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://www.springframework.org/schema/beans 
    http://www.springframework.org/schema/beans/spring-beans.xsd">

    <bean id="dataSource"
        class="org.springframework.jdbc.datasource.DriverManagerDataSource">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="${db-url}" />
        <property name="username" value="${db-username}" />
        <property name="password" value="${db-password}" />        
    </bean>
</beans>

valor de atributo de cada nodo, con marcadores de posición " $ {nombre} atributo " marcador de posición, cuando Maven paquete, reemplazará automáticamente los valores de las propiedades de marcador de posición de acuerdo con el perfil real del medio ambiente.

Por defecto: 

paquete experto

El perfil predeterminado activado entorno paquete, el medio ambiente puede ser especificada manualmente, por ejemplo:

paquete experto  -P dev

envasados de forma automática en el entorno dev paquete de despliegue (Nota: el parámetro P es en mayúsculas )



Por último, se dan ejemplos de casos de uso:

1, el desarrollo y producción ambientes utilizando la fuente de datos del problema de diferentes maneras

Cuando la máquina con el fin de facilitar el desarrollo, muchos desarrolladores prefieren la conexión directa directamente a través de la base de datos JDBC, la modificación de que sea tan fácil;

<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="${db-url}" />
        <property name="username" value="${db-username}" />
        <property name="password" value="${db-password}" />
        <property name="defaultAutoCommit" value="false" />
        <property name="initialSize" value="2" />
        <property name="maxActive" value="10" />
        <property name="maxWait" value="60000" />
    </bean>
El entorno de producción, normalmente dispuestos en el servidor web una fuente de datos JNDI (como el weblogic),
<bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="appDS" />        
</bean>

Si la pre-producción, hay que modificar manualmente cada versión, sería demasiado primitivo, puede ser resuelto por el experto en el perfil

Poner en un archivo de configuración 

<bean id="${db-source-jdbc}" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="${db-url}" />
        <property name="username" value="${db-username}" />
        <property name="password" value="${db-password}" />
        <property name="defaultAutoCommit" value="false" />
        <property name="initialSize" value="2" />
        <property name="maxActive" value="10" />
        <property name="maxWait" value="60000" />
    </bean>
    
    <bean id="${db-source-jndi}" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="appDS" />        
    </bean>
Es decir, con un marcador de posición para el ID de frijol, y similares, se proporciona a continuación en pom.xml
<profile>
            <!-- 本机环境 -->
            <id>local</id>
            <properties>
                ...
                <db-source-jdbc>dataSource</db-source-jdbc>
                <db-source-jndi>NONE</db-source-jndi>
                <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url>                
                <db-username>mu_fsu</db-username>
                <db-password>mu_fsu</db-password>
                ...
            </properties>
            <!-- 默认激活本环境 -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>        
        <profile>
            <!-- 生产环境 -->
            <id>pro</id>
            <properties>
                ...
                <db-source-jdbc>NONE</db-source-jdbc>
                <db-source-jndi>dataSource</db-source-jndi>
                ...
            </properties>
        </profile>
    </profiles>
De esta manera, MVN Pena -P Limpio paquete para el local cuando se envasa entorno de desarrollo local, generará
<bean id="dataSource" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="jdbc:oracle:thin:@172.21.129.***:1521:orcl" />
        <property name="username" value="***" />
        <property name="password" value="***" />
        <property name="defaultAutoCommit" value="false" />
        <property name="initialSize" value="2" />
        <property name="maxActive" value="10" />
        <property name="maxWait" value="60000" />
    </bean>
    
    <bean id="NONE" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="appDS" />        
    </bean>
El entorno de producción de envases mvn paquete limpio -P Pro , la generación
<bean id="NONE" class="org.apache.commons.dbcp.BasicDataSource"
        destroy-method="close">
        <property name="driverClassName" value="oracle.jdbc.driver.OracleDriver" />
        <property name="url" value="${db-url}" />
        <property name="username" value="${db-username}" />
        <property name="password" value="${db-password}" />
        <property name="defaultAutoCommit" value="false" />
        <property name="initialSize" value="2" />
        <property name="maxActive" value="10" />
        <property name="maxWait" value="60000" />
    </bean>
    
    <bean id="dataSource" class="org.springframework.jndi.JndiObjectFactoryBean">
        <property name="jndiName" value="appDS" />        
    </bean>
Otro asociado a la configuración del resorte de frijol base de datos, de acuerdo referencia dataSource bean al nombre de

Publicados 159 artículos originales · ganado elogios 75 · vistas 190 000 +

Supongo que te gusta

Origin blog.csdn.net/xuehuagongzi000/article/details/79219758
Recomendado
Clasificación