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,所以部署的时候不需要

相关推荐
AD钙奶-lalala1 小时前
Mac OS上搭建 http server
java
皮皮林5515 小时前
SpringBoot 全局/局部双模式 Gzip 压缩实战:14MB GeoJSON 秒变 3MB
java·spring boot
weixin_456904275 小时前
Spring Boot 用户管理系统
java·spring boot·后端
趁你还年轻_5 小时前
异步编程CompletionService
java
DKPT5 小时前
Java内存区域与内存溢出
java·开发语言·jvm·笔记·学习
sibylyue5 小时前
Guava中常用的工具类
java·guava
奔跑吧邓邓子6 小时前
【Java实战㉞】从0到1:Spring Boot Web开发与接口设计实战
java·spring boot·实战·web开发·接口设计
专注API从业者6 小时前
Python/Java 代码示例:手把手教程调用 1688 API 获取商品详情实时数据
java·linux·数据库·python
奔跑吧邓邓子6 小时前
【Java实战㉝】Spring Boot实战:从入门到自动配置的进阶之路
java·spring boot·实战·自动配置
ONLYOFFICE6 小时前
【技术教程】如何将ONLYOFFICE文档集成到使用Spring Boot框架编写的Java Web应用程序中
java·spring boot·编辑器