Maven项目多环境之间的配置文件的切换

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

    简单的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端口访问。sql

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命令,如:apache

package -P dev
install -P pro

这些都是能够的。tomcat

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

和上边的方法相似,不一样的是它会引入项目中的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.propertiesmaven

#这个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-INF\classes\db.properties文件能够看到
titleide

相关文章
相关标签/搜索