Maven 项目管理

news/2025/1/26 7:52:18/

  对于使用Mave进行项目构建的学习 是学习SpringBoot时的补充学习内容 主要是关于一些理论的补充 实际使用还是会继续学习使用SpringBoot

1 简介

   Maven 项目管理工具 将项目开发和管理过程抽象成一个项目对象模型(POM)

作用:1.项目构建:提供标准的,跨平台的的自动化项目构建方式

           2.依赖管理:方便快捷的构建项目依赖的资源(jar包)避免资源间版本冲突问题

           3.统一开发结构:提供统一 标准的项目开发结构


2 基本概念

 2.1 仓库

用于存储各种资源 包含各种jar包

配置:可以修改本地仓库的位置 

 2.2 坐标

坐标:用于描述资源在仓库中的位置 唯一定位资源的位置

查询坐标的网站:Maven Repository: Search/Browse/Explore

坐标组成:

<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope>
</dependency>


3  项目构建

 3.1 手工构建

使用手工创建文件夹或者使用插件进行模板生成

 目录结构:

 与src同层有放置xml配置文件

构建命令: 

使用MVN开头 后面加功能参数 可以一次执行多行命令 使用空格分割

 3.2 IDEA创建

idea 可以自动创建Maven控制项目 或者空项目自行配置

常规文件包会使用不同颜色区分

可以自己配置运行命令和调试


4 依赖管理

 4.1 依赖配置

当前项目运行所需要的资源 配置格式

<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
<! -- 设置具体的依赖项 --><groupId>junit</groupId>
<!-- 依赖所属群组ID--><artifactId>junit</artifactId>
<!-- 依赖项目ID--><version>4.12</version>
<!-- 依赖版本号--><scope>test</scope>
</dependency>

 4.2 依赖传递

当同级配置相同的资源的时  后配置的会覆盖先配置的 

 4.3 可选依赖

 4.4 排除依赖

 4.5 依赖范围


5 生命周期和插件

生命周期:

  5.1 clean生命周期

  

 5.2 defult生命周期

 5.3 site生命周期

插件:


6 分模块开发与设计*

一个工程拆分为诸多个模块 各个模块合作完成项目

 6.1 模块拆分

每个功能都独立成一个模块 放置相关的代码和配置文件 模块之间通过接口进行通信

     dao模块拆分 (模块之间存在依赖关系)

     service模块拆分

    controller模块拆分

 6.2 模块聚合

多模块构建维护 由一个模块控制所有模块的下载与更新 

模块的最终执行顺序与模块间的依赖关系有关 与配置顺序无关

<!-- 定义该工程用于构建管理 -->
<packaging>pom</packaging>
<!-- 管理工程列表 --><modules>
<!--  具体工程名称 --><module>../dao</module><module>../service</module><module>../controller</module></modules><!-- 进行依赖管理  --><distributionManagement><snapshotRepository></snapshotRepository></distributionManagement>

 6.3 模块继承

<!-- 定义工程的父工程 --> 
<parent><groupId> </groupId><artifactId> </artifactId><version> </version><relativePath/> <!-- 相对路径 --></parent>

 6.4 版本管理

 属性:

属性类别介绍调用格式
内置属性maven内置属性 快速配置${version}
Settings属性maven配置文件setting.xml中的标签属性 用于动态配置${setting.localRepository}
java系统属性java的系统属性${user.name}
环境变量属性maven配置文件setting.xml中的标签属性 用于动态配置${env.JAVA.HOME}
 <!-- 定义自定义属性 --><properties><spring.version>5.19</spring.version></properties><!--  使用 ${} 进行属性值的调用 -->

 工程版本:

版本号约定:

 6.5 资源配置

配置一些资源时 可以先定义自定义属性 然后在属性文件中使用 ${} 解析 达到在一个文件配置信息

