Maven分环境打包方案
博客专区 > xjt2016 的博客 > 博客详情
Maven分环境打包方案
xjt2016 发表于1年前
Maven分环境打包方案
  • 发表于 1年前
  • 阅读 79
  • 收藏 5
  • 点赞 0
  • 评论 0

腾讯云 技术升级10大核心产品年终让利>>>   

Maven分环境打包方案

> 在学习Spring Boot过程中,搭建了Melon-Boot这个项目,同时学习到Boot与Maven结合,生成项目的打包方案。我们也可以看到很多互联网公司内部会划分有开发、测试、发布等不同阶段的环境,不同的环境之间的服务配置项需要进行区分,切换。常见的环境变量有:数据库连接配置、Zookeeper Dubbox配置、URL资源配置等等。

> 本文将给出与Spring Boot相似的配置方法,应用于Spring4.X当中,与Maven相结合,管理不同环境的配置文件,通过profile实现不同环境的打包。

目标

  • 对src/main/resources的properties进行分环境管理
  • 对src/main/resource的dev_conf、prod_conf、test_conf进行分环境管理

定义profile

在项目pom中定义多个环境,如下所示:

<profiles>
  <!--日常开发环境-->
  <profile>
    <id>test</id>
    <properties>
      <profileActive>test</profileActive>
    </properties>
  </profile>
  <!--预发布环境-->
  <profile>
    <id>dev</id>
    <properties>
      <profileActive>dev</profileActive>
    </properties>
  </profile>
  <!--线上环境-->
  <profile>
    <id>prod</id>
    <properties>
      <profileActive>prod</profileActive>
      <!--<package.environment>prod</package.environment>-->
    </properties>
  </profile>
</profiles>

定义resources插件

在build中定义resources资源打包规则,如下所示:

<resources>
    <resource>
        <!--指定打包时,需要特殊处理的文件路径-->
        <directory>src/main/resources</directory>
        <!--处理文件时,需要对文件进行变量替换-->
        <filtering>true</filtering>
        <excludes>
            <!--指定打包时,不包含以下文件-->
            <exclude>application-dev.properties</exclude>
            <exclude>application-prod.properties</exclude>
            <exclude>application-test.properties</exclude>
            <exclude>application.properties</exclude>
        </excludes>
    </resource>
    <resource>
        <filtering>true</filtering>
        <directory>src/main/resources</directory>
        <includes>
            <include>application-${profileActive}.properties</include>
            <include>application.properties</include>
        </includes>
    </resource>
    <resource>
        <directory>src/main/java</directory>
        <filtering>false</filtering>
    </resource>
</resources>

执行命令

  1. 执行mvn clean清理上次编译的target文件;
  2. 如果是IDEA,在Maven Project面板中勾选dev即可,执行步骤3,否则跳过看步骤4;
  3. 执行mvn package打包项目,可以看到application.properties和application-dev.properties;
  4. 执行mvn clean package -Dmaven.test.skip=true -P dev -e打包项目。结果和步骤3一致。

拓展知识

Maven标准的目录结构
src
  -main
      –bin 脚本库
      –java java源代码文件
      –resources 资源库,会自动复制到classes目录里
      –filters 资源过滤文件
      –assembly 组件的描述配置(如何打包)
      –config 配置文件
      –webapp web应用的目录。WEB-INF、css、js等
  -test
      –java 单元测试java源代码文件
      –resources 测试需要用的资源库
      –filters 测试资源过滤库
  -site Site(一些文档)
target
LICENSE.txt Project’s license
README.txt Project’s readme
标签: Maven
共有 人打赏支持
粉丝 5
博文 42
码字总数 20703
×
xjt2016
如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
* 金额(元)
¥1 ¥5 ¥10 ¥20 其他金额
打赏人
留言
* 支付类型
微信扫码支付
打赏金额:
已支付成功
打赏金额: