当前位置: 首页 > news >正文

[Maven 基础课程]基于 IDEA 进行 Maven 构建

Maven 有标准构建生命周期(Standard Build Lifecycle)的概念。这意味着构建和分发特定工件(项目)的过程有明确的定义。对于构建项目的人来说,这意味着只需要学习一组简单的命令来构建任何 Maven 项目,而 POM 将确保他们得到期望的结果。Maven 存在三种内置构建生命周期:默认、清理和站点。 default 生命周期处理项目部署, clean 生命周期处理项目清理,而 site 生命周期处理项目网站的创建。

构建生命周期由不同的构建阶段列表定义,其中构建阶段代表生命周期中的一个阶段。

常用的构建阶段包含:

命令描述
mvn clean清理编译或打包后的项目结构
mvn validate验证项目是否正确且所有必要信息都可用
mvn compile编译项目,生成 target 文件
mvn test执行测试源码
mvn package打包项目,生成 jar 或 war 文件
mvn verify运行集成测试结果检查,确保满足质量标准
mvn install打包后上传到 maven 本地仓库
mvn site生成站点
mvn deploy只打包,上传到 maven 私服仓库

这些构建命令(阶段)是 Maven 提供的,对于 IDEA 来说,提供了和其对应的可视化操作方法:

当你执行 mvn 命令(或操作 idea 提供的这些生命周期中的阶段)时,你其实是在告诉 Maven 执行生命周期中的某个或某几个阶段(phase)。Maven 会按顺序执行你指定阶段之前的所有阶段。

clean

双击 IDEA 中 maven 的生命周期中的 clean,等价于执行 mvn clean 命令。这个命令会删除 target 目录。target 目录存放着所有编译、测试、打包生成的文件。在执行新的构建之前先清理,可以确保构建的纯净性,避免旧文件对新构建产生影响。

validate

双击 IDEA 中 maven 的生命周期中的 clean,等价于执行 mvn validate 命令。它的作用是验证项目是否正确,它会检查 pom.xml 文件是否有效,以及项目所需的目录结构是否存在。

compile

双击 IDEA 中 maven 的生命周期中的 compile,等价于执行 mvn compile 命令。这个命令会将 src/main/java 目录下的所有 .java 文件编译成 .class 字节码文件,并将其放入 target/classes 目录。

test

双击 IDEA 中 maven 的生命周期中的 test,等价于执行 mvn test 命令。作用是运行项目的单元测试。这个命令会编译 src/test/java 目录下的测试代码,并运行所有测试。如果任何一个测试失败,构建过程将停止。

package

双击 IDEA 中 maven 的生命周期中的 test,等价于执行 mvn package 命令。作用是将编译好的代码打包,根据 pom.xml 中 的定义,将项目打包成 JAR、WAR 或其他格式。例如,对于一个 jar 的项目,该命令会生成一个 JAR 文件并将其放入 target 目录。

verify

双击 IDEA 中 maven 的生命周期中的 test,等价于执行 mvn verify 命令。作用是运行集成测试并进行质量检查,这个阶段通常用于运行集成测试或执行静态代码分析等质量检查,确保项目质量达标。

install

双击 IDEA 中 maven 的生命周期中的 install,等价于执行 mvn install 命令。作用是将项目构件安装到本地仓库,这个命令会将打包好的文件(比如 JAR 包)连同 pom.xml 一起安装到你的本地 Maven 仓库(比如:~/.m2/repository)中。这样,其他本地项目就可以像依赖远程仓库中的构件一样,依赖这个构件。

site

双击 IDEA 中 maven 的生命周期中的 site,等价于执行 mvn site 命令。作用是生成项目文档和报告,这个命令会根据项目的配置,生成一个包含项目信息、Javadocs、测试报告等的静态网站。

deploy

双击 IDEA 中 maven 的生命周期中的 site,等价于执行 mvn deploy 命令。作用是将项目构件部署到远程仓库,这个命令会将打包好的文件部署(上传)到远程或私有仓库,供其他团队成员或项目使用。

http://www.dtcms.com/a/394976.html

相关文章:

  • 一个基于 .NET 开源、简易、轻量级的进销存管理系统
  • 基于Flowlet的ARS(自适应路由切换)技术在RoCE网络负载均衡中的应用与优势
  • 计算机网络实验[番外篇]:MobaXterm连接Centos9的配置
  • Go语言实战案例-项目实战篇:实现一个词频分析系统
  • Grok 4 Fast vs GPT-5-mini:新一代高效AI模型开发者选型指南
  • LeetCode:47.从前序和中序遍历序列构造二叉树
  • MySQL安装避坑指南:从环境适配到故障修复的全场景实战手册
  • React教程(React入门教程)(React组件、JSX、React Props、React State、React事件处理、Hooks、高阶组件HOC)
  • 2025年CSP-S初赛真题及答案解析(完善程序第1题)
  • 六、页面优化
  • CVAT部署到虚拟机小记
  • scss基础学习
  • 基于衍射神经网络的光学高速粒子分类系统A1(未做完)
  • ffprobe安装与简单使用
  • close函数就像“关门“操作,用于关闭文件描述符释放系统资源
  • PyTorch 神经网络工具箱学习笔记
  • Qt常用控件之QWidget(三)
  • apache poi excel 单元格换行
  • 全能视频下载器-下载自媒体平台视频 v1.5.5 专业版
  • 状态模式指南:对象状态变化的优雅管理
  • 自动化多段视频删除:FFmpeg.AutoGen 与 C# 的完整实现​
  • C、C++、Java 和 Python:四大编程语言的对比分析
  • ESP iic驱动
  • Ai-Agent学习历程——大模型的概念
  • 5G NR-NTN协议学习系列:NR-NTN介绍(3)
  • 一场 MCP 生态的变革——详解 OpenTiny NEXT 逆向思维的技术创新
  • 【案例教程】从CNN到 Transformer:基于PyTorch的遥感影像、无人机影像的地物分类、目标检测、语义分割和点云分类
  • 私有证书不被edge浏览器认可的问题的解决-Debian13环境下
  • 团体程序设计天梯赛 L2-052 吉利矩阵 (DFS+剪枝)(Java实现)
  • 【LeetCode 每日一题】966. 元音拼写检查器