`
javis163
  • 浏览: 44733 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

用maven的profile控制不同环境下的配置项目

 
阅读更多

在项目开发过程中,我们经常遇到这样的问题,就是我们的配置项会因为环境的不同,配置项文件的内容也不同。

举个简单的例子吧。

数据库的连接,我们在不同的环境下,使用的数据库一般都是不同的,开发环境使用开发数据库,测试环境使用测试数据库,线上环境使用生产数据库。

(感叹下:淘宝数据库使用的是TDDL动态数据源,并且有SCM配置中心进行配置项的管理,所以开发者无需关心这类问题)

那么,在没有配置中心的情况下,我们怎么管理我们的配置项呢?

其实,maven已经提供了这方面的,支持。这个就是profile。你可以按照如下方式配置你的pom文件,可以做到简单的配置文件区分。(假设开发者机器是windows,使用的配置项文件是dev.properties,生产机使用的是linux,使用的配置项文件是pro.properties)

POM部分配置内容:

<profiles>

        <profile>

            <id>linux</id>

            <activation>

                <os>

                    <family>linux</family>

                </os>

            </activation>

            <properties>

                <antx.properties.file>

                     ${basedir}/src/main/webapp/META-INF/pro.properties

                </antx.properties.file>

            </properties>

        </profile>

        <profile>

            <id>windows</id>

            <activation>

                <os>

                    <family>windows</family>

                </os>

            </activation>

            <properties>

                <antx.properties.file>

                     {basedir}/src/main/webapp/META-INF/dev.properties

                 </antx.properties.file>

            </properties>

        </profile>

    </profiles>

 

这是最简单的处理方式,根据操作系统不同来选择不同的文件作为你的配置项。

但如果你的环境还分开发环境(dev)、测试环境(test)、预发布环境(rea)、生成环境(pro)呢,仅仅靠操作系统是无法区分开的。

 

这时候   mvn package –P  ${profileId}   可以帮到你。

 

POM文件配置如下:

 

<build>部分:

 

<build>

        .....此次省略部分配置内容...

        <filters>

            <filter>{basedir}/src/main/webapp/META-INF/{env}.properties </filter>

        </filters>

        .....此次省略部分配置内容...

</build>

 

     <profiles>部分:

 

  <profiles>

       <!-- 开发环境,默认激活 -->

       <profile>

           <id>dev</id>

           <properties>

              <env>dev</env>

           </properties>

           <activation>

              <activeByDefault>true</activeByDefault><!--默认启用的是dev环境配置-->

           </activation>

       </profile>

       <!-- 测试环境 -->

       <profile>

           <id>test</id>

           <properties>

              <env>test</env>

           </properties>

       </profile>

       <!-- 预发布环境 -->

       <profile>

           <id>rea</id>

           <properties>

              <env>rea</env>

           </properties>

       </profile>

       <!-- 生产环境 -->

       <profile>

           <id>pro</id>

           <properties>

              <env>pro</env>

           </properties>

       </profile>

  </profiles>

 

这样,当执行  mvn package –P  test 将会使用test.properties作为你的配置项文件,

执行mvn package –P  pro 将会使用pro.properties作为你的配置项文件。

是不是灵活多啦?

 

2
1
分享到:
评论
4 楼 javis163 2012-11-16  
Navee 写道
生产环境和开发环境用操作系统区分还是不大好吧

是的,这只能简单区分,使用,我建议使用 mvn package –P  ${profileId} 这种方式,我文章中也有说到呢。
3 楼 javis163 2012-11-16  
shenliuyang 写道
比spring的 profile 要灵活,  去看看appfuse 的比你这个更灵活。 我们公司现在架构就是从appfuse上学来的。 

嗯,受教了,谢谢。有空我看看appfuse,我写这东西主要是想帮助那些使用maven,并且因为环境不同,需要使用不同的配置参数的同学。比如:在生成环境上memcache使用生成环境下的memcahce服务,在测试环境,使用测试环境的memcahce服务。
2 楼 shenliuyang 2012-11-16  
比spring的 profile 要灵活,  去看看appfuse 的比你这个更灵活。 我们公司现在架构就是从appfuse上学来的。 
1 楼 Navee 2012-11-16  
生产环境和开发环境用操作系统区分还是不大好吧

相关推荐

    使用maven Profile实现多环境构建

    在软件开发过程中,特别...通过定义和激活不同的Profile,我们可以灵活地控制项目的依赖、插件和资源,从而实现高效、便捷的多环境构建。对于大型项目和团队协作来说,正确使用Maven Profile是确保项目顺利进行的关键。

    Maven配置文件Maven配置文件

    通过激活不同的profile,可以在不同环境下使用不同的配置。 ```xml &lt;profile&gt; &lt;id&gt;dev &lt;activeByDefault&gt;true &lt;env&gt;dev ... &lt;/profile&gt; ``` 4. **`servers`**:存储服务器相关的认证信息,如...

    Maven的ssm项目配置文件

    - 使用Profile:Maven支持多环境配置,通过Profile可以在开发、测试和生产环境中切换不同的配置。 - 注释和文档:为每个配置项添加注释,解释其用途,方便团队成员理解和维护。 在实际开发中,SSM项目的配置文件...

    win7配置Maven环境变量.rar

    在Windows 7操作系统中配置Apache Maven环境是Java开发不可或缺的一部分,因为Maven是一个强大的项目管理和构建工具。本文将详细介绍如何在Win7系统中设置Maven的环境变量,以确保能够顺利地运行和管理Java项目。 ...

    jjdk、maven、tomcat的环境配置

    ### jdk、maven、tomcat的环境配置 在进行Java开发时,正确配置JDK(Java Development Kit)、Maven和Tomcat的环境变量是非常重要的一步。这些配置能够确保开发工具能够正确识别并使用这些软件,从而使得项目构建、...

    maven 3.8.1版本私服配置版本

    Maven是Java开发中广泛使用的构建工具,用于管理项目的构建、报告和依赖关系。3.8.1是Maven的一个稳定版本,提供了许多增强的功能和修复了已知的问题。配置Maven的私有仓库(也称为内部仓库或私服)是确保项目依赖项...

    maven集成开发环境搭建

    Nexus 是一款用于管理项目依赖库的工具,它可以作为Maven仓库服务器,帮助开发者管理第三方库、项目构建产物等资源,并支持多种类型仓库的配置。 **3. Jenkins (原Hudson)** Jenkins 是一个开源的持续集成工具,它...

    Maven的阿里云镜像配置文件Setting.xml

    在Java Web开发中,Maven是一个非常重要的构建工具,它帮助开发者管理项目依赖、构建流程以及版本控制。SSM框架(Spring、Spring MVC、MyBatis)是Java Web开发常用的三大组件,它们的集成通常也需要借助Maven进行。...

    maven window下安装包

    第11章:用Maven管理项目版本/11.4 版本管理举例/11.4.5 在POM中配置/11.4.5.2 发布到私有仓库配置 第11章:用Maven管理项目版本/11.4 版本管理举例/11.4.6 release:prepare:发布前检查/11.4.6.1 出现错误的情形 第...

    软件开发+Maven技术+Maven安装与配置+基础课程

    2. **构建配置的定制化**:通过`profiles`可以针对不同的环境(如开发、测试、生产)定义特定的构建配置。 3. **集成到CI/CD流程**:Maven可以轻松地集成到持续集成/持续部署流程中,例如通过Jenkins、Travis CI等...

    Maven安装指南:详细步骤与环境配置教程

    ### Maven安装指南:详细步骤与环境配置教程 Maven是一个非常重要的项目管理和构建自动化工具,主要用于基于Java的应用程序。通过Maven,开发者可以方便地管理项目依赖、构建过程以及项目文档,大大提高了开发效率...

    spring-boot-maven的web完整项目框架

    4. **多环境支持**: 可以通过 profile 设置不同环境的配置,如开发、测试、生产环境。 **Web 开发** 1. **Spring MVC**: Spring Boot 默认使用 Spring MVC 框架处理 HTTP 请求,提供模型-视图-控制器的编程模型。 ...

    Spring in Action 使用Maven 构建Spring 工程

    你可以为不同的环境(如开发、测试、生产)定义不同的配置,如数据库连接信息,然后在构建时选择合适的profile。这样,同一个项目可以轻松地适应多种环境,提高了部署的灵活性。 最后,我们来谈谈源码管理和版本...

    Java随手笔记8之包、环境变量和访问控制及maven profile实现多环境打包

    Maven是一个项目管理工具,它使用pom.xml文件来管理项目构建的配置。Maven profiles允许开发者为不同的环境(如开发、测试、预发、生产等)创建不同的构建配置。通过定义profiles,开发者可以为不同环境指定不同的...

    Maven2中文使用手册

    Maven 的 profile 功能允许为不同的环境或目标设置不同的配置。 - **远程仓库(Remote Repositories)** 除了中央仓库,还可以配置其他的远程仓库来获取依赖。 - **自定义插件(Custom Plugins)** 如果 Maven ...

    maven.3.8.4

    Profiles是Maven中用于区分不同环境配置的特性。通过定义不同的profile,可以在不同的环境中启用或禁用特定的配置、依赖和插件。 总结,Maven.3.8.4是Maven项目管理工具的一个版本,它提供了一整套规范化的项目构建...

    maven下载、安装、配置与使用教程.docx

    - Maven 支持不同的依赖范围,如 `compile`、`test` 和 `provided` 等,用于控制依赖在不同环境下的引入情况。 3. **项目管理**: - Maven 可以帮助项目团队更好地管理项目的结构、构建过程和文档等。 - Maven ...

    Maven的安装和配置

    - Maven 的配置文件 `settings.xml` 通常位于 Maven 安装目录下的 `conf` 目录中,或者用户的 `.m2` 目录下(如 `~/.m2/settings.xml`)。 - **编辑 settings.xml 文件**: - 可以根据需要编辑 `settings.xml` ...

    maven下载、安装、配置与使用教程&相关项目

    ### Maven 下载、安装、配置与使用教程及相关项目详解 #### 一、Maven简介 Apache Maven 是一款广泛应用于 Java 项目的管理与构建自动化工具。它通过一系列规范化的生命周期和构建过程,使得 Java 项目的构建更加...

    maven 一键打包

    但在一键打包时,如果项目有多个环境(如开发、测试、生产),可能需要根据不同的环境配置文件。此时,可以通过Maven的profile功能,定义不同环境的配置,并在打包时选择相应的profile。 ### Maven profile Profile...

Global site tag (gtag.js) - Google Analytics