Maven分步详解多环境配置与应用流程

作者:十八岁讨厌编程 时间:2021-12-28 07:52:14 

多环境开发

Maven分步详解多环境配置与应用流程

我们平常都是在自己的开发环境进行开发,当开发完成后,需要把开发的功能部署到测试环境供测试人员进行测试使用,等测试人员测试通过后,我们会将项目部署到生成环境上线使用。

这个时候就有一个问题是,不同环境的配置是不相同的,如不可能让三个环境都用一个数据库,所以就会有三个数据库的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

执行安装查看env_dep环境是否生效

Maven分步详解多环境配置与应用流程

查看到的结果为:

Maven分步详解多环境配置与应用流程

步骤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

执行安装并查看env_pro环境是否生效

查看到的结果为jdbc:mysql://127.2.2.2:3306/ssm_db

Maven分步详解多环境配置与应用流程

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

步骤5

命令行实现环境切换

Maven分步详解多环境配置与应用流程

步骤6

执行安装并查看env_test环境是否生效

查看到的结果为jdbc:mysql://127.3.3.3:3306/ssm_db

Maven分步详解多环境配置与应用流程

总结

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

父工程中定义多环境

<profiles>
<profile>
   <id>环境名称</id>
       <properties>
       <key>value</key>
       </properties>
       <activation>
       <activeByDefault>true</activeByDefault>
       </activation>
   </profile>
   ...
</profiles>

使用多环境(构建过程)

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

跳过测试

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

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

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

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

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

IDEA工具实现跳过测试

Maven分步详解多环境配置与应用流程

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

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

点击一下,出现测试画横线的图片,如下:

Maven分步详解多环境配置与应用流程

说明测试已经被关闭,再次点击就会恢复。

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

配置插件实现跳过测试

在父工程中的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分步详解多环境配置与应用流程

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

注意事项:

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

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

来源:https://blog.csdn.net/zyb18507175502/article/details/125961675

标签:Maven,多环境,配置,应用
0
投稿

猜你喜欢

  • 浅谈几种常见语言的命名空间(Namespace)

    2022-11-13 12:17:42
  • C#委托所蕴含的函数指针概念详细解析

    2023-06-03 15:26:13
  • Unity为软件添加使用有效期的具体步骤

    2022-07-01 16:45:03
  • Android中bindService基本使用方法概述

    2023-08-05 19:18:56
  • Android通过记住密码功能学习数据存储类SharedPreferences详解及实例

    2023-05-21 21:37:49
  • Android自定义Chronometer实现短信验证码秒表倒计时功能

    2022-02-22 10:52:47
  • Java中线程休眠编程实例

    2021-09-06 11:42:55
  • Android自定义View之自定义评价打分控件RatingBar实现自定义星星大小和间距

    2023-03-14 04:30:16
  • Android自定义View Flyme6的Viewpager指示器

    2022-02-10 19:02:05
  • WPF ProgressBar实现实时进度效果

    2023-01-14 08:05:49
  • SpringBoot的@Value给静态变量注入application.properties属性值

    2023-09-20 11:54:07
  • Android 连接Wifi和创建Wifi热点的实例

    2022-07-16 06:00:52
  • Spring Boot2.0中SpringWebContext找不到无法使用的解决方法

    2023-05-26 02:37:01
  • Springboot使用@RefreshScope注解实现配置文件的动态加载

    2022-06-11 10:06:00
  • IDEA如何自动生成serialVersionUID的设置

    2023-08-09 04:00:33
  • Java中synchronized锁的深入理解

    2023-08-18 01:36:55
  • ChatGPT介绍及Java API调用

    2021-07-06 07:53:55
  • MyBatis在SQL语句中如何获取list的大小

    2021-08-15 12:09:55
  • java实现学生选课系统

    2022-11-19 14:58:24
  • Java递归寻路实现,你真的理解了吗

    2022-09-17 02:24:34
  • asp之家 软件编程 m.aspxhome.com