• 使用maven属性变量和配置文件


    mvn archetype:generate

     1 <profiles>
     2         <profile>
     3             <!-- 本地环境 -->
     4             <id>local</id>
     5             <properties>                
     6                 <db-url>jdbc:oracle:thin:@localhost:1521:XE</db-url>
     7                 <db-username>***</db-username>
     8                 <db-password>***</db-password>
     9             </properties>
    10         </profile>
    11         <profile>
    12             <!-- 开发环境 -->
    13             <id>dev</id>
    14             <properties>                
    15                 <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url>
    16                 <db-username>***</db-username>
    17                 <db-password>***</db-password>
    18             </properties>
    19             <!-- 默认激活本环境 -->
    20             <activation>
    21                 <activeByDefault>true</activeByDefault>
    22             </activation>
    23         </profile>
    24         ...
    25     </profiles>

    profiles节点中,定义了二种环境:local、dev(默认激活dev环境),可以在各自的环境中添加需要的property值,接下来修改build节点,参考下面的示例:

     1 <build>
     2         <resources>
     3             <resource>
     4                 <directory>src/main/resources</directory>
     5                 <filtering>true</filtering>
     6             </resource>
     7         </resources>
     8         <plugins>
     9             <plugin>
    10                 <groupId>org.apache.maven.plugins</groupId>
    11                 <artifactId>maven-compiler-plugin</artifactId>
    12                 <version>2.5.1</version>
    13                 <configuration>
    14                     <source>1.6</source>
    15                     <target>1.6</target>
    16                     <encoding>utf-8</encoding>
    17                 </configuration>
    18             </plugin>
    19         </plugins>
    20     </build>

    resource节点是关键,它表明了哪个目录下的配置文件(不管是xml配置文件,还是properties属性文件),需要根据profile环境来替换属性值。

    通常配置文件放在resources目录下,build时该目录下的文件都自动会copy到class目录下

    例:

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

    各属性节点的值,用占位符"${属性名}"占位,maven在package时,会根据profile的环境自动替换这些占位符为实际属性值。

    默认情况下: 

    maven package

    将采用默认激活的profile环境来打包,也可以手动指定环境,比如:

    maven package -P dev

    将自动打包成dev环境的部署包(注:参数P为大写)

  • 相关阅读:
    洛谷P2146 [NOI2015]软件包管理器
    洛谷P3038 [USACO11DEC]牧草种植Grass Planting
    洛谷P2831 愤怒的小鸟
    洛谷P1084 疫情控制
    洛谷P3258 [JLOI]2014松鼠的新家
    洛谷P1084 运输计划
    洛谷P2051 [AHOI2009]中国象棋
    洛谷P1438 无聊的数列
    洛谷P1312 Mayan游戏
    luogu P1038 神经网络
  • 原文地址:https://www.cnblogs.com/javaleon/p/3969226.html
Copyright © 2020-2023  润新知