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

Maven 项目管理

  对于使用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.kler.cn/a/512972.html

相关文章:

  • 【Prometheus】PromQL进阶用法
  • Unity预制体未即时刷新
  • 【数据结构】顺序队列与链式队列
  • STM32之CubeMX图形化工具开发介绍(十七)
  • AUTOSAR从入门到精通-线控底盘技术
  • Tesla Free-Fall Attack:特斯拉汽车网络安全事件纪要
  • 跨域cookie携带问题总结
  • Skywalking python agent安装配置
  • 【源码+文档+调试讲解】基于Spring Boot的协作会话平台
  • C++0到1面试点(二)
  • web-view环境下,H5页面打开其他小程序
  • Linux 如何使用parted进行磁盘分区?
  • HTML<img>标签
  • Qt Network编程之HTTP请求与处理
  • AI 之网:网络诈骗者的 “高科技伪装术”—— 智能诈骗的神秘面纱
  • jenkins-视图管理
  • TDengine 做 Apache SuperSet 数据源
  • 工业制造离不开的BOM
  • 为AI聊天工具添加一个知识系统 之57 前端工具:知识图谱、语义网络和认知地图 之2
  • 产品溯源管理系统(源码+文档+部署+讲解)
  • Docker Compose的使用
  • 9种提高 GitHub 国内访问速度的方案_hub
  • Spring Boot Actuator 详细介绍
  • Vue 3 自定义 Hook:实现页面数据刷新与滚动位置还原
  • 【2024年华为OD机试】(A卷,100分)- 匿名信 (Java JS PythonC/C++)
  • 【python】基于决策树,SVM 和 神经网络 预测银行客户流失