【Maven系列】深入解析 Maven 常用命令

在这里插入图片描述

前言

  在当今的软件开发过程中,项目管理是至关重要的一环。项目管理包括了项目构建、依赖管理以及发布部署等诸多方面。而在Java生态系统中,Maven已经成为了最受欢迎的项目管理工具之一。Maven 是一套用于构建、依赖管理和项目管理的工具,主要用于 Java 项目。Maven 命令是 Maven 的核心功能之一,通过这些命令可以执行项目的构建、编译、测试、打包等操作,帮助开发者自动化构建、测试和部署Java项目。了解Maven的常用命令是使用它的关键,下面将简单介绍一些我们日常开发中经常会用到的一些 Maven 命令。

在这里插入图片描述

一、项目构建命令

命令说明
mvn clean清理目标目录(target)中的输出文件。
mvn compile编译位于 src/main/java 下的 Java 代码,生成.class文件到target目录。
mvn test-compile编译测试源代码路径(src/test/java)下的 Java 代码。
mvn test运行项目中的单元测试,编译并测试 src/test/java下的测试代码。
mvn package将编译后的代码打包成 JAR 或 WAR 文件。
mvn install将打包好的文件安装到本地仓库中,以便其他项目可以引用。
mvn site生成项目站点文档。

例如:

# 清除历史打包并重新打包
mvn clean package# 只打包不测试(跳过测试)
mvn install -Dmaven.test.skip=true# 强制检查更新后打包
mvn clean package -U

二、依赖管理命令

命令说明
mvn dependency:resolve用于解析项目的依赖关系,检查项目的依赖配置,并下载所需的依赖库到本地仓库。
mvn dependency:list查看当前项目已被解析的依赖。
mvn dependency:tree用于查看项目的依赖树,会以树状结构展示项目的所有依赖关系。
mvn dependency:analyze分析项目依赖,找出未使用的依赖和缺失的依赖。
mvn dependency:copy-dependencies将项目的依赖复制到指定目录。
mvn dependency:purge-local-repository用于清理本地仓库中的依赖库,可以删除不再需要的依赖库,从而节省磁盘空间。

三、发布部署命令

命令说明
mvn deploy用于将项目的构建结果发布到远程仓库。
它会将项目的Jar或War文件上传到Maven远程仓库,以便其他项目可以引用。
在执行这个命令之前,需要先执行mvn install命令。
mvn release:prepare用于准备项目的发布版本。
它会自动更新项目的版本号,创建一个发布分支,并将相关的版本信息提交到版本控制系统。
mvn release:perform用于执行项目的发布操作。
它会将项目的构建结果发布到Maven远程仓库,并将发布分支合并到主分支。

插件相关

命令说明
mvn plugin:help -Ddetail=true -Dgoal=goal-name显示某个插件目标的帮助信息。
mvn help:effective-pom显示当前项目的有效 POM 文件。
mvn help:describe -Dplugin=plugin-name -Dmojo=mojo-name -Dfull显示某个插件目标的详细信息。

构建生命周期

命令说明
mvn validate验证项目是否正确且所有必要信息都可用。
mvn initialize初始化构建状态,例如设置属性或创建目录。
mvn generate-sources生成源代码。
mvn process-sources处理源代码,例如过滤。
mvn generate-resources生成资源文件。
mvn process-resources复制并处理资源文件到目标目录。
mvn compile编译主源代码。
mvn process-classes处理编译后的类文件。
mvn generate-test-sources生成测试源代码。
mvn process-test-sources处理测试源代码。
mvn generate-test-resources生成测试资源文件。
mvn process-test-resources复制并处理测试资源文件到目标目录。
mvn test-compile编译测试源代码。
mvn process-test-classes处理编译后的测试类文件。
mvn test运行单元测试。
mvn prepare-package在实际打包之前进行必要的准备工作。
mvn package打包项目。
mvn pre-integration-test在集成测试前执行的操作。
mvn integration-test运行集成测试。
mvn post-integration-test在集成测试后执行的操作。
mvn verify检查集成测试的结果。
mvn install安装包到本地仓库。
mvn deploy部署包到远程仓库。

其他常用命令

命令说明
mvn archetype:generate创建一个新的 Maven 项目。
mvn eclipse:eclipse生成 Eclipse 项目的配置文件(不推荐使用,建议使用 m2eclipse 插件)。
mvn idea:idea生成 IntelliJ IDEA 项目的配置文件(不推荐使用,建议使用 IDE 自带的 Maven 支持)。
mvn release:prepare准备发布版本。
mvn release:perform执行发布操作,将发布版本部署到远程仓库。
mvn versions:display-dependency-updates显示依赖项的更新信息。
mvn versions:display-plugin-updates显示插件的更新信息。
mvn versions:update-properties更新 POM 文件中的版本属性。
mvn versions:set设置 POM 文件中的版本号。
mvn versions:commit提交版本更改。
mvn versions:revert回滚版本更改。

Mvn 命令参数

参数说明
mvn -v显示版本信息
mvn -V显示版本信息后继续执行Maven其他目标
mvn -h显示帮助信息
mvn -D传入属性参数
mvn -P使用pom中指定的配置,如有多个,用逗号隔开。
-e显示maven运行出错的信息
-o离线执行命令,即不去远程仓库更新包
-X显示maven允许的debug信息
-U强制检查更新,防止缓存等原因使用历史依赖,在自动化发布脚本中会经常用到。

总结

  这些命令可以帮助我们完成项目的编译、测试、打包、安装和部署等任务,在命令行中输入对应的命令即可执行相应的操作。例如,要编译项目,可以输入mvn compile;要打包项目,可以输入mvn package。需要注意的是,在使用这些命令之前,需要先在项目的根目录下打开命令行窗口,并确保已经正确配置了Maven的环境变量。通过这些常用操作命令的掌握,我们可以更加高效地使用Maven管理项目,提高开发效率。

  在项目中,我们可以根据具体的需求选择合适的命令来完成任务。例如,当需要快速清空项目产生的文件时,可以使用mvn clean命令;当需要打包并上传到私服时,可以使用mvn deploy命令。通过不断地实践和积累经验,我们可以更好地利用Maven的功能,为项目的顺利完成提供有力保障。

在这里插入图片描述

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

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

相关文章

DBA面试题-1

面临失业,整理一下面试题,找下家继续搬砖 主要参考:https://www.csdn.net/?spm1001.2101.3001.4476 略有修改 一、mysql有哪些数据类型 1, 整形 tinyint,smallint,medumint,int,bigint;分别占用1字节、2字节、3字节…

【Rust WebAssembly 入门实操遇到的问题】

Rust WebAssembly 入门实操遇到的问题 什么是WebAssembly跟着教程走wasm-pack build error总结 什么是WebAssembly WebAssembly(简称Wasm)是一种基于堆栈的虚拟机的二进制指令 格式。Wasm 被设计为编程语言的可移植编译目标,支持在 Web 上部…

数据挖掘之数据预处理

​​​​​​​ 引言 数据挖掘是从大量数据中提取有用信息和知识的过程。在这个过程中,数据预处理是不可或缺的关键步骤。数据预处理旨在清理和转换数据,以提高数据质量,从而为后续的数据挖掘任务奠定坚实的基础。由于现实世界中的数据通常…

21个Python脚本自动执行日常任务(1)

引言 作为编程领域摸爬滚打超过十年的老手,我深刻体会到,自动化那些重复性工作能大大节省我们的时间和精力。 Python以其简洁的语法和功能强大的库支持,成为了编写自动化脚本的首选语言。无论你是专业的程序员,还是希望简化日常工…

C++ 游戏开发:开启游戏世界的编程之旅(2)

三、游戏输入处理 (一)键盘输入处理 在游戏中,玩家通过键盘输入来控制角色的行动。我们需要在游戏循环中不断检测键盘事件,并根据不同的按键按下或松开状态来执行相应的操作。例如,在 SDL 中,可以这样处理…

重生归来之正确使用gcc.md

environment gcc --version g --version gdb --versionsudo apt update sudo apt install gcc g build-essential gdb cmake 项目目录结构 MyProject/ │ ├── CMakeLists.txt # CMake 配置文件 ├── src/ │ └── main.cpp # 源代码 ├── build/ …

探索3D世界:使用 lib3ds 读取和解析 3DS 文件

在3D图形开发中,读取和解析3DS文件是创建和渲染3D场景的第一步。3DS(3D Studio)文件格式是一种广泛使用的3D模型文件格式,它包含了多种类型的数据,用于描述3D场景中的物体、材质、相机、灯光和动画等。lib3ds 是一个开…

从 HTML 到 CSS:开启网页样式之旅(五)—— CSS盒子模型

从 HTML 到 CSS:开启网页样式之旅(五)—— CSS盒子模型 前言一、盒子模型的组成margin(外边距):border(边框):padding(内边距):conten…

注解 实现原理 详解

Java 注解实现原理详解 注解(Annotation)是 Java 提供的一种元数据机制,用于为代码元素(类、方法、字段、参数等)添加额外的信息。注解不会直接影响程序逻辑,但可以通过 工具(如编译器、运行时…

使用Feign远程调用丢失请求头问题

在使用Feign进行远程调用时,当前服务是能拿到请求头信息的,请求头包含有登录认证Cookie等重要信息,但是在调用远程服务时,远程服务却拿不到请求头信息,因为使用Feign进行远程调用实际上是发起新的Request请求了&#x…

SpringBoot 整合 Avro 与 Kafka 详解

SpringBoot 整合 Avro 与 Kafka 详解 在大数据处理和实时数据流场景中,Apache Kafka 和 Apache Avro 是两个非常重要的工具。Kafka 作为一个分布式流处理平台,能够高效地处理大量数据,而 Avro 则是一个用于序列化数据的紧凑、快速的二进制数…

2021数学分析【南昌大学】

2021 数学分析 求极限 lim ⁡ n → ∞ 1 n ( n + 1 ) ( n + 2 ) ⋯ ( n + n ) n \lim_{n \to \infty} \frac{1}{n} \sqrt [n]{(n+1)(n+2) \cdots (n+n)} n→∞lim​n1​n(n+1)(n+2)⋯(n+n) ​ lim ⁡ n → ∞ 1 n ( n + 1 ) ( n + 2 ) ⋯ ( n + n ) n = lim ⁡ n → ∞ ( n + …

vue+mars3d点击图层展示炫酷的popup弹窗

展示效果 目录 一:叠加数据图层到地图上,此时需要使用bindPopup绑定popup 二、封装自定义的popup,样式可以自行调整 一:叠加数据图层到地图上,此时需要使用bindPopup绑定popup 这里我根据数据不同,展示的…

【Python】用Python和Paramiko实现远程服务器自动化管理

《Python OpenCV从菜鸟到高手》带你进入图像处理与计算机视觉的大门! 解锁Python编程的无限可能:《奇妙的Python》带你漫游代码世界 在现代IT环境中,远程服务器管理已成为运维工作的常态。随着自动化运维的需求不断增加,如何高效地管理远程服务器,提升操作的灵活性和效率…

框架建设实战2——创建frame-bom和out-bom

根frame-parent的创建一样&#xff0c;分别创建两个工程。主要管理公司内部的二方包和外部的三方包。 1.frame-bom GAV定义为&#xff1a; <groupId>com.test</groupId> <artifactId>frame-bom</artifactId> <name>frame-bom</name> …

【AIGC】如何使用高价值提示词Prompt提升ChatGPT响应质量

博客主页&#xff1a; [小ᶻ☡꙳ᵃⁱᵍᶜ꙳] 本文专栏: AIGC | 提示词Prompt应用实例 文章目录 &#x1f4af;前言&#x1f4af;提示词英文模板&#x1f4af;提示词中文解析1. 明确需求2. 建议额外角色3. 角色确认与修改4. 逐步完善提示5. 确定参考资料6. 生成和优化提示7.…

FPGA存在的意义:为什么adc连续采样需要fpga来做,而不会直接用iic来实现

FPGA存在的意义&#xff1a;为什么adc连续采样需要fpga来做&#xff0c;而不会直接用iic来实现 原因ADS111x连续采样实现连续采样功能说明iic读取adc的数据速率 VS adc连续采样的速率adc连续采样的速率iic读取adc的数据速率结论分析 FPGA读取adc数据问题一&#xff1a;读取adc数…

千益畅行,旅游卡有些什么优势?

千益畅行共享旅游卡是一种创新的旅游服务模式&#xff0c;旨在通过整合各类旅游资源&#xff0c;为用户提供一站式的旅游解决方案。这张旅游卡支持2至6人同行&#xff0c;涵盖了接机、酒店、用餐、大巴、导游、景区门票等服务&#xff0c;用户只需自行承担往返交通费用即可享受…

LobeChat-46.6k星!顶级AI工具集,一键部署,界面美观易用,ApiSmart 是你肉身体验学习LLM 最好IDEA 工具

LobeChat LobeChat的开源&#xff0c;把AI功能集合到一起&#xff0c;真的太爽了。 我第一次发现LobeChat的时候&#xff0c;就是看到那炫酷的页面&#xff0c;这么强的前端真的是在秀肌肉啊&#xff01; 看下它的官网&#xff0c;整个网站的动效简直闪瞎我&#xff01; GitH…

[报错] Error: PostCSS plugin autoprefixer requires PostCSS 8 问题解决办法

报错&#xff1a;Error: PostCSS plugin autoprefixer requires PostCSS 8 原因&#xff1a;autoprefixer版本过高 解决方案&#xff1a; 降低autoprefixer版本 执行&#xff1a;npm i postcss-loader autoprefixer8.0.0 参考&#xff1a; Error: PostCSS plugin autoprefix…