Maven生命周期等简述

设置provider解决maven找不到JUnit 5测试样例 尝试复现一个用大模型生成测试样例的工作,但使用maven生成的JUnit 5测试样例死活不执行。又不想用命令行运行,因此进行排查。 阅读详情

Maven

maven依赖的scope属性——依赖的范围

范围

有三个:complier、test、provider

注意,scope的默认值为complier

1. complier——编译范围的依赖

开发、部署、运行是均需要的jar包。

对主程序和测试程序均有效,参与打包。

2. test——测试范围的依赖

仅对测试程序有效,当依赖被标记为test时,在主程序中import相关类会导致编译报错,也不参与打包 。

3. provider——

tomcat服务器会提供常见的api,这部分只在开发的时候需要导入jar包,部署和运行时由tomcat提供,会忽略不再需要引入。(例如servlet-api.jar)

对主程序和测试程序均有效,不参与打包盒部署。

maven依赖的生命周期

——各个构建环节执行的顺序

1. 构建过程中的各个环节

​ 【1】清理——clean

​ 【2】编译——complier

​ 【3】测试——test

​ 【4】报告——verify(测试程序的执行结果)

​ 【5】打包——package

​ 【6】安装——install(将打包后的文件复制到仓库的指定位置)

​ 【7】部署——deploy

各个环节的执行顺序不能打断,maven核心程序定义了抽象的生命周期。为了更好的实现自动化,每一个生命周期的实现,都会从生命周期最初的地方开始。比如我们常会使用package而不去complier,因为在package之前已经进行了编译等操作。

2. 三种生命周期

以下列出了默认(default),**清洁(clean)和站点(site)**生命周期的所有构建阶段,它们按照指定的顺序执行的顺序执行。

资料来源:博文

清洁(clean)生命周期

预清洁(pre-clean)执行实际项目清理之前所需的流程
清洁(clean)删除以前构建生成的所有文件
后清洁(post-clean)执行完成项目清理所需的流程

默认(default)生命周期

验证(validate)验证项目是正确的,所有必要的信息可用。
初始化(initialize)初始化构建状态,例如设置属性或创建目录。
产生来源(generate-sources)生成包含在编译中的任何源代码。
流程源(process-sources)处理源代码,例如过滤任何值。
生成资源(generate-resources)生成包含在包中的资源。
流程资源(process-resources)将资源复制并处理到目标目录中,准备打包。
编译(compile)编译项目的源代码。
工艺类(process-classes)从编译后处理生成的文件,例如对Java类进行字节码增强。
生成测试来源(generate-test-sources)生成包含在编译中的任何测试源代码。
流程测试来源(process-test-sources)处理测试源代码,例如过滤任何值。
生成测试资源(generate-test-resources)创建测试资源。
流程测试资源(process-test-resources)将资源复制并处理到测试目标目录中。
测试编译(test-compile)将测试源代码编译到测试目标目录中
流程检验类(process-test-classes)从测试编译中处理生成的文件,例如对Java类进行字节码增强。对于Maven 2.0.5及以上版本。
测试(test)使用合适的单元测试框架运行测试。这些测试不应该要求代码被打包或部署。
制备包(prepare-package)在实际包装之前,执行必要的准备包装的操作。这通常会导致打包的处理版本的包。(Maven 2.1及以上)
打包(package)采取编译的代码,并以其可分发的格式(如JAR)进行打包。
预集成测试(pre-integration-test)在执行集成测试之前执行所需的操作。这可能涉及诸如设置所需环境等。
集成测试(integration-test)如果需要,可以将该包过程并部署到可以运行集成测试的环境中。
整合后的测试(post-integration-test)执行集成测试后执行所需的操作。这可能包括清理环境。
校验(verify)运行任何检查以验证包装是否有效并符合质量标准。
安装(install)将软件包安装到本地存储库中,以作为本地其他项目的依赖关系。
部署(deploy)在集成或发布环境中完成,将最终软件包复制到远程存储库,以与其他开发人员和项目共享。

站点(site)生命周期

预网站(pre-site)在实际的项目现场生成之前执行所需的进程
网站(site)生成项目的站点文档
后网站(post-site)执行完成站点生成所需的进程,并准备站点部署
网站部署(site-deploy)将生成的站点文档部署到指定的Web服务器

由此可见,执行deploy命令,等于执行了整个默认的生命周期。

设置Maven工程的jdk版本

  1. 打开settings.xml

  2. 找到profiles标签

  3. 加入如下配置

    <profile>
    	<id>jdk-1.8</id>
        <activation>
        	<activeByDefault>true</activeByDefault>
            <jdk>1.8</jdk>
        </activation>
        <properties>
        	<maven.complier.source>1.7</maven.complier.source>
            <maven.complier.target>1.7</maven.complier.target>
            <maven.complier.complierVersion>1.7</maven.complier.complierVersion>
        </properties>
    </profile>
    

依赖的传递性

依赖的引用具有传递性,引用一个依赖,会自动导入被引用工程所依赖的其他jar包,当前工程不必再重复引用。

请注意,非complier的依赖没有传递性,只作用于当前工程

依赖的排除

当不需要被引用工程所传递过来的附带jar包是,可以排除对应的jar包

pom.xml中对应的引用依赖下添加:

<exclusions>
	<exclusion>
    	<groupId>***</groupId>
        <actifactId>***</actifactId>
    </exclusion>
</exclusions>

依赖的原则

作用:解决模块工程之间的jar包冲突问题

主要有以下两个原则:

  1. 路径最短优先

    当工程依赖A,A又依赖B,A、B中有不同版本的同一jar包,则maven会将A的jar包传递给工程

  2. 先申明者优先

    当路径长短一样时,pom.xml中先申明的依赖优先导入,例如工程依赖A,B连个依赖,A、B同时依赖C,若Pom中A在B前面申明,则maven会将A中的C依赖传递给工程

统一版本的管理

日常使用中会使用大量同一版本的一类jar包,例如spring家族的jar包,使用同一版本管理会更为方便管理和升级

通过下面标签进行版本的声明

<properties>
	<spring.version>4.0.0</spring.version>
    <log4j.version>1.2.7</log4j.version>
</properties>

后续版本中直接引用即可<version>${spring.version}</version>

当然<porperties>标签也可以定义其他属性用于别处引用

查找maven依赖的网站

mavenRepository

YOLOv8项目实战:从PyCharm环境搭建到工业级模型部署 本文详细介绍了YOLOv8在工业级项目中的实战应用,从PyCharm环境配置、GPU加速到模型训练与部署的全流程。通过具体代码示例和实用技巧,帮助开发者高效完成工业质检等场景的AI模型开发与部署,特别适合需要快速上手YOLOv8的工程师。 阅读详情

相关推荐

Maven 的生命周期详解

在 Maven 出现之前,项目构建的生命周期已经存在,开发人员每天都在进行项目的清理、编译、测试和部署。然而,由于缺乏统一的规范,不同公司甚至不同项目之间的构建方式各不相同。Maven 从大量项目和构建工具中汲取经验和反思,总结出了一套高度完美且易于扩展的生命周期。这一生命周期将项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有构建过程进行了抽象和统一。需要注意的是,Maven 生命周期本身是抽象的,不能完成任何实际工作。

栗筝i的博客 2054

maven的scope作用域以及依赖传递

maven的dependency标签除了针对jar包的定位gav外,有时候还会写上scope这个标签,它表示该jar包的作用范围,可用值如下: compile:默认的scope的值,对src/main/java有效,对src/test/java也有效,参与打包,这也是大多数jar包的配置 test:对src/main/java无效,对src/test/java下面的类有效,不参与打包,比如我们...

xiaozhuangyumaotao的博客 981

Anaconda安装教程傻瓜教程

网上好多教程找的我心好累,为了方便新手安装,我这边整理了大致详细的教程,参考了好几个大佬的教程,废话不多说,直接开始~ **前言:**有人纠结先安装python还是安装anaconda,这边的建议是装anaconda,就不需要单独装python了。 其次,有小伙伴的Anaconda的安装分两种情况: 情况一:电脑现在没有装python或者现在装的可以卸载掉(装Anaconda时先卸python); 情况二:电脑目前装了python,但想保留它;

zlc2351951436的博客 5万+

记录 maven依赖关系中provided、compile用法

maven依赖关系中的<scope>provided</scope>使用详解_java_脚本之家

weixin_40745353的博客 375

Win10系统下Protel 99 SE元件库导入报错?3步搞定File is not recognized问题

本文详细介绍了在Win10系统下解决Protel 99 SE元件库导入报错'File is not recognized'的3步终极方案。通过手动修改配置文件、使用专用工具和优化系统兼容性设置,帮助用户快速解决这一经典PCB设计软件的兼容性问题,提升工作效率。

m3n5b7v8c9x的博客 796

kettle连接达梦资源库数据库插件

kettle自定义插件plugin database plugin 达梦插件 dm插件

weixin_42122126的博客 2169

Idea下运行Maven项目时provide包没有依赖导致类找不到

这个包在maven引入的时候是provide的,运行main函数的时候会有如下错误: Exception in thread "main" java.lang.NoClassDefFoundError: org/apache/spark/sql/SparkSession at Rdd01.main(Rdd01.java:16) Caused by: java.lang.ClassNotFound...

敏叔 2205

【花雕学编程】Arduino动手做(249)---ESP32+GC9A01之播放GIF的空战锁定动画

摘要: 本实验基于ESP32开发板,驱动1.28寸圆形IPS彩色TFT显示屏(GC9A01驱动,240×240分辨率),通过SPI接口实现GIF动画播放。利用TFT_eSPI和AnimatedGIF库,成功加载并循环播放预置的科幻风格GIF动画(如HUD界面、X翼战机等)。代码实现了GIF解码、逐帧渲染及动态显示功能,通过串口调试监控运行状态。实验验证了该显示屏在动态图像显示中的流畅性,为嵌入式图形应用提供了实用方案,适用于智能穿戴、交互设备等场景。 关键词: ESP32、GC9A01、圆形TFT、GIF播

雕爷学编程 492

Maven —— 生命周期

每个生命周期的各个环节都是由各种插件完成!!! Maven有三个相互独立的生命周期(Maven的这三个生命周期不能看成一个整体)!!! mvn clean:清理编译的项目 mvn compile:编译项目 mvn test:测试项目(运行测试类) mvn package:负责将我们的项目打包 mvn install:将这个项目安装到仓库中 Clean生命周期(Clean Lifec...

Hern(宋兆恒) 1万+

【Unity工具篇】| Unity项目中如何使用LuBan插件,详细集成步骤

前面写了一篇文章用于介绍LuBan的下载及快速使用方法:【Unity实战篇】| 实用插件LuBan,快速上手使用 本篇文章就来介绍一下将LuBan集成到自己的Unity项目的方法。 看完本篇文章之后,就可以直接把LuBan插件放到自己项目中进行配表和使用。

努力前行,总会成为自己心中的那道光 2万+

Agent 智能体学习指南:从入门到求职的完整路线

AI Agent 不是更长的 prompt,而是一类系统设计——模型在受控环境里观察状态、选择动作、调用工具、接收反馈。本文系统梳理 Agent 的 5 个核心概念、7 个关键模块(Goal/State/Context/Tools/Loop/Guardrails/Eval)、三条学习路线(工程落地/研究算法/求职作品)、框架选型策略(LangGraph/OpenAI Agents SDK/Pydantic AI 等场景推荐),以及可执行的 7 天最小项目计划(从概念到简历 bullet)。

program哲学 229

Maven的生命周期详解

本篇文章重点针对这几个问题进行讲解:maven的生命周期都有哪些阶段?maven的生命周期和插件到低有什么关联?插件和插件的目标有什么关联?假如我们要用某个插件,怎么上官网查找?怎么手动调用插件?

怪咖@的博客 8864

PMP--二模--解题--161-170

A:邀请团队成员在下一次回顾中分享经验。B:请求发起人增加具有所需经验的团队成员。C:在团队内计划知识共享会议。D:请求发起人为团队提供培训课程。A。

stqer的博客 1269

Maven生命周期

Maven生命周期 个人网站 https://blog.deschen.cn/ 文章目录Maven生命周期一、Maven生命周期的定义二、Maven三套独立的生命周期三、Maven的插件 一、Maven生命周期的定义 Maven的生命周期就是为了对所有的构建过程进行抽象和统一。包括项目的清理,初始化,编译,测试,打包,集成测试,验证,部署和生成站点等构建步骤。 二、Maven三套独立的生命周期 Maven提供了三套独立的生命周期:clean, default 和 site clean生命周期:清理项目

陈汉槟 7673

【QT开发教程】Qt中的跨平台文件系统操作

文件系统操作是应用程序开发中经常需要处理的任务。Qt提供了一套跨平台的文件系统操作API,使开发者能够在不同操作系统上无缝地进行文件和目录操作。本文将介绍Qt中的跨平台文件系统操作,包括基本概念、常用类和方法以及实际示例。

科技改变人类,技术成就未来 981

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

Maven的生命周期

Maven的生命周期是一系列预定义的构建阶段,用于自动化和标准化项目构建过程。它包含三个核心生命周期:默认生命周期(负责编译、测试、打包和部署)、清理生命周期(清除构建输出)和站点生命周期(生成项目文档)。每个生命周期由多个有序阶段组成,如默认生命周期包括validate、compile、test、package等阶段。Maven通过这些生命周期组合管理项目构建全流程,确保构建过程的一致性和可重复性,使开发者能专注于业务逻辑而非构建细节。

记录大学四年代码 1285

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

maven构建生命周期

关于maven生命周期的详细分析

qq_41526047的博客 1957

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

Maven 生命周期详解

思考:我们常使用的maven命令,比如 mvn clean install,mvn clean package 这些命令到底最后是如何工作的? 在这里我们还是先一步步来,其实它们运行的是生命周期中对应的phase阶段。 Maven 拥有三套独立的生命周期,它们分别是clean、default 和 site。clean 生命周期的目的是清理项目;default 生命周期的目的是构建项目;site 生命周期的目的是建立项目站点。 生命周期相互独立 每个生命周期又包含了多个阶段。这些阶段在执行的时候是有.

wangxuelei036的博客 4457

Maven 构建生命周期

Maven 构建生命周期定义了一个项目构建跟发布的过程。为了完成 default 生命周期,这些阶段(包括其他未在上面罗列的生命周期阶段)将被按顺序地执行。

2007

maven的三大生命周期

一、Maven的生命周期 Maven的生命周期就是对所有的构建过程进行抽象和统一。包含了项目的清理、初始化、编译、测试、打包、集成测试、验证、部署和站点生成等几乎所有的构建步骤。 Maven的生命周期是抽象的,即生命周期不做任何实际的工作,实际任务由插件完成,类似于设计模式中的模板方法。 二、三套生命周期 Maven有三套相互独立的生命周期,分别是clean、default和site。每个生命周...

JavaBoy的博客 2342

Maven生命周期详解

Maven生命周期详解 目录 Maven生命周期详解 1、什么是生命周期? 2、Maven三大生命周期 2.1clean:清理项目 2.2 default:构建项目 2.3 site:生成项目站点 1、什么是生命周期? Maven生命周期就是为了对所有的构建过程进行抽象和统一。包括项目清理、初始化、编译、打包、测试、部署等几乎所有构建步骤。生命周期可以理解为构建工程的步骤。 在Maven中有三套相互独立的生命周期,请注意这里说的是“三套”,而且“相互...

一个小小白的成长之路的博客 6576
上一篇: java继承extend后子父类属性方法特点解析
下一篇: Spring线程池ThreadPoolTaskExecutor 的配置与使用
hynkoala
博客等级 码龄10年 8粉丝 26原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值