SpringBoot入门-(1) Maven【概念+流程】

SpringBoot入门-(1) Maven

动机

对于企业级大项目而言,需要手动导入很大Jar包,费时费力,且Jar包之间也可能存在依赖和冲突,这些关系导致Jar包之间想毛线团一样缠在一起,因此我们需要一个包管理系统帮我们自动下载导入Jar包并且管理好他们之间的依赖和避免冲突,由此Maven诞生。

  • Maven 是一款自动化构建工具,专注服务于Java 平台的项目构建和依赖管理

安装与配置

  1. 下载Maven压缩包解压

  2. 打开MAVEN 安装目录**\settings.xml** 文件,修改**<localRepository>**标签,设置为新建的本地仓库地址

  3. 修改镜像,<mirror>标签添加阿里镜像,下载相关依赖包速度快

自动导包原理

从maven中获取Jar包时,maven先从本地仓库中查找,若存在则返回,若不存在从**中央仓库(镜像)**取包并保存到本地。

IDEA中配置

在IDEA中配置好相关路径后新建项目即可,如下

新建Maven项目:

创建后,项目目录树如下:

  • main:存放主程序

  • test:存放测试代码,单元测试等

  • java:存放源代码

  • resource:存放配置文件和资源文件

  • pom.xml文件:管理依赖,标识项目

pom.xml

pom文件中包含我们刚刚新建项目设置的项目坐标,jdk版本等相关信息:

我们可以在pom.xml文件中添加依赖,右侧刷新更新依赖即可(自动下载所需依赖包):

Project Object Model:项目对象模型。将Java工程的相关信息封装为对象作为便于操作和管理的模型。Maven工程的核心配置。

MAVEN构建工具可以让对象(项目)和对象之间产生关系

相关概念

坐标

  1. 使用GAV在Maven仓库中唯一确定一个Maven工程

    • groupId:公司或组织的域名倒序+当前项目名称

    • artifactId:当前项目的模块名称

    • version:当前模块的版本信息

    复制代码
     <groupId>com.wzu.maven</groupId>
     <artifactId>Example</artifactId>
     <version>0.0.1-SNAPSHOT</version>
  1. 通过坐标在仓库中查找jar包

    • 将GAV三个向量连起来即可

    • com/wzu/maven/Example/0.0.1-SNAPSHOT/Example-0.0.1-SNAPSHOT.jar(相对路径,前面是本地仓库路径)

    • 自己的maven工程要生成jar包供其他项目依赖和使用,执行mvn install命令后在对应路径下出现本项目的jar包(已进入仓库)

maven自动化部署

maven可以自动执行项目构建全流程:清理 -> 编译 -> 测试 -> 报告 -> 打包 -> 部署

项目关系

  • 依赖关系:标签<dependency>把另一个项目的 jar 引入到当前项目,则maven会自动下载另一个项目的 jar 所依赖的其他项目,不会出现手动导入jar缺失依赖的问题。

  • 聚合关系:

    • 大项目一般分为模块项目,子项目用<parent>标签继承父项目(pom类型,可删除父工程的src等文件夹),此时父项目起到的作用是统一版本等相关信息。

    • New -> Module 创建子模块,也会生成子模块对应的pom.xml。

    • 父项目的packing类型为pom,子项目一般为jar或war

    • 父项目统一管理子项目的依赖包版本,不真正引入JAR包,依赖放在<dependencyManagement>标签中

    • 子项目真正引入JAR包,而不用指定版本号,确保各个模块之间版本统一,修改方便

如果子项目和<groupId><version>与父项目相同,在子项目中可以不配置<groupId><version>

依赖范围

复制代码
 <dependency>
     <groupId>...</groupId?
     <artifactId>...</artifactId>
     <scope>...</scope>
 </dependency>   

注意到<scope>标签用于控制依赖的范围

  • compile (默认)

    • main目录下的Java代码可以访问这个范围的依赖
    • test目录下的Java代码可以访问这个范围的依赖
    • 部署到Tomcat服务器上运行时要放在WEB-INF的lib目录下
  • test

    • main目录下的Java代码不能访问这个范围的依赖

    • test目录下的Java代码可以访问这个范围的依赖

    • 部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下

    • 例如:对junit的依赖。仅仅是测试程序部分需要。

  • provided

    • main目录下的Java代码可以访问这个范围的依赖

    • test目录下的Java代码可以访问这个范围的依赖

    • 部署到Tomcat服务器上运行时不会放在WEB-INF的lib目录下

    • 例如:servlet-api在服务器上运行时,Servlet容器会提供相关API,所以部署的时候不需要

相关推荐
kkk1622245几秒前
C# Winform 实现换肤,并自定义皮肤功能
java·算法·c#
添砖Java中1 分钟前
零基础掌握分布式ID生成:从理论到实战的完整指南 [特殊字符]
java·分布式·分布式id
龙仔72535 分钟前
打造独一无二的 CI/CD 工厂:Java 应用的自动化之旅
java·spring cloud·ci/cd·自动化·devops
互联网搬砖老肖1 小时前
Python开发合并多个PDF文件
java·python·pdf
এ旧栎1 小时前
蓝桥与力扣刷题(蓝桥 星期计算)
java·数据结构·算法·leetcode·职场和发展·蓝桥杯·规律
王嘉俊9251 小时前
初识JVM
java·jvm·字节码
Cloud_.1 小时前
Spring Boot整合Sa-Token极简指南
java·后端·springboot·登录校验
Ttang232 小时前
SSM基础专项复习4——Maven项目管理工具(1)
java·开发语言·spring·maven·web
九转苍翎2 小时前
Java Collection(3)——BinaryTree(二叉树)
java·数据结构