zoukankan      html  css  js  c++  java
  • Maven项目多环境之间的配置文件的切换

    • 前言:对于一个项目,开发和生产环境之间会使用不同的配置文件,最简单的例子就是数据库连接池的配置了。当然,可以在打包上线前对配置文件进行替换,不过这也太low了吧。

    简单的pom.xml中的配置内容

    • 比如我们在maven项目中引入了内嵌式的tomcat插件(当然打包方式是要war包),如下代码
    	<!--在build标签中-->
    	<plugins> 	  
    	  <plugin>
                    <groupId>org.apache.tomcat.maven</groupId>
                    <artifactId>tomcat7-maven-plugin</artifactId>
                    <version>2.2</version>
                    <configuration>
                        <!-- 指定端口 -->
                        <port>8821</port>
                        <!-- 请求路径 -->
                        <path>/</path>
                    </configuration>
                </plugin>
    	<plugins>
    

    title

    指定了端口号是8821,启动项目后(在idea右边的maven project),就可以使用8821端口访问。

    title

    8821是我们开发的端口,如果我们想打包上传到服务器,然后就修改这个端口为8891。

    • 首先在pom.xml使用properties标签来定义端口号
      title
    • 然后就创建多个环境,多个环境对tomcat_port这个属性进行定义
    <!--和build平级-->
        <profiles>
            <profile>
                <!--开发环境,这个id就是名称-->
                <id>dev</id>
                <properties>
                    <!--这个标签就是定义你要设定的properties中的属性-->
                    <tomcat_port>8821</tomcat_port>
                </properties>
            </profile>
            <profile>
                <!--生产环境-->
                <id>pro</id>
                <properties>
                    <tomcat_port>8821</tomcat_port>
                </properties>
            </profile>
        </profiles>
    
    • 然后修改我们的tomcat7系列的maven命令,在后边添加参数:
      -P 环境id,在idea中,右键这个maven命令,就可以设置了
      title

    title

    设置完后,点击运行,
    title

    除了tomcat:run 外,其他的maven命令,如:

    package -P dev
    install -P pro
    

    这些都是可以的。

    不同环境下使用不同的数据库配置文件

    和上边的方法类似,不同的是它会引入项目中的properties配置文件

    • 首先,src/main/resources下创建dbprops文件夹,在这个文件夹下创建一个db_dev.properties,内容如下:
    #这个env前缀可以自定义,也可以不用
    env.jdbc.driver=com.mysql.jdbc.Driver
    env.jdbc.url=jdbc:mysql://localhost:3306/tb_dev?characterEncoding=utf-8
    env.jdbc.username=dev
    env.jdbc.password=dev
    

    也创建一个db_pro.properties

    #这个env前缀可以自定义,也可以不用
    env.jdbc.driver=com.mysql.jdbc.Driver
    env.jdbc.url=jdbc:mysql://localhost:3306/tb_pro?characterEncoding=utf-8
    env.jdbc.username=pro
    env.jdbc.password=pro
    
    • 然后,修改我们src/main/resources下的db.properties配置文件,这个配置文件就是我们之前的数据库连接配置文件(因为datasource中指定的路径就是这个配置文件)
    #之前写的是确定的地址,这回就使用变量
    jdbc.driver=${env.jdbc.driver}
    jdbc.url=${env.jdbc.url}
    jdbc.username=${env.jdbc.username}
    jdbc.password=${env.jdbc.password}
    
    • 在pom.xml中添加属性
      <properties>
    	<!--这个db_env是自定义的,随便起-->
      	<db_env>dev</db_env>
      </properties>
    
    
    • 在pom.xml中定义profile
     <profiles>
      	<profile>
    		<!--环境名-->
      		<id>dev</id>
      		<properties>
    			<!--这个名要和之前定义的db_dev.properties中的dev相同,下边会看到拼接-->
      			<db_env>dev</db_env>
      		</properties>
      	</profile>    
      	<profile>
      		<id>pro</id>
      		<properties>
      			<db_env>pro</db_env>
      		</properties>
      	</profile>
      </profiles>
    
    
    • 在build标签中添加一个filters和resource指令
    	<filters>
    		<filter>src/main/resources/dbprops/db_${db_env}.properties</filter>
    	</filters>
    
    	<resources>
      		<resource>
    			<!--这是拦截这个目录下的配置文件,进行处理-->
      			<directory>src/main/resources</directory>
      			<filtering>true</filtering>
      		</resource>  		
      	</resources>
    

    好了,我们这使用指定打包
    package -P pro
    然后用触压生成的war包,打开WEB-INFclassesdb.properties文件可以看到
    title

  • 相关阅读:
    12月14日 bs-grid , destroy_all()
    12月13日 什么是help_method,session的简单理解, find_by等finder method
    12月10日 render( locals:{...}) 传入本地变量。
    12月8日 周五 image_tag.
    12月7日,几个错误,拼写错误,遗漏符号:,记忆有误,max-width的作用。gem mini_magick, simple_form
    程序员必读之软件架构
    先进PID控制MATLAB仿真(第4版)
    中文版Illustrator CS6基础培训教程(第2版)
    Android系统级深入开发——移植与调试
    Excel在会计与财务管理中的应用
  • 原文地址:https://www.cnblogs.com/Lyn4ever/p/12008001.html
Copyright © 2011-2022 走看看