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 笔记部分内容和图片来自黑马程序员

相关推荐
Seven971 分钟前
SpringIOC、DI及Bean线程安全面试题解析
java
TitosZhang3 分钟前
BIO、NIO、AIO详解
java·redis·nio
Arva .20 分钟前
Spring Boot 配置文件
java·spring boot·后端
IT_Octopus20 分钟前
https私人证书 PKIX path building failed 报错解决
java·spring boot·网络协议·https
肥肠可耐的西西公主31 分钟前
后端(JavaWeb)学习笔记(CLASS 1):maven
笔记·学习·maven
程序员清风36 分钟前
网易三面:Java中默认使用的垃圾回收器及特点分版本说说?
java·后端·面试
这周也會开心1 小时前
本地部署javaweb项目到Tomcat的三种方法
java·tomcat
小蒜学长1 小时前
jsp基于JavaWeb的原色蛋糕商城的设计与实现(代码+数据库+LW)
java·开发语言·数据库·spring boot·后端
摇滚侠1 小时前
Spring Boot中使用线程池来优化程序执行的效率!笔记01
java·spring boot·多线程
毕设源码-江学长1 小时前
计算机毕业设计java共享茶室预约微信小程序 微信小程序中的共享茶室预订平台 茶室共享预约小程序的设计与开发
java·微信小程序·课程设计