【maven学习】 利用Profile构建不一样环境的部署包

项目开发好之后,一般要在多个环境部署,环境:本机环境(local)、(开发小组内自测的)开发环境(dev)、(提供给测试团队的)测试环境(test)、预发布环境(pre)、正式生产环境(prod),每种环境都有各自的配置参数,好比:数据库链接、远程调用的ws地址等等。若是每一个环境build前手动修改这些参数,显然太不fashion.数据库


maven早就考虑到了这些问题,看下面的pom片断:apache

<profiles>
        <profile>
            <!-- 本地环境 -->
            <id>local</id>
            <properties>                
                <db-url>jdbc:oracle:thin:@localhost:1521:XE</db-url>
                <db-username>***</db-username>
                <db-password>***</db-password>
            </properties>
        </profile>
        <profile>
            <!-- 开发环境 -->
            <id>dev</id>
            <properties>                
                <db-url>jdbc:oracle:thin:@172.21.129.51:1521:orcl</db-url>
                <db-username>***</db-username>
                <db-password>***</db-password>
            </properties>
            <!-- 默认激活本环境 -->
            <activation>
                <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        ...
    </profiles>

profiles节点中,定义了二种环境:local、dev(默认激活dev环境),能够在各自的环境中添加须要的property值,接下来修改build节点,参考下面的示例:oracle

<build>
        <resources>
            <resource>
                <directory>src/main/resources</directory>
                <filtering>true</filtering>
            </resource>
        </resources>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>2.5.1</version>
                <configuration>
                    <source>1.6</source>
                    <target>1.6</target>
                    <encoding>utf-8</encoding>
                </configuration>
            </plugin>
        </plugins>
    </build>

resource节点是关键,它代表了哪一个目录下的配置文件 (无论是xml配置文件,仍是properties属性文件),须要根据profile环境来替换属性值。maven

config.properties测试

# 对应maven profiles中配置
jdbcUrl=${db-url}  
user=${db-username}
password=${db-password}
devMode=true

各属性节点的值,用占位符"${属性名}"占位,maven在package时,会根据profile的环境自动替换这些占位符为实际属性值。ui

默认状况下:url

maven package

将采用默认激活的profile环境来打包,也能够手动指定环境,好比:code

maven package -P dev

将自动打包成dev环境的部署包(注:参数P为大写)xml

相关文章
相关标签/搜索