maven profile切换正式环境和测试环境

有时候,咱们在开发和部署的时候,有不少配置文件数据是不同的,好比链接mysql,链接redis,一些properties文件等等java

每次部署或者开发都要改配置文件太麻烦了,这个时候,就须要用到maven的profile配置了mysql

1,在项目下pom.xml的project节点下建立了开发环境和线上环境的profileredis

    <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>

其中id表明这个环境的惟一标识,下面会用到
properties下咱们咱们本身自定义了标签env,内容分别是dev和prd。spring

activeByDefault=true表明若是不指定某个固定id的profile,那么就使用这个环境sql

 

 

2,下面是咱们resources下的目录,有两个目录,dev和prd,在开发时,咱们使用dev下的配置文件,部署时候使用prd下的配置文件mvc

 

 

3配置pom.xml,若是直接install,那么就会找到默认的id为dev的这个profile,而后会在里面找env的节点的值,maven

接着就会执行替换,至关于将src/main/resources/dev这个文件夹下的全部的配置文件打包到classes根目录下。ide

    <build>
        <finalName>springmvc2</finalName>
        <resources>
            <resource>
                <directory>src/main/resources/${env}</directory>
            </resource>
        </resources>
    </build>

 在idea下指定打包时指定profile的idui

1第一步idea

 2第二步

 

3第三步

4第四步,执行打包命令

 

这个时候target下springmvc项目下的classes根目录下有了env.properties,而且里面内容是咱们指定的那个env.properties,

可是发现resources下的aa.properties文件没有被打包进去,那是由于咱们只指定了resources/prd下的文件打包到根目录下,并无指定其余文件

咱们在pom.xml下的resources节点下新增规则

<resource>
    <directory>src/main/resources</directory>
    <excludes>
        <exclude>dev/*</exclude>
        <exclude>prd/*</exclude>
    </excludes>
</resource>

再执行打包就会将resources下的除了dev文件夹和prd文件夹的其余全部文件打包到classes根目录下了

 

 

最后注意:若是有其余配置文件在src/main/java目录下,也是能够这样指定的,可是要指定

<includes>
    <include>*.xml</include>
</includes>

否则会将java类当配置文件一块放到classes根目录下,加了include就会只匹配符合条件的放到target的classes根目录下

 最后放个人全部的配置

   <profiles>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>prd</id>
            <properties>
                <env>prd</env>
            </properties>
        </profile>
    </profiles>


    <build>
        <finalName>springmvc</finalName>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <excludes>
                    <exclude>dev/*</exclude>
                    <exclude>prd/*</exclude>
                </excludes>
            </resource>
            <resource>
                <directory>src/main/resources/${env}</directory>
            </resource>
        </resources>
    </build>
相关文章
相关标签/搜索