zoukankan      html  css  js  c++  java
  • maven里如何根据不同的environment打包

    一个项目里总会有很多配置文件。而且一般都会有多套环境。开发的、测试的、正式的。而在这些不同的环境这些配置的值都会不一样。比如mail的配置、服务的url配置这些都是很常见的。所以在打包的时候就要根据environment来选不同的值或者配置文件。

    比较常用的办法就是为不同的环境建立不同的配置文件目录。在打包的时候用对应的文件目录下的配置文件。

    |-- resources
    |   |-- dev
    |   |-- product
    |   |-- qa
    |   `-- qa53

    以前用ant的时候打包的时候处理就比较方便。打包前copy一下对应目录下的配置文件覆盖target下的那些文件再打包就可以了。在刚开始用maven的时候就想要怎么解决,一直没有找到ant的这种方式的可行的办法。其实主要是按ant这种处理方法去思考了。只去想没有有cp这种target。其实在maven里用profile就可以解决了。对于不同的environment定义不同的profile就ok了,目录结构还是沿用原来的就可以。

    在pom.xml里定义一个变量

        <properties>
          ......
           <package.environment>qa53</package.environment>
        </properties>

    这里定义的值是经常打包的一个profile,方便少敲点代码。然后定义一些profile

        <profiles>
                    <profile>
                        <id>product</id>
                            <properties>
                                    <package.environment>product</package.environment>
                            </properties>
                    </profile>
                    <profile>
                        <id>dev</id>
                            <properties>
                                    <package.environment>dev</package.environment>
                            </properties>
                    </profile>
                    <profile>
                        <id>qa</id>
                            <properties>
                                    <package.environment>qa</package.environment>
                            </properties>
                    </profile>
            </profiles>

    最后再修改一下打包的plugin,引用这个变量。

                <plugin>
                    <groupId>org.apache.maven.plugins</groupId>
                    <artifactId>maven-war-plugin</artifactId>
                    <configuration>
                        <archive>
                            <addMavenDescriptor>false</addMavenDescriptor>
                        </archive>
                        <webResources>
                            <resource>
                                <!-- this is relative to the pom.xml directory -->
                                <directory>src/main/resources/${package.environment}</directory>
                                <targetPath>WEB-INF/classes</targetPath>
                                <filtering>true</filtering>
                            </resource>
                        </webResources>
                    </configuration>
                </plugin>

    这里注意一个参数<filtering>true</filtering>,一定要设置成true这样才会用对应environment目录下的配置文件覆盖原来的。ok。mvn package的时候就会用默认的qa53目录下的配置文件。如果要发布正式环境的包就运行。mvn -Pproduct package

  • 相关阅读:
    Linux文件系统
    Ant整合svnant(三)
    Linux文件系统基本结构和基本操作管理
    Ant生成javadoc(四)
    Linux系统常用命令
    Linux系统目录架构
    使用fdisk进行磁盘管理
    命令行BASH的基本操作
    python 获取项目的根路径
    游戏自动化测试思路
  • 原文地址:https://www.cnblogs.com/soundcode/p/6594784.html
Copyright © 2011-2022 走看看