• Maven为不同环境配置打包


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

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

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

    二,修改jdbc.properties的配置为

    datasource.url=${datasource.url}

    三,配置pom文件

    <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>

    四,打包,如果要打包测试环境的配置的话,就用

    "mvn -X clean package -Ptest"

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

    五,注意事项:

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

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

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

     3,可以将profiles配置话在父工程中,那样子工程都不用重新配置了。

    别让生活压力挤走快乐~
  • 相关阅读:
    C# .NET5.0 平台介绍、演变
    ORA01034/ORA27101解决
    navicat无法连接虚拟机MySQL
    [原创]Windows下Google V8 javascript引擎编译
    CentOS 6.9安装MySQL5.5
    国内yum源
    【转】关于C++程序的编码问题
    VS C4819 编译错误解决方法
    Windows下Vundle安装
    vmware NAT 静态ip配置
  • 原文地址:https://www.cnblogs.com/cookiehu/p/4949629.html
Copyright © 2020-2023  润新知