一、多环境开发

  • 我们平常都是在自己的开发环境进行开发,

  • 当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用,

  • 等测试人员测试通过后,我们会将项目部署到生成环境上线使用。

  • 这个时候就有一个问题是,不同环境的配置是不相同的,如不可能让三个环境都用一个数据库,所以就会有三个数据库的url配置,

  • 在项目中如何配置?

  • 要想实现不同环境之间的配置切换又该如何来实现呢?

maven提供配置多种环境的设定,帮助开发者在使用过程中快速切换环境。具体实现步骤:

步骤1:父工程配置多个环境,并指定默认激活环境

<profiles>
   <!--开发环境-->
   <profile>
       <id>env_dep</id>
       <properties>
           <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
       </properties>
       <!--设定是否为默认启动环境-->
       <activation>
           <activeByDefault>true</activeByDefault>
       </activation>
   </profile>
   <!--生产环境-->
   <profile>
       <id>env_pro</id>
       <properties>
           <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
       </properties>
   </profile>
   <!--测试环境-->
   <profile>
       <id>env_test</id>
       <properties>
           <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
       </properties>
   </profile>
</profiles>

步骤2:执行maven install安装即配置好env_dep环境

步骤3:同理可切换默认环境为生产环境

<profiles>
   <!--开发环境-->
   <profile>
       <id>env_dep</id>
       <properties>
           <jdbc.url>jdbc:mysql://127.1.1.1:3306/ssm_db</jdbc.url>
       </properties>
   </profile>
   <!--生产环境-->
   <profile>
       <id>env_pro</id>
       <properties>
           <jdbc.url>jdbc:mysql://127.2.2.2:3306/ssm_db</jdbc.url>
       </properties>
       <!--设定是否为默认启动环境-->
       <activation>
           <activeByDefault>true</activeByDefault>
       </activation>
   </profile>
   <!--测试环境-->
   <profile>
       <id>env_test</id>
       <properties>
           <jdbc.url>jdbc:mysql://127.3.3.3:3306/ssm_db</jdbc.url>
       </properties>
   </profile>
</profiles>

虽然已经能够实现不同环境的切换,但是每次切换都是需要手动修改,如何来实现在不改变代码的前提下完成环境的切换呢?

步骤4:命令行实现环境切换

所以总结来说,对于多环境切换只需要两步即可:

  • 父工程中定义多环境

    <profiles>
    <profile>
      <id>环境名称</id>
           <properties>
          <key>value</key>
           </properties>
           <activation>
          <activeByDefault>true</activeByDefault>
           </activation>
       </profile>
      ...
    </profiles>
  • 使用多环境(构建过程)

    mvn 指令 -P 环境定义ID[环境定义中获取]

二、跳过测试

前面在执行install指令的时候,Maven都会按照顺序从上往下依次执行,每次都会执行test,

对于test来说有它存在的意义,

  • 可以确保每次打包或者安装的时候,程序的正确性,假如测试已经通过在我们没有修改程序的前提下再次执行打包或安装命令,由于顺序执行,测试会被再次执行,就有点耗费时间了。

  • 功能开发过程中有部分模块还没有开发完毕,测试无法通过,但是想要把其中某一部分进行快速打包,此时由于测试环境失败就会导致打包失败。

遇到上面这些情况的时候,我们就想跳过测试执行下面的构建命令,具体实现方式有很多:

方式一:IDEA工具实现跳过测试

图中的按钮为Toggle 'Skip Tests' Mode,

Toggle翻译为切换的意思,也就是说在测试与不测试之间进行切换。

这种方式最简单,但是有点"暴力",会把所有的测试都跳过,如果我们想更精细的控制哪些跳过哪些不跳过,就需要使用配置插件的方式。

方式二:配置插件实现跳过测试

在父工程中的pom.xml中添加测试插件配置

<build>
   <plugins>
       <plugin>
           <artifactId>maven-surefire-plugin</artifactId>
           <version>2.12.4</version>
           <configuration>
               <skipTests>false</skipTests>
               <!--排除掉不参与测试的内容-->
               <excludes>
                   <exclude>**/BookServiceTest.java</exclude>
               </excludes>
           </configuration>
       </plugin>
   </plugins>
</build>

skipTests:如果为true,则跳过所有测试,如果为false,则不跳过测试

excludes:哪些测试类不参与测试,即排除,针对skipTests为false来设置的

includes: 哪些测试类要参与测试,即包含,针对skipTests为true来设置的

方式三:命令行跳过测试

使用Maven的命令行,mvn 指令 -D skipTests

注意事项:

  • 执行的项目构建指令必须包含测试生命周期,否则无效果。例如执行compile生命周期,不经过test生命周期。

  • 该命令可以不借助IDEA,直接使用cmd命令行进行跳过测试,需要注意的是cmd要在pom.xml所在目录下进行执行。

