JavaWeb——后端之maven

本文详细介绍了Maven在后端Web开发中的重要性,包括依赖管理、生命周期管理、分模块设计、继承与聚合以及私服的使用,旨在帮助开发者理解和应用Maven进行高效项目构建和版本控制。
摘要由CSDN通过智能技术生成

三、后端Web开发

1. Maven

1.1 概念

概念: 一款用于管理和构建java项目的工具,是apache下的一个开源项目

在这里插入图片描述

作用:

  • 依赖管理:jar包,避免版本冲突问题——不用手动导jar包,只需要在配置文件(pom.xml)中描述依赖信息,maven会自动联网下载——是基于项目对象模型(Project object model,POM)的概念,通过一小段描述信息来管理项目的构建。
  • 统一项目结构:提供标准、统一的项目结构,不同的开发工具都可以进行开发操作
  • 项目构建:标准跨平台的自动化项目构建方式

1.2 依赖管理

1)依赖配置

依赖: 指的是当前项目运行所需要的jar包,一个项目中可以引入多个依赖

配置:

  • 在pom.xml中编写<dependencies>标签
  • 在<dependencies>标签中,使用<dependency>引入坐标
  • 定义坐标的groupId, artifactId, version——https://mvnrepository.com/
  • 点击刷新按钮,引入最新加入的坐标

2)依赖传递

项目依赖的依赖会被自动导入

依赖分类:

  • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
  • 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源

排除依赖:主动断开依赖的资源,被排除的资源不需要指定版本

<exclusions>

​ <exclusion>

​ <groupId>XXX</groupId>

​ <artifactId>XXX</artifactId>

​ </exclusion>

</exclusions>

3)依赖范围

默认情况: 可以在任何地方使用(主程序范围内,测试程序范围内,是否参与打包运行(package指令范围内))。

可以通过<scope>XXX</scope>设置其作用范围

scope值主程序测试程序打包(运行)范例
compile(默认)log4j
test××junit
provided×servlet-api
runtime×jdbc驱动

4)生命周期

对所有的maven项目构建过程进行抽象和统一

3套相互独立的生命周期——每套生命周期包含一些阶段,阶段是有顺序的,后面的阶段依赖于前面的阶段,同一套生命周期中,当后面的阶段运行时,前面的阶段都会运行

  • clean: 清理工作
  • default: 核心工作,如:编译、测试、打包、安装、部署等
  • site: 生成报告、发布站点等

在这里插入图片描述

clean:移除上一次构建生成的文件

compite:编译项目源代码

test:使用合适的单元测试框架运行测试

package:将编译后的文件打包

install:安装项目到本地仓库

执行方式

  • 双击maven项目中Lifecycle目录下的生命周期
  • 在命令行中输入指令mvn 要执行的生命周期

本质

生命周期是个虚拟的概念,实际上每个操作都是由插件完成的

【未完待续……maven高级部分】
【续】

1.3 分模块设计与开发

概念: 分模块设计就是将项目按照功能拆分成若干个子模块

原因: 为了代码的复用性、安全性——方便项目的管理维护、扩展,也方便模块间的相互调用,资源共享

在这里插入图片描述

注: 要先针对模块功能进行设计,再编码。不能开发完毕,然后再进行拆分

过程: 拆分的每个maven模块为其设置坐标,在主模块pom文件中引入依赖

1.4 继承与聚合

解决多模块开发中的问题

1)继承关系实现

概念: 继承描述两个工程间的关系,子工程可以继承父工程中的配置信息,常见于依赖关系继承。单继承,多重继承(若父子工程都配置了同一个依赖的不同版本,以子工程为准)

作用: 简化依赖配置、统一依赖管理

实现: <parent>…</parent>

步骤:

设置打包方式,在pom文件中<packaging>pom</packing>

在这里插入图片描述

2)版本锁定

统一管理各个依赖的版本

在父工程中指定依赖的版本号,父工程统一管理。子工程引入时无需指定版本号,变更版本时,只需在父工程中统一变更。

?父工程有了,子工程不是不需要引入了吗?——有些依赖不是所有模块都需要的

这个标签下的依赖并不会被导入,仅仅管理依赖的版本
<dependencyManagement>
    <dependencies>
    	<dependency>
        	指定版本号的依赖
        </dependency>     
    </dependencies>
</dependencyManagement>

更加方便版本管理

在这里插入图片描述

3)聚合

想要对一个模块进行打包:要想对一个模块进行打包,先要将其父工程或者依赖的工程安装到本地maven仓库,比较繁琐

概念: 将多个模块组织成一个整体,同时进行项目的构建

聚合工程: 一个不具有业务功能的”空“工程(有且仅有一个pom文件)

作用: 快速构建项目(无需根据依赖关系手动构建,直接在聚合工程上构建)

实现:

在聚合工程的pom文件中

<modules>
	<module>聚合模块的相对路径</module>
</modules>

1.5 私服

资源共享

在这里插入图片描述

概念: 架设在局域网内的特殊远程仓库,用来代理位于外部的中央仓库,解决团队内部的资源共享与同步问题

资源上传与下载:

在这里插入图片描述

release:发行版本,功能趋于稳定、当前停止更新

snapshot:功能不稳定、尚处于开发中版本

  • 7
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值