• 基于maven的profile实现动态选择配置文件


    需求

    根据选择不同的部署环境自动替换相关配置变量,如连接的数据库等。

    最终效果概览

    • 部署环境分为dev和release
    • 工程目录结构
      myproject
        |-profile
        |   |-dev
        |   |   |-dbconfig.properties
        |   |-release
        |        |-dbconfig.properties
        |-src
        |   |-main
        |       |-java
        |       |-webapp
        |       |-resources
        |           |-dbconfig.properties
        |-pom.xml
    
    • 部署时执行命令
      • dev
        mvn clean package -Pdev
      • release
        mvn clean package -Prelease

    实现步骤

    1. 编辑各环境的变量

    按如下结构创建目录和文件(各目录、文件的名字和路径均可更改,与下一步的配置对应即可)

      myproject
        |-profile
        |   |-dev
        |   |   |-dbconfig.properties
        |   |-release
        |        |-dbconfig.properties
    

    dev/dbconfig.properties内容如下

    jdbc.url=jdbc:oracle:thin:@111.00.00.111:1521:orcl
    jdbc.username=myproject
    jdbc.password=myproject_test
    jdbc.dbType=oracle
    

    release/dbconfig.properties内容如下

    jdbc.url=jdbc:oracle:thin:@222.00.00.222:1521:orcl
    jdbc.username=myproject
    jdbc.password=myproject_release
    jdbc.dbType=oracle
    

    项目实际访问的数据库配置文件位于myproject/src/main/resources/dbconfig.properties,内容如下

    jdbc.url=${jdbc.url}
    jdbc.username=${jdbc.username}
    jdbc.password=${jdbc.password}
    jdbc.dbType=${jdbc.dbType}
    

    在部署过程中${xxx}将被替换为对应环境的值,变量名称与dev/dbconfig.properties、release/dbconfig.properties的字段名对应。

    2. pom.xml中配置profile

    在pom.xml的<project></project>中添加如下配置

    <profiles>
    	<profile>
    		<!-- 开发环境 -->
    		<id>dev</id>
    		<activation>
    			<activeByDefault>true</activeByDefault>
    		</activation>
    		<build>
    			<filters>
    				<filter>${basedir}/profile/dev/dbconfig.properties</filter>
    			</filters>
    		</build>
    	</profile>
    
    	<profile>
    		<!-- 生产环境 -->
    		<id>release</id>
    		<build>
    			<filters>
    				<filter>${basedir}/profile/release/dbconfig.properties</filter>
    			</filters>
    		</build>
    	</profile>
    </profiles>
    

    此处添加两个profile,分别为开发环境的dev和正式环境的release,其中dev环境配置了<activeByDefault>true</activeByDefault>,指定dev为默认配置

    3. 激活过滤资源

    pom.xml配置资源时,针对待替换的资源设置<filtering>true</filtering>。本例中配置为src/main/resources下的所有properties文件都需要检测替换。

    <resources>
        <resource>
            <directory>src/main/resources</directory>
                <includes>
                    <include>**/*.properties</include>
    	    </includes>
    	<filtering>true</filtering>
        </resource>
        <resource>
            <directory>src/main/resources</directory>
        </resource>
    </resources>
    

    4. 部署

    mvn命令中-P可指定profile
    根据配置中profile的id可选择对应的部署环境,如部署到正式环境时执行如下命令即可完成打包
    mvn clean package -Prelease

    其他

    IDEA中的使用

    在idea的Maven Project标签中可以看到项目配置的profile,如果通过<activeByDefault>true</activeByDefault>指定了默认环境,在项目构建过程将会自动勾选默认的环境,如此可以在其他开发成员对profile概念不熟悉时仍然能正常运行项目。

  • 相关阅读:
    魅族多机房部署方案-tech_meizu-ChinaUnix博客
    环信首席架构师:一个单元化架构的例子-CSDN.NET
    双活数据中心解决方案(最新)_图文_百度文库
    阿里巴巴分布式数据库服务DRDS研发历程
    OpenDigg
    Qcon
    有赞应用层网关剖析
    Enterprise Architect-工具-火龙果软件
    (80 条消息) 哪些管理类的书籍值得推荐?
    【图文】拉姆查兰-领导梯队_百度文库
  • 原文地址:https://www.cnblogs.com/leap/p/7551679.html
Copyright © 2020-2023  润新知