• maven的环境隔离


        在企业级开发中,一般至少有三套环境,本地开发环境,测试环境,正式环境(有的还有预发环境),不同环境的配置文件的内容不同,像数据库连接,三方接口的测试路径与正式路径的区分等等,手动修改不仅耗时,还容易出错。因此很有必要进行环境隔离,下面我们开始配置maven环境隔离。

      第一步:在pom文件的build 节点下新增resources节点,具体如下

     1         <resources>
     2             <resource>
     3                 <directory>src/main/resources.${deploy.type}</directory>
     4                 <excludes><!-- 前后端分离的项目 这里的排除项则无需配置 -->
     5                     <exclude>*.jsp</exclude>
     6                 </excludes>
     7             </resource>
     8             <resource>
     9                 <directory>src/main/resources</directory><!-- 这里表示公共配置的 路径-->
    10             </resource>
    11         </resources>
     第二步:build同级下新增profiles节点,具体如下
     1 <!--idea 里面刷新maven project 并勾选默认开发环境  -->
     2   <profiles>
     3     <profile>
     4       <id>local</id>
     5       <activation>
     6         <activeByDefault>true</activeByDefault> <!--默认环境 -->
     7       </activation>
     8       <properties>
     9         <deploy.type>local</deploy.type>
    10       </properties>
    11     </profile>
    12     <profile>
    13       <id>test</id>
    14       <properties>
    15         <deploy.type>test</deploy.type>
    16       </properties>
    17     </profile>
    18     <profile>
    19       <id>prod</id>
    20       <properties>
    21         <deploy.type>prod</deploy.type>
    22       </properties>
    23     </profile>
    24   </profiles>

      第三步:在项目路径下新建三个源文件夹及配置文件,同时公共配置保留在src/main/resources路径下,如下图的common.properties文件

     

      分别执行 mvn clean package -Dmaven.test.skip=true -Plocal, mvn clean package -Dmaven.test.skip=true -Ptest, mvn clean package -Dmaven.test.skip=true -Pprod

    若我们mvn命令不接环境参数则默认使用local环境。从target文件夹下可以查看到不同的编译后的配置环境,实现了maven的环境隔离,小伙伴们快去试一下吧。

      有些有强迫症的小伙伴可能看着这个项目文件结构非常不舒服,因为它好像打乱了我们正常maven项目的结构目录,下面我们更换一点配置 更加优雅的实现maven的环境隔离。我们之间在resources下建立config目录,再建立三个环境的目录,并加上相应的配置环境,同时修改配置pom文件,具体见下图

       mvn命令同上,经验证 也实现了环境隔离,并且文件目录结构看起来也更加舒服了。

  • 相关阅读:
    linux安装vsftpd服务器
    安装Twisted
    py文件转换为exe文件
    Python实现批量新建SecureCRT Session
    常见的字符编码
    心得 : 面向对象和面向过程的区别
    Apache配置HTTPS的过程小记
    关于oracle的sequence和trigger。
    oracle在drop表时要注意
    mysql中整数类型后面的数字,是不是指定这个字段的长度?比如int(11),11代表11个字节吗?
  • 原文地址:https://www.cnblogs.com/tjqBlog/p/9401377.html
Copyright © 2020-2023  润新知