开发工具: Maven 02、Maven常用插件

Maven的常用插件 阅读详情

1.基于surefire插件的单测和输出覆盖率报告

1.1 单测

1.1.1 surefire插件介绍

maven 中默认内置了 surefire 插件来运行单元测试,与最新流行的 junit 单元测试框架整合非常好。一般是在default 生命周期的 test 阶段,会运行 surefire 插件的 test goal,然后执行 src/test/java 下面的所有单元测试的。

而 surefire 插件会根据一定的规则在 sre/test/java 下面找单元测试类,具体规则如下:

**/Test*.java
**/*Test.java
**/*TestCase.java

通常比较流行的是用 *Test.java 格式类命名单元测试的类。

1.1.2 跳过单测

如果某次你的确不想要执行单元测试就打包,那么可以跳过单元测试,但是在实际开发过程中,这是绝对不被允许的!

mvn package -DskipTests

1.1.3 指定想要运行的测试类

mvn test -Dtest=**Test

通常见于开发人员自己刚写了某个单元测试类,然后就想自己运行一下看看效果。可以用逗号隔开,也可以用*匹配多个类。

1.1.4 自定义包含与排除测试类

<plugin>
  <groupId>org.apache.maven.plugins</groupId>
  <artifactId>maven-surefire-plugin</artifactId>
  <version>2.5</version>
  <configuration>
    <includes>
      <include>**/*Tests.java</include>
    </includes>
    <excludes>
      <exclude>**/*TempTest.java</exclude>
    </excludes>
  </configuration>
</plugin>

1.2 测试报告

1.2.1 什么是单元测试覆盖率

比如说,你总共写了 100 行代码

然后你写了 3 个单元测试方法,结果这 3 个单元测试的方法会执行你的 100 行代码中的 80 行,另外有 20 行代码是无论运行哪个单元测试都不会执行的

此时单元测试覆盖率就是 80/100,即80%

1.2.2 常见的覆盖率

比如你一共写了 10 个方法,100 行代码。

1)方法覆盖率

方法覆盖率至少要达到 90%,那么要求就是至少对 10 个方法中的9个方法都要运行

2)行覆盖率

代码覆盖率至少要求 70%,那么要求就是至少对 70 行代码都要执行到

3)分支覆盖率

如果你的代码中有 if else,或者是 try catch,相当于是你的一段代码根据不同的情况,可能会有 2 个分支,分支里面还可以再嵌套 if else,再分出来 2 个分支。

分支覆盖率是指你的单元测试可以覆盖几个分支,1/4,即 25%;2/4,即 50% 分支覆盖率

1.2.3 测试覆盖率报告

在使用 surefire 进行单测时,可以同时引入 cobertura 插件,即看到测试覆盖率的报告

<plugin>  
    <groupId>org.codehaus.mojo</groupId>  
    <artifactId>cobertura-maven-plugin</artifactId>  
    <version>2.5.1</version>  
</plugin>

为什么不配置 executions 去指定这个插件的 goal 绑定到哪儿?
其实每个插件只要定义它的坐标,默认情况下,它自己内部就带了要把哪些 goal 绑定到哪个 phase 上去

为什么不配置 configuration 特殊的参数?
默认如果没有特殊的要求,用默认的参数就够了

2.基于 jetty 插件的冒烟测试

一般来说,在公司里面开发,都是一个常规的路径。写代码,写单元测试,运行单元测试,看一看单测覆盖率,覆盖率不达标,得继续写单元测试,覆盖大部分的代码。

但是对于这个 web 工程来说,除了在本地单元测试以外,你还需要在本地启动 web 服务,然后调用一下 web接口,简单的测试一下,做一个简单的冒烟测试,看看基本的功能是否正常。

2.1 冒烟测试

冒烟测试,传于微软。就是要求开发工程师不能完全依赖于测试工程师去帮你检测代码的质量,至少说你在把代码交付给测试工程师去检测之前,你需要用抽一根烟的时间,简单对你的代码核心和基础的功能跑一下,看看是否基本可以跑通。一般来说,测试工程师,吐槽最多的就是,开发工程师自己看都没看,写完代码就直接给我提测了。

2.2 引入 jetty 插件

<plugin>
	<groupId>org.mortbay.jetty</groupId>
	<artifactId>jetty-maven-plugin</artifactId>
	<version>7.1.6.v20100715</version>
	<configuration>
		<scanIntervalSeconds>10</scanIntervalSeconds>
		<webAppConfig>
			<contextPath>/test</contextPath>
		</webAppConfig>
	</configuration>
</plugin>
  • scanIntervalSeconds:指的是自动扫描项目代码变更的时间

  • contextPath:指部署之后的 contextPath

jetty 插件的 groupId 不是默认的 org.apache.maven.plugins,因此如果要执行该插件,需要在 settings.xml 中进行配置。

<pluginGroups>
	<pluginGroup>org.mortbay.jetty</pluginGroup>
</pluginGroups>

2.3 执行 jetty

mvn jetty:run,执行 jetty 插件的 run goal,会用 jetty 容器启动 web 应用,默认绑定 8080 端口。

用 mvn jetty:run -Djetty.port=8081 可以修改端口号

2.4 pluginGroups

一般配置了插件以后,如果直接在命令行运行 jetty:run,cobertura:cobertura 等命令,其实用的是插件的缩写,jetty 插件,cobertura 插件。但是如果要将插件的缩写和插件自己的 groupId 对应起来的话,有的时候还是需要去手动做一下配置的,不然在某些环境下可能直接运行类似 jetty:run 的命令可能会有问题。

但是有些插件,比如说 dependency:tree,它的 groupId,是 org.maven.plugins,这个是默认的 maven 内核中的插件,所以不需要额外配置。

3.基于 cargo 对 web 服务进行自动化部署

3.1 cargo 插件介绍

在搞定了整个系统的单测试,web 测试之后,就需要将整个系统完成构建,打出一个完整的 war 包,然后部署到远程服务器的 web 容器里去了,此时就要用 cargo 插件来进行自动化的 web 部署。

3.2 引入插件

<plugin>
	<groupId>org.codehaus.cargo</groupId>
	<artifactId>cargo-maven2-plugin</artifactId>
	<version>1.0</version>
	<configuration>
		<container>
			<containerId>tomcat6x</containerId>
			<type>remote</type>
		</container>
		<configuration>
			<type>runtime</type>
			<properties>
				<cargo.remote.username>admin</cargo.remote.username>
				<cargo.remote.password>admin</cargo.remote.password>
				 <cargo.tomcat.manager.url>http://localhost:8080/manager</cargo.tomcat.manager.url>
				<cargo.servlet.port>8080</cargo.servlet.port>
			</properties>
		</configuration>
	</configuration>
</plugin>

同样需要在 settings.xml 中加入 pluginGroup:org.codehaus.cargo

3.3 执行cargo

运行 mvn clean package 命令,先打包
执行 mvn cargo:deploy 即可部署

Decision Tables for Java (dt4j):Java中基于优秀决策表的规则引擎实现-开源 DT4J是基于决策表的规则引擎的Java实现。 它支持基于excel和基于编辑器的决策表创作。 它与Spring表达式(SpEL)集成在一起以表达条件和动作。 放在一起,这是一个功率规则引擎。 立即下载

相关推荐

Eclipse的Maven2插件.zip

官网公布的 Eclipse 的 Maven2 插件,本插件版本是:m2e-0.12.0.20101115-1102,大小 11 MB。 关于安装 Maven2 插件到 Eclipse 的详细步骤,请参考博客《集成 Maven 2 插件到 eclipse 的过程》,博客地址:http://blog.youkuaiyun.com/defonds/article/details/7847446。

Maven 打包插件 maven-jar-plugin

Maven 打包插件 maven-jar-plugin

Ares5k 1万+

空频、空时、空域、时域、频域抗干扰介绍

1、时域抗干扰:对时间域序列进行滤波,滤波系数h(n),采样序列不断进行输入与滤波系数卷积计算,得到响应输出;例如常用的FIR和IIR滤波器。 对于多窄带干扰噪声源和连续波干扰源有较好的处理效果,还可以解决多径问题; 可以通过在接收机前端处理中增加一个嵌入式块实现; 2、频域抗干扰:接收机不容易受到相对于接收机频带以外的强功率干扰; 通常为带通滤波和阻带滤波, 适用于窄带干扰噪声源,连续波干扰源以及较强的频带外干扰噪声源, 3、空域抗干扰:通过多个自适应天线按照特定组合成天线阵列,波束成形,针对

qq_43517907的博客 7299

maven的5种打包方式:springboot-maven-plugin详解

spring-boot-maven-plugin插件,会将依赖的jar包全部打包进去。该文件包含了所有的依赖和资源文件,可以直接在命令行或者传统的 Java Web 服务器上启动运行。--使用的插件列表。-->--plugin元素包含描述插件所需要的信息。-->--插件在仓库里的group ID -->--插件在仓库里的artifact ID -->--被使用的插件的版本(或版本范围) -->

qq_48508157的博客 4099

使用网分对晶体ESR/L1/C1/C0进行测量计算

Use R&amp;S Vector Network Analyzer test XTAL ESR/L1/C1/C0 測量方法:使用儀器的Port1端口,測量XTAL的S11,通過諧振的參數計算出ESR/L1/C1/C0的值。 實際晶體的等效模型:通常方便晶體分析,使用下圖(b)的等效模型,但實際測量發現晶體存在多個串聯諧振點,實際等效模型更接近(c)。 儀器測量到的S11,其中M...

qq_39138630的博客 2082

Cursor概述及环境配置

Cursor 是一款基于 AI 的代码编辑器,支持 VS Code 配置迁移和 Java 开发环境配置。主要功能分为 Cursor Settings(AI 相关设置)和 Editor Settings(基础编辑器设置)。用户可通过一键导入或手动方式迁移 VS Code 配置,配置包括主题、扩展和快捷键等。对于 Java 开发,需配置 JDK 和 Maven 路径,并安装 Java 扩展插件以获得完整开发体验,如代码补全、调试和 Maven 项目管理。此外,Cursor 支持汉化配置,用户可安装中文语言包切换

Knight 3548

Java代码模拟Redis

Redis是C语言编写的NoSQL 存储形式是K->V 可以搭建集群(健壮) 相比memcached一个key对应的value最大只能存储1M而言Redis则十分慷慨可以支持1G(如果你内存足够大未尝不可) Redis能够存储String,List,Set(无序),ZSet(有序).Redis支持push/pop,add/remove等操作,并且这些操作都是原子性的.Redis是单进程单线程的

高内聚低耦合 1826

STC8G1K08A的10位PWM避坑指南:为什么你的占空比调节总失效?(附寄存器操作时序图)

本文深入剖析了STC8G1K08A单片机10位PWM功能中占空比调节失效的核心原因,揭示了数据手册未明确指出的寄存器操作时序陷阱。通过对比错误与正确配置的波形,文章指出关键在于更新占空比高2位前需临时关闭PWM输出,并提供了经过验证的安全操作宏与函数库,帮助开发者彻底解决此问题,实现0%-100%的平滑控制。

yyy34的博客 747

Diffblue Cover 工具

Diffblue Cover 是,主打为 Java 项目(支持 JVM 生态主流框架)自动生成可执行的单元测试用例、提升测试覆盖率,并能集成到 CI/CD 流水线实现测试左移。其核心优势是,尤其适合遗留系统的单元测试补全和迭代项目的测试回归。以下是的全流程使用方法,覆盖 CLI(命令行)和 IDE 插件两种核心使用场景。

我是一名在测试领域扎根15年+的“老匠人” 789

六款经典限流保护电路设计:从原理到实战的完整指南

在电子系统设计中,过流保护是确保电路可靠运行的基础技术。其核心原理是通过电流采样、比较与执行三个环节构成闭环控制,将不可见的电流转化为可测量的电压信号进行处理。这项技术的核心价值在于防止因短路、堵转或异常负载导致的元器件损坏,从而提升整个系统的稳定性和安全性。在电源管理、电机驱动和精密仪器等应用场景中,限流保护电路都是不可或缺的安全屏障。本文深入解析了基于运放和晶体管搭建的经典方案,并重点探讨了采样电阻选型、参考电压生成以及PCB布局中的开尔文连接等工程实践要点,帮助读者从热门的DIY项目到工业控制都能实现

weixin_29166013的博客 349

YOLOv11的网络结构概览(Backbone-Neck-Head):介绍骨干网络(Backbone)、特征融合层(Neck)和检测头(Head)的作用

YOLOv11架构解析:从特征提取到目标检测 YOLOv11继承了YOLO系列的经典三组件架构,包含Backbone、Neck和Head三部分。Backbone基于改进的CSPDarknet,通过Conv和C3模块进行多尺度特征提取;Neck采用FPN+PAN结构融合不同层次特征;Head负责检测任务输出。网络整体设计注重高效性和多尺度特征融合,采用C3模块优化信息流和梯度流,配合SPPCSPC增强特征表达能力。该架构在保持实时检测速度的同时,提升了目标检测精度,体现了YOLO系列"一次看全图&q

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 1万+

Maven常用插件

Maven常用插件

YIYIYI 3913

基于STM32L4XX 、HAL库的TMC2226-SA-T步进电机驱动器驱动程序应用设计

集成的功率MOSFET可处理高达2A RMS的电机电流,并具备保护与诊断功能,确保运行稳健可靠。作为业界最先进的STEP/DIR步进电机驱动系列,该芯片通过升级设计实现无噪音、高精度运行,为用户提供高性价比且极具竞争力的解决方案。// 用于PDN_UART单线通信。// HAL_UART_Transmit - 注意PDN_UART是单线,收发共线。.huart = &huart1, // PDN_UART连接的USART。均方根步进/方向控制接口,提供8、16、32或64微步针设置,

PP_Cottage的博客 621

maven常用插件详解

maven常用插件详解

lixiangchibang的博客 6815

大学计算 - NumPy库的矩阵运算 实训答案

本文介绍了三个NumPy矩阵操作的实验练习。第一关练习ndarray类型操作,包括矩阵构造、元素平方和计算、矩阵乘积运算和逆矩阵行列式计算;第二关针对matrix类型,涉及绝对值最大值获取、特定矩阵乘积运算和转置矩阵特征值计算;第三关实现Moore-Penrose伪逆矩阵计算,并与NumPy内置pinv函数结果比较误差。实验涵盖了NumPy核心矩阵操作,展示了从基础运算到高级矩阵分解的应用,帮助掌握科学计算中的矩阵处理技巧。

2403_89314916的博客 308

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

Maven常用插件清单

这些插件覆盖了从编译、测试、打包到部署的整个Maven构建生命周期的不同方面。根据项目需求,可以选择合适的插件,并通过POM文件进行配置以满足具体的构建要求。

xuTao667的博客 2061

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

常用 Maven 插件终极大全

简介:我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。本文将为大家介绍一些常用的 Maven 插件。 镜像下载、域名解析、时间同步请点击阿里巴巴开源镜像站 我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。进一步说,每个任务对应了一个插件...

a_small_cherry的博客 5571

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Maven 常用插件

Maven 常用插件

qq_38074398的博客 1136

maven常用插件

maven常用插件

DCHAO的博客 1193

Maven常用插件集合

在这里记录常用的插件,以备用时可快速查询,会持续更新 1. maven-compile-plugin     官方介绍 http://maven.apache.org/plugins/maven-compiler-plugin/examples/compile-using-different-jdk.html     在pom.xml文件中默认编译级别是1.5,如果需改成1.6,可以在pom

燃烧JAVA 2001

常用Maven插件介绍

作者:种菜得瓜http://www.cnblogs.com/crazy-fox/archive/2012/02/09/2343722.html我们都知道Maven本质上是...

架构师小秘圈 203

[maven] 常用插件解析

[maven] 常用插件解析参考资料:http://my.oschina.net/zh119893/blog/276090我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成。例如编译源代码是由maven-compiler-plugin完成的。进一步说,每个任务对应了一个插件目标(goal),每个...

diaojin6880的博客 237

常用 Maven 插件大全

我们都知道Maven本质上是一个插件框架,它的核心并不执行任何具体的构建任务,所有这些任务都交给插件来完成,例如编译源代码是由maven- compiler-plugin完成的。 进一步说,每个任务对应了一个插件目标(goal),每个插件会有一个或者多个目标,例如maven- compiler-plugin的compile目标用来编译位于src/main/java/目录下的主源码,testCompile目标用来编译位于src/test/java/目录下的测试源码。 用户可以通过两种方式调用M..

风水道人 542

Maven 的常用插件

Maven 的常用插件 官网插件地址:http://maven.apache.org/plugins/index.html           1、下面为 maven 打包插件: &lt;project&gt; ... &lt;build&gt; &lt;plugins&gt; &lt;plugin&gt; ...

何以小城大事的博客 204
上一篇: 开发工具: Maven 01、Maven入门
下一篇: 开发工具: git 01、git核心知识
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值