例如:<jdbc.url> jdbc:mysql://127.0.0.1:db</jdbc.url>

 <!-- 配置资源文件的对应信息 --><resources><resource><directory>${project.basedir}}/src/main/resources</directory> <!-- 项目基础路径 通配符--><includes><include>**/*.xml</include><filtering></filtering></includes></resource></resources>

6.6 多环境配置

区分配置开发和生产环境 使用不同的属性

   <!-- 配置多环境 --><profiles><!-- 定义具体的环境:生产环境 --><profile><!-- 定义环境对用的唯一ID  --><id>dev</id><!-- 定义环境中专用的属性值 --><properties><!-- 配置数据源 --><spring.datasource.url>jdbc:mysql://localhost:3306/test</spring.datasource.url></properties><activation><!-- 配置默认环境条件 --><activeByDefault>true</activeByDefault></activation></profile><!-- 定义具体的环境:开发环境 --><profile><id>prod</id></profile></profiles>

学习时间 2024.01.18 笔记部分内容和图片来自黑马程序员 


http://www.ppmy.cn/news/1565981.html

相关文章

.NET Framework

.NET Framework 是微软推出的一个软件开发平台&#xff0c;主要用于构建和运行 Windows 应用程序。它是 .NET 生态系统的早期版本&#xff0c;专注于 Windows 平台&#xff0c;并提供了丰富的类库和运行时环境。 注意事项 跨平台限制&#xff1a;.NET Framework 主要适用于 W…

高级java每日一道面试题-2025年01月24日-框架篇[SpringMVC篇]-SpringMVC常用的注解有哪些?

如果有遗漏,评论区告诉我进行补充 面试官: SpringMVC常用的注解有哪些? 我回答: 一、核心注解详解 1. Controller 作用&#xff1a;将一个普通的Java类标记为处理请求的控制器。 应用场景&#xff1a;在Spring MVC中起到了路由请求和处理业务逻辑的作用&#xff0c;并注册…

GitHub的主要用途及核心功能

------> 在给手机成功root之后&#xff0c;我也经常光临GitHub&#xff0c;在上面挖掘好玩的模块还有&#xff0c;并根据其源代码进行学习。那GitHub是什么网站呢&#xff1f;它又有什么功能&#xff1f; GitHub 是什么&#xff1f; GitHub 是一个基于 Git 的版本控制和代…

docker 安装 mysql 详解

在平常的开发工作中&#xff0c;我们经常需要用到 mysql 数据库。那么在docker容器中&#xff0c;应该怎么安装mysql数据库呢。简单来说&#xff0c;第一步&#xff1a;拉取镜像&#xff1b;第二步&#xff1a;创建挂载目录并设置 my.conf&#xff1b;第三步&#xff1a;启动容…

ubuntu如何测试网络性能

在 Ubuntu 中&#xff0c;有多种工具可以测试网络性能&#xff0c;包括带宽、延迟、丢包率等。以下是常用的工具和方法&#xff1a; 1. 使用 ping 测试网络延迟和连通性 ping 是最基本的网络测试工具&#xff0c;用于测试目标主机的连通性和延迟。 命令&#xff1a; ping &l…

嵌入式知识点总结 ARM体系与架构 专题提升(四)-编程

针对于嵌入式软件杂乱的知识点总结起来&#xff0c;提供给读者学习复习对下述内容的强化。 目录 1.嵌人式编程中&#xff0c;什么是大端?什么是小端 ? 2.如何判断计算机处理器是大端&#xff0c;还是小端 ? 3.如何进行大小端的转换 ? 4.如何对绝对地址0x100000赋值? 1…

STM32 GPIO配置 点亮LED灯

本次是基于STM32F407ZET6做一个GPIO配置&#xff0c;实现点灯实验。 新建文件 LED.c、LED.h文件&#xff0c;将其封装到Driver文件中。 双击Driver文件将LED.c添加进来 编写头文件&#xff0c;这里注意需要将Driver头文件声明一下。 在LED.c、main.c里面引入头文件LED.h LED初…

2025美赛B题完整代码+建模过程

问题一 为朱诺市建立一个可持续旅游产业模型。具体要求包括考虑游客数量、总收入,以及为稳定旅游业而实施的措施,明确优化因素和约束条件,并制定额外收入的支出计划,展示这些支出如何反馈到模型中以促进可持续旅游业发展,同时进行敏感性分析,讨论哪些因素最为重要。 为了…