Maven多环境参数管理

通常一个Maven工程在整个软件过程中,需要运行在多个不同的环境下,在本地、测试、验证、生产等环境上都需要配置不同的数据库链接或者其他资源。如何方便的管理我们的多环境配置,并应用于持续交付环境中呢?

  • 在POM.xml中配置Profile,定义不同的配置信息
    <profiles>
        <profile>
            
            <id>developmentid>
            <properties>
                <profiles.active>developmentprofiles.active>
            properties>
            <activation>
                <activeByDefault>trueactiveByDefault>
            activation>
        profile>
        <profile>
            
            <id>testid>
            <properties>
                <profiles.active>testprofiles.active>
            properties>
        profile>
        <profile>
            
            <id>productionid>
            <properties>
                <profiles.active>productionprofiles.active>
            properties>
        profile>
    profiles>

如上例中,配置了开发、测试、生产三个环境,并将开发环境设置为默认配置,方便开发人员手工检出后直接以开发配置运行,而测试环境与生产环境均为非人工操作,通过bamboo或其他工具自动通过命令进行调用。

  • POM.xml中配置根据不同环境取不同的配置去构建
<build>
        <resources>
            <resource>
                <directory>src/main/resourcesdirectory>
                
                <excludes>
                    <exclude>test/*exclude>
                    <exclude>production/*exclude>
                    <exclude>development/*exclude>
                excludes>
            resource>
            <resource>
                <directory>
                    src/main/resources/${profiles.active}
                directory>
            resource>
        resources>

如上例中,配置了构建目录src/main/resources中排除了该目录下test、development、production目录的所有内容,再引入src/main/resources/${profiles.active}的目录内容。因此可以达到test、development、production目录内容再构建的时候会选择其一进行打包。

  • 工程结构
    根据上述配置,在工程中,创建test、development、production三个目录,将三个环境的不同配置参数均配置其中,已达到不同环境的参数配置独立配置的效果。
    Maven多环境参数管理_第1张图片

  • 构建时激活
    完成上面配置之后,我们可以通过mvn package命令进行打包看看效果。
    因为profiles.active默认为development,所以默认按开发环境进行构建的结果会是开发环境的包。若要打其他环境的包时,可参考如下命令:
    测试环境:mvn package –P test
    生成环境:mvn package -P production

你可能感兴趣的:(敏捷开发)