Maven为不一样环境配置打包

在开发过程当中常常要遇到为不一样的环境打包,这里面最主要的问题在于,不一样环境的配置是不同的,若是为不一样环境打包每次都手工修改配置,那不但工做量大,并且很容易出错。若是用ant的话,用变量加上replace等命令很容易实现不一样环境不一样配置打包。java

在maven中能够用profile+filter实现相似功能,以配置jdbc为例,假设jdbc.properties配置在src/main/resources/ 目录下,须要设置其中"datasource.url"参数maven

 

一,新建与src同级的filter目录,在目录下为dev,test,local三种环境新建dev.properties,test.properties,local.properties三种过滤文件,里面都设置了各自环境的datasource.url参数;测试

 

二,修改jdbc.properties的配置为ui

datasource.url=${datasource.url}

 

三,配置pom文件url

<project>
    <profiles>
        <profile>
            <id>local</id>
            <properties>
                <env>local</env>
            </properties>
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <profile>
            <id>test</id>
            <properties>
                <env>test</env>
            </properties>
        </profile>
        <profile>
            <id>dev</id>
            <properties>
                <env>dev</env>
            </properties>
        </profile>
    </profiles>
    <build>
        <filters>
            <filter>filter/${env}.properties</filter>
        </filters>
        <resources>
            <resource>
                <directory>src/main/java</directory>
                <includes>
                    <include>**/*.xml</include>
                </includes>
            </resource>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
                <includes>
                    <include>**/*.*</include>
                </includes>
            </resource>
        </resources>
    </build>
</project>

 

四,打包,若是要打包测试环境的配置的话,就用spa

"mvn -X clean package -Ptest"

若是要打包成dev环境的包的话,就将-P参数设置为-Pdev,若是不用-P参数的话,默认为local配置。code

 

五,注意事项:xml

1,filter目录最好为src同级目录,若是为src子目录,maven默认会将filter目录下的几个环境配置过滤文件也会打包出去,即上面提到的test.properties,local.properties,dev.propertiesblog

2,须要过滤配置的资源目录,要加上<filtering>true</filtering>标签,参见资源

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

 3,能够将profiles配置话在父工程中,那样子工程都不用从新配置了。

相关文章
相关标签/搜索