Java开发学习(三十二)----Maven多环境配置切换与跳过测试的三种方式的更多相关文章

  1. Java开发学习心得(二):Mybatis和Url路由

    目录 Java开发学习心得(二):Mybatis和Url路由 1.3 Mybatis 2 URL路由 2.1 @RequestMapping 2.2 @PathVariable 2.3 不同的请求类型 ...

  2. java jvm学习笔记十二(访问控制器的栈校验机制)

    欢迎装载请说明出处:http://blog.csdn.net/yfqnihao 本节源码:http://download.csdn.net/detail/yfqnihao/4863854 这一节,我们 ...

  3. Java Web学习(十二)Tomcat核心

    一.引言 其实按道理来说,学习Java web应该在前面的篇幅就写有关tomcat相关的知识点,不过近期看了一些资料,觉得以前仅仅只是知道用tomcat去发布我的项目,一些细节的东西也没有好好总结,这 ...

  4. java web学习总结(十二) -------------------Session

    一.Session简单介绍 在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下).因此,在需要保存用户数据时,服务 ...

  5. Maven学习笔记(十二)-maven打包之resource配置

    版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u011781521/article/details/79052725 一.简介 构建Maven项目的 ...

  6. 阿里巴巴 Java 开发手册 (十二)安全规约

    1. [强制]隶属于用户个人的页面或者功能必须进行权限控制校验. 说明:防止没有做水平权限校验就可随意访问.修改.删除别人的数据,比如查看他人的私信 内容.修改他人的订单. 2. [强制]用户敏感数据 ...

  7. Java基础学习笔记十二 类、抽象类、接口作为方法参数和返回值以及常用API

    不同修饰符使用细节 常用来修饰类.方法.变量的修饰符 public 权限修饰符,公共访问, 类,方法,成员变量 protected 权限修饰符,受保护访问, 方法,成员变量 默认什么也不写 也是一种权 ...

  8. Java开发学习(四十)----MyBatisPlus入门案例与简介

    一.入门案例 MybatisPlus(简称MP)是基于MyBatis框架基础上开发的增强型工具,旨在简化开发.提供效率. SpringBoot它能快速构建Spring开发环境用以整合其他技术,使用起来 ...

  9. Java开发笔记(十二)布尔变量论道与或非

    在编程语言的设计之初,它们除了可以进行数学计算,还常常用于逻辑推理和条件判断.为了实现逻辑判断的功能,Java引入了一种布尔类型boolean,用来表示“真”和“假”.该类型的变量只允许两个取值,即t ...

随机推荐

  1. 一网打尽异步神器CompletableFuture

    最近一直畅游在RocketMQ的源码中,发现在RocketMQ中很多地方都使用到了CompletableFuture,所以今天就跟大家来聊一聊JDK1.8提供的异步神器CompletableFutur ...

  2. Node.js精进(9)——性能监控(上)

    市面上成熟的 Node.js 性能监控系统,监控的指标有很多. 以开源的 Easy-Monitor 为例,在系统监控一栏中,指标包括内存.CPU.GC.进程.磁盘等. 这些系统能全方位的监控着应用的一 ...

  3. Idea 编译jsp生成的class文件路径

    找到work\Catalina\localhost\ 然后访问响应的JSP地址才会动态生成到这个路径下面,不访问不会生成,在org\apache\jsp 下面

  4. Solution -「原创」Destiny

    题目背景 题目背景与题目描述无关.签到愉快. 「冷」 他半靠在床沿,一缕感伤在透亮的眼眸间荡漾. 冷见惆怅而四散逃去.经历嘈杂喧嚣,感官早已麻木.冷又见空洞而乘隙而入.从里向外,这不是感官的范畴. 他 ...

  5. Linux服务器挂载windows共享文件夹和nas存储

    需求: 公司有3.4T多的小文件需要copy到公司内部的nas存储中,由于小文件太多,数据量太大,整盘copy时速度极慢:只能人工对3.4T多的数据分批次的导入,这对于搞计算机的来说是不能忍受的,于是 ...

  6. Nginx 配置静态资源防盗链

    # 什么是静态资源盗链: # 你服务器上的一张图片,127.0.0.1/images/a.png # 别人的html页面可以直接通过<img src="127.0.0.1/images ...

  7. 妙用 CSS 构建花式透视背景效果

    本文将介绍一种巧用 background 配合 backdrop- filter 来构建有趣的透视背景效果的方式. 本技巧源自于一名群友的提问,如何构建如 ElementUI 文档的一种顶栏背景特效, ...

  8. 手搓一个“七夕限定”,用3D Engine 5分钟实现烟花绽放效果

    七夕来咯!又到了给重要的人送惊喜的时刻. 今年,除了将心意融入花和礼物,作为程序员,用自己的代码本事手搓一个技术感十足"七夕限定"惊喜,我觉得,这是不亚于车马慢时代手写信的古典主义 ...

  9. 【web自动化测试】playwright安装失败怎么办

    在安装中,如果没有输入 playwright install, 则不会安装浏览器,运行 playwright codegen 时会报浏览器找不到的错误: "chromium" br ...

  10. 蔚来杯2022牛客暑期多校训练营6 ABGJM

    比赛链接 A 题解 知识点:数学,构造. 题目要求构造一个长为 \(m\) 的序列 \(c\) ,\(m\) 自选,使得 \(c\) 的无限循环序列 \(b\) 中任意连续 \(a_i\) 个数中都存 ...