欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 房产 > 建筑 > SpringBoot入门-(1) Maven【概念+流程】

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

2025/3/17 16:33:47 来源:https://blog.csdn.net/Mr_XLM/article/details/146209329  浏览:    关键词: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,所以部署的时候不需要

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词