Maven构建生命周期

news2025/1/11 7:05:48

目录

Default (Build) 生命周期

命令行调用

Site 生命周期

如何清除本地 Maven 仓库并重新构建项目

Maven 构建配置文件

mvn dependency:purge-local-repository 这个命令是干什么的?

mvn clean install这个命令是干什么的?

配置文件激活

1、配置文件激活


 前面的部分已经配置好了

Default (Build) 生命周期

生命周期阶段描述
validate(校验)校验项目是否正确并且所有必要的信息可以完成项目的构建过程。
initialize(初始化)初始化构建状态,比如设置属性值。
generate-sources(生成源代码)生成包含在编译阶段中的任何源代码。
process-sources(处理源代码)处理源代码,比如说,过滤任意值。
generate-resources(生成资源文件)生成将会包含在项目包中的资源文件。
process-resources (处理资源文件)复制和处理资源到目标目录,为打包阶段最好准备。
compile(编译)编译项目的源代码。
process-classes(处理类文件)处理编译生成的文件,比如说对Java class文件做字节码改善优化。
generate-test-sources(生成测试源代码)生成包含在编译阶段中的任何测试源代码。
process-test-sources(处理测试源代码)处理测试源代码,比如说,过滤任意值。
generate-test-resources(生成测试资源文件)为测试创建资源文件。
process-test-resources(处理测试资源文件)复制和处理测试资源到目标目录。
test-compile(编译测试源码)编译测试源代码到测试目标目录.
process-test-classes(处理测试类文件)处理测试源码编译生成的文件。
test(测试)使用合适的单元测试框架运行测试(Juint是其中之一)。
prepare-package(准备打包)在实际打包之前,执行任何的必要的操作为打包做准备。
package(打包)将编译后的代码打包成可分发格式的文件,比如JAR、WAR或者EAR文件。
pre-integration-test(集成测试前)在执行集成测试前进行必要的动作。比如说,搭建需要的环境。
integration-test(集成测试)处理和部署项目到可以运行集成测试环境中。
post-integration-test(集成测试后)在执行集成测试完成后进行必要的动作。比如说,清理集成测试环境。
verify (验证)运行任意的检查来验证项目包有效且达到质量标准。
install(安装)安装项目包到本地仓库,这样项目包可以用作其他本地项目的依赖。
deploy(部署)将最终的项目包复制到远程仓库中与其他开发者和项目共享。

有一些与 Maven 生命周期相关的重要概念需要说明:

当一个阶段通过 Maven 命令调用时,例如 mvn compile,只有该阶段之前以及包括该阶段在内的所有阶段会被执行。

不同的 maven 目标将根据打包的类型(JAR / WAR / EAR),被绑定到不同的 Maven 生命周期阶段。

在下面的例子中,我们将 maven-antrun-plugin:run 目标添加到 Build 生命周期的一部分阶段中。这样我们可以显示生命周期的文本信息。

我们已经更新了 C:\MVN\project 目录下的 pom.xml 文件。

C:\CodeLife\MVN\project>mvn compile

Maven 将会开始处理并显示直到编译阶段的构建生命周期的各个阶段。

 

命令行调用

在开发环境中,使用下面的命令去构建、安装工程到本地仓库

mvn install

这个命令在执行 install 阶段前,按顺序执行了 default 生命周期的阶段 (validate,compile,package,等等),我们只需要调用最后一个阶段,如这里是 install。

在构建环境中,使用下面的调用来纯净地构建和部署项目到共享仓库中

mvn clean deploy

这行命令也可以用于多模块的情况下,即包含多个子项目的项目,Maven 会在每一个子项目执行 clean 命令,然后再执行 deploy 命令。

Site 生命周期

Maven Site 插件一般用来创建新的报告文档、部署站点等。

  • pre-site:执行一些需要在生成站点文档之前完成的工作
  • site:生成项目的站点文档
  • post-site: 执行一些需要在生成站点文档之后完成的工作,并且为部署做准备
  • site-deploy:将生成的站点文档部署到特定的服务器上

这里经常用到的是site阶段和site-deploy阶段,用以生成和发布Maven站点,这可是Maven相当强大的功能,Manager比较喜欢,文档及统计数据自动生成,很好看。 在下面的例子中,我们将 maven-antrun-plugin:run 目标添加到 Site 生命周期的所有阶段中。这样我们可以显示生命周期的所有文本信息。

我们已经更新了 C:\MVN\project 目录下的 pom.xml 文件。

C:\CodeLife\MVN\project>mvn site

Maven 将会开始处理并显示直到 site 阶段的 site 生命周期的各个阶段。

 

如何清除本地 Maven 仓库并重新构建项目

要清除本地 Maven 仓库并重新构建项目,可以按照以下步骤操作:

  1. 关闭当前使用 Maven 构建的项目。

  2. 打开命令行窗口(Windows 用户可以使用 cmd,Linux 或 macOS 用户可以使用终端),输入以下命令以删除本地 Maven 仓库中的所有依赖项和插件

mvn dependency:purge-local-repository

输入以下命令以重新构建项目:

mvn clean install

以上命令会从 Maven 仓库重新下载所有依赖项和插件,并重新编译并构建项目。

请注意,清除本地 Maven 仓库可能需要一些时间,具体时间取决于您的本地 Maven 仓库的大小以及您的 Internet 连接速度。此外,如果您使用的是 Maven 中央存储库(Maven Central Repository),则 Maven 服务器的负载也可能会影响下载速度。

Maven 构建配置文件

构建配置文件是一系列的配置项的值,可以用来设置或者覆盖 Maven 构建默认值。

使用构建配置文件,你可以为不同的环境,比如说生产环境(Production)和开发(Development)环境,定制构建方式。

配置文件在 pom.xml 文件中使用 activeProfiles 或者 profiles 元素指定,并且可以通过各种方式触发。配置文件在构建时修改 POM,并且用来给参数设定不同的目标环境(比如说,开发(Development)、测试(Testing)和生产环境(Production)中数据库服务器的地址)。

mvn dependency:purge-local-repository 这个命令是干什么的?

mvn dependency:purge-local-repository 是 Maven 的一个命令,用于清空本地仓库中的所有依赖。执行该命令后,Maven 会删除本地仓库中所有已经下载的依赖,强制重新从远程仓库下载依赖,并将它们安装到本地仓库。这个命令有时候可以用于解决 Maven 依赖问题,比如某些依赖无法下载或版本冲突等问题。需要注意的是,执行该命令会清空本地仓库的所有内容,因此建议在使用之前备份本地仓库的重要内容。

mvn clean install这个命令是干什么的?

mvn clean install是一个Maven命令,用于在本地构建和安装项目。这个命令通常在一个项目的根目录下执行,它执行以下操作:

  1. 执行清理操作,删除先前构建的任何输出。
  2. 编译源代码。
  3. 运行单元测试并生成测试报告。
  4. 打包编译后的代码和依赖项成为JAR或WAR文件。
  5. 在本地Maven仓库中安装生成的库文件,以便可以在其他项目中使用该库。

这个命令是Maven构建过程中最常用的命令之一,它确保您始终使用最新的源代码构建您的项目,并在本地Maven仓库中安装您的库以供其他项目使用。

配置文件激活

Maven的构建配置文件可以通过多种方式激活。

  • 使用命令控制台输入显式激活。
  • 通过 maven 设置。
  • 基于环境变量(用户或者系统变量)。
  • 操作系统设置(比如说,Windows系列)。
  • 文件的存在或者缺失。

 

 

1、配置文件激活

profile 可以让我们定义一系列的配置信息,然后指定其激活条件。这样我们就可以定义多个 profile,然后每个 profile 对应不同的激活条件和配置信息,从而达到不同环境使用不同配置信息的效果。

