Maven 项目管理

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

1 简介

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

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

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

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


2 基本概念

2.1 仓库

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

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

2.2 坐标

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

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

坐标组成:

XML 复制代码
<!-- 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 依赖配置

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

XML 复制代码
<!-- 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 模块聚合

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

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

XML 复制代码
<!-- 定义该工程用于构建管理 -->
<packaging>pom</packaging>
<!-- 管理工程列表 -->
    <modules>
<!--  具体工程名称 -->
        <module>../dao</module>
        <module>../service</module>
        <module>../controller</module>
    </modules>


<!-- 进行依赖管理  -->
 <distributionManagement>
        <snapshotRepository>
        </snapshotRepository>
    </distributionManagement>

6.3 模块继承

XML 复制代码
<!-- 定义工程的父工程 --> 
<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} |

XML 复制代码
 <!-- 定义自定义属性 -->
    <properties>
        <spring.version>5.19</spring.version>
    </properties>
    
    <!--  使用 ${} 进行属性值的调用 -->

工程版本:

版本号约定:

6.5 资源配置

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

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

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

6.6 多环境配置

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

XML 复制代码
   <!-- 配置多环境 -->
    <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 笔记部分内容和图片来自黑马程序员

相关推荐
布朗克1689 分钟前
Java 10 新特性及具体应用
java·开发语言·新特性·java10
ZZHow10243 小时前
JavaWeb开发_Day05
java·笔记·web
CHEN5_023 小时前
【Java虚拟机】垃圾回收机制
java·开发语言·jvm
Warren983 小时前
Lua 脚本在 Redis 中的应用
java·前端·网络·vue.js·redis·junit·lua
艾伦~耶格尔7 小时前
【数据结构进阶】
java·开发语言·数据结构·学习·面试
爪洼传承人7 小时前
18- 网络编程
java·网络编程
smileNicky8 小时前
SpringBoot系列之从繁琐配置到一键启动之旅
java·spring boot·后端
祈祷苍天赐我java之术8 小时前
Java 迭代器(Iterator)详解
java·开发语言
David爱编程8 小时前
为什么必须学并发编程?一文带你看懂从单线程到多线程的演进史
java·后端
我命由我123458 小时前
软件开发 - 避免过多的 if-else 语句(使用策略模式、使用映射表、使用枚举、使用函数式编程)
java·开发语言·javascript·设计模式·java-ee·策略模式·js