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

Maven(黑马)

Maven 是一个强大的项目管理和构建自动化工具,主要用于 Java 项目的构建、依赖管理和文档生成。它通过使用 POM(Project Object Model)文件来管理项目的配置和依赖关系,从而实现项目的自动化构建和管理。以下是 Maven 的一些核心概念和功能:

1. Maven 的核心概念

(1)POM 文件

POM(Project Object Model)文件是 Maven 的核心配置文件,它是一个 XML 文件,位于项目的根目录下,文件名为 pom.xml。POM 文件定义了项目的依赖、插件、构建生命周期、配置等信息。

(2)生命周期

Maven 的生命周期是一系列的阶段,用于定义项目的构建过程。Maven 有三个主要的生命周期:

  • Clean Lifecycle:清理项目,删除目标目录(target)。

    • clean:清理项目。

  • Default Lifecycle:构建项目,包括编译、测试、打包、部署等。

    • validate:验证项目是否正确。

    • compile:编译项目代码。

    • test:运行测试。

    • package:打包项目(如 JAR、WAR)。

    • install:将包安装到本地仓库。

    • deploy:将包部署到远程仓库。

  • Site Lifecycle:生成项目文档和站点。

(3)依赖管理

Maven 使用中央仓库来管理依赖。当项目需要某个依赖时,Maven 会从本地仓库中查找,如果本地仓库中没有,则从远程仓库(如 Maven Central)下载并存储到本地仓库。依赖的版本管理可以通过 POM 文件中的 <dependency> 标签来配置。

(4)插件

Maven 的功能通过插件来扩展。插件是一组可重用的代码,用于执行特定的任务,如编译代码、打包项目、运行测试等。插件的生命周期与 Maven 的生命周期紧密集成。例如,maven-compiler-plugin 用于编译代码,maven-surefire-plugin 用于运行测试。

2.依赖配置

<dependencies><dependency><groupId>ch.qos.logback</groupId><artifactId>logback-classic</artifactId><version>1.2.3</version></dependency>
</dependencies>

3.依赖管理

依赖itheima下的projectB模块,如下

<dependencies><dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0_SNAPSHOT</version></dependency>
</dependencies>

<dependencies><dependency><groupId>com.itheima</groupId><artifactId>maven-projectB</artifactId><version>1.0_SNAPSHOT</version>//排除<exclusions><exclusion><artifactId>maven-projectB</artifactId><groupId>com.itheima</groupId></exclusion></exclusions></dependency>
</dependencies>

4.依赖范围

compile(编译范围)

  • 描述:这是默认的依赖范围。如果未显式指定依赖范围,则默认为 compile

<dependency><groupId>org.springframework</groupId><artifactId>spring-core</artifactId><version>5.3.23</version><scope>compile</scope> <!-- 默认值,可以省略 -->
</dependency>

provided(已提供范围)

  • 描述:表示依赖在编译和测试阶段可用,但在运行时由运行环境(如应用服务器)提供。

<dependency><groupId>javax.servlet</groupId><artifactId>javax.servlet-api</artifactId><version>4.0.1</version><scope>provided</scope>
</dependency>

runtime(运行时范围)

  • 描述:表示依赖在运行和测试阶段可用,但在编译阶段不需要。
  • <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><version>8.0.28</version><scope>runtime</scope>
    </dependency>

    test(测试范围)

  • 描述:表示依赖仅在测试编译和测试执行阶段可用。

  • <dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.13.2</version><scope>test</scope>
    </dependency>

    system(系统范围)

  • 描述:类似于 provided,但依赖必须显式指定路径。
     

import(导入范围)

  • 描述:仅用于依赖管理(dependencyManagement)部分,用于导入其他 POM 文件中的依赖管理配置。

optional(可选范围)

  • 描述:虽然不是独立的范围,但可以与上述范围配合使用。

5.生命周期

关注如下五阶段:
clean   compile test  package  install

以上。

http://www.lryc.cn/news/2395911.html

相关文章:

  • CppCon 2014 学习:ODB, Advanced Weapons and Tactics
  • 将手机网络经USB数据线和本地局域网共享给华为AP6050DN无线接入点
  • 【论文解读】Deformable DETR | Deformable Transformers for End-to-End Object Detection
  • android 图片背景毛玻璃效果实现
  • 机器学习----决策树
  • LabVIEW输血袋字符智能检测系统
  • 数据结构测试模拟题(3)
  • 理解频域滤波
  • Telerik生态整合:Kendo UI for Angular组件在WinForms应用中的深度嵌入(一)
  • 古老的传说(Player、Stage)是否还能在蓝桥云课ROS中重现-250601(失败)
  • InfluxQL 数据分析实战:聚合、过滤与关联查询全解析
  • Qt font + ToolTip + focusPolicy + styleSheet属性(5)
  • APM32主控键盘全功能开发实战教程:软件部分
  • docker 部署 gin
  • 十三: 神经网络的学习
  • Qt OpenGL编程常用类
  • 数据结构 --- 顺序表
  • MySQL高级查询技巧:分组、聚合、子查询与分页【MySQL系列】
  • 无人机多旋翼倾转动力测试系统-适用于(eVTOL开发、缩比模型测试、科研教育)
  • .NET8入门:14.ASP.NET Core MVC进阶——Model
  • latex figure Missing number, treated as zero. <to be read again>
  • java CompletableFuture创建异步任务(Completable异步+ExecutorService线程池)
  • LeetCode 高频 SQL 50 题(基础版)之 【聚合函数】部分
  • 【AI学习】检索增强生成(Retrieval Augmented Generation,RAG)
  • 低成本高效图像生成:GPUGeek和ComfyUI的强强联合
  • 基于Matlab实现卫星轨道模拟仿真
  • 前端使用 spark-md5 实现大文件切片上传
  • 《操作系统真相还原》——进入内核
  • 【QQ音乐】sign签名| data参数 | AES-GCM加密 | webpack(上)
  • 【STM32】按键控制LED 光敏传感器控制蜂鸣器