以下实例,我们将 maven-antrun-plugin:run 目标添加到测试阶段中。这样我们可以在不同的 profile 中输出文本信息。我们将使用 pom.xml 来定义不同的 profile,并在命令控制台中使用 maven 命令激活 profile。

pom.xml 文件如下:

 

mvn test -Ptest

 

 

 

 

mvn test

 参考博客:
 

Maven 构建配置文件 | 菜鸟教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/517506.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自从外包三年半,程序员人废了一半

如果不是女朋友和我提分手,我估计现在还没醒悟。大专生,18年通过校招进入湖南某软件公司,干了3年多的CRUD,今年年初,感觉自己不能够在这样下去了,长时间呆在一个舒适的环境会让一个人堕落!而我已经在一个企…

HBase入门 修改表字段类型(十一)

一、查询看 自己表的DATA_TYPE select TENANT_ID,TABLE_SCHEM,TABLE_NAME,COLUMN_NAME,COLUMN_FAMILY,DATA_TYPE,TYPE_NAME,COLUMN_SIZE,DECIMAL_DIGITS from system.catalog where TABLE_NAME表名2、修改为varchar类型 upsert into SYSTEM.CATALOG (TENANT_ID,TABLE_SCHEM,TA…

如何高清视频录制?您只需要这样操作!

案例:如何录制画质高清的视频? 【我录制了一个视频课程,上传到网上,但是我录制的视频画质不好,影响观感。有没有支持高清录制的录屏工具?有没有小伙伴可以推荐一下!在线等!】 无论…

ChatGpt与AI交谈的未来到来,你准备好了吗?

ChatGpt已经成为了人工智能领域中的一颗明珠,它可以根据用户提出的问题进行分析和回答,帮助用户解决问题和获取信息。而未来,随着人工智能技术的进一步发展,ChatGpt与AI交谈将成为一种更加普遍和重要的交流方式。你准备好了吗&…

7 文件操作、单元测试、goroutine【Go语言教程】

7 文件操作、单元测试、goroutine【Go语言教程】 1 文件操作 1.1 介绍 os.File 封装所有文件相关操作,File 是一个结构体 常用方法: 打开文件 关闭文件 package mainimport ("fmt""os" )func main(){//打开文件//file又叫做&…

VPGTrans: 10%的成本定制你自己的类GPT-4多模态大模型

作者 | 张傲 最近的多模态(对话)大模型将基于文本的ChatGPT的强大能力扩展到了多模态输入,实现强大的多模态语义理解,比如GPT-4、BLIP-2、Flamingo等。但咱们普通玩家训练一个多模态GPT代价非常昂贵。来自于新加坡国立大学和清华大…

基于SSM框架的核酸检测管理系统

基于SSM框架的核酸检测管理系统 快速查看 基于SSM框架的核酸检测管理系统功能需求开发工具模块相关技术系统相关图片 功能需求 用户模块: 注册功能:普通用户可以访问本系统进行账户注册,个人资料:登录系统对自己的个人资料&…

Parker派克伺服电机有哪些优势特点?如何选型?

一、什么是伺服电机? 伺服电机是一种可以通过控制器精确地控制位置、速度和加速度的电机,主要由电机、编码器和控制器三部分组成,具有高转矩、高精度、快速响应和低转速稳定特性,能够在负载扰动、电压变化及机械特性变化下保持较…

springboot整合邮箱功能二(普通邮件, html邮件, thymleaf邮件)

【SpringBoot整合Email发送邮件】_ζั͡ ั͡空 ั͡ ั͡白�的博客-CSDN博客 https://www.cnblogs.com/erlou96/p/16878192.html#_label1_5 1. 准备工作 1.1 qq邮箱设置 本文默认使用qq邮箱来发送邮件,然后使用一个在线临时邮箱来接收邮件。为了让程序能够通过…

srs one2one,one2many通话环境搭建

一、简介 二、go环境配置 三、srs编译配置 四、信令服务器编译 4.1 signaling8 4.2 web服务器 五、测试 六、附录 官⽅⽂档参考地址:https://github.com/ossrs/srs/wiki/v4_CN_WebRTC#sfu-one-to-one 一、简介 srs的webrtc能力和两个信令服务器不管是逻辑上还是代码…

Linux 进程基础

目录 1、进程的概念 2、进程与线程的区别、进程与程序的区别 2.1 进程与线程的区别 2.2 进程与程序的区别 3、进程相关 shell 命令 3.1 ps 3.3.1 参数说明 3.3.2 结果说明 3.2 pidof 3.3 pstree 3.4 top 3.5 kill 4、进程相关函数 4.1 fork 4.1.1 fork的函数原型…

医院内导航及智能导医,医院导诊图怎么制作?

在大型综合性医院,由于专业分工精细,一个诊疗过程涉及的功能单元往往分布在不同的楼宇、不同楼层的不同位置,再加上多数患者对医院环境不熟悉,导致滞院的时间长、诊疗效率低、患者对服务的满意度下降。为解决这一问题,…

VMware Aria Operations for Logs 8.12 - 集中式日志管理

VMware Aria Operations for Logs 8.12 - 集中式日志管理 请访问原文链接:https://sysin.org/blog/vmware-aria-operations-for-logs/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.org 集中式日志管理 VMware Aria …

蓝牙mesh数据包格式解析

蓝牙mesh数据包的结构如下图: 总长31个字节。 Length (1Byte):数据长度 Type (1Byte):广播类型 IVI (1bit):用来认证加密Network PDU的IV index的最低位 NID (7bits):网络ID,network ID。从网络密钥(Ne…

学习了两个多月就进了我们公司,顺利过了试用期,我心塞了...

转行起因 公司前段时间来了个大专机械专业毕业的,挺好奇他在如今这个环境下怎么进来的而且非本科非科班,后面我请他喝了一次酒,我才了解到他的故事,写出来与大家分享,希望对各位有点启迪。 他以前在一个大厂做售后工…

新来的00后真卷,我想离职了···

都说00后躺平了,但是有一说一,该卷的还是卷。 这不,前段时间我们公司来了个00后,工作没两年,跳槽到我们公司起薪20K,都快接近我了。后来才知道人家是个卷王,从早干到晚就差搬张床到工位睡觉了。…

sentinel基本原理以及核心类介绍

Sentinel 核心类解析 架构图 ProcessorSlotChain Sentinel 的核心骨架,如上图结构,将不同的 Slot 按照顺序串在一起(责任链模式),从而将不同的功能(限流、降级、系统保护)组合在一起。slot ch…

2023.05.11-利用GPT4free免费使用ChatGPT4

1. 简介 现在OpenAI,虽然出了ChatGPT4,但是只给plus会员用,对于国内的用户来说,不仅需要魔法,还需要有一张外网的信用卡来开通会员,使用起来重重不便,有一种想要花钱买服务,都找不到…

tf卡文件隐藏怎样恢复,原来有这三种方法,你了解多少呢?

TF卡是一种便携式存储设备,非常方便用于存储数据。但是,有时TF卡中的数据会被不小心隐藏了,也许是误操作,也许是病毒攻击等原因。所以,下面将讲述如何找回TF卡中被隐藏的数据。 【一】关于TF卡概述 TF卡(…

uniapp打包ios保姆式教程【最新】

uniapp打包 打包方式ios打包一、前往官网登录二、添加证书 三、添加标识符(Identifiers)四、添加安装ios测试机(Devices)五、获取证书profile文件六、生成并下载p12文件七、开始打包 打包方式 安卓打包直接使用公共测试证书即可打包成功,简单方便,这里我…