SpringBoot左脚进门之Maven管理家具体步骤

 更新时间:2024年12月16日 10:57:54   作者:KEEPMA  
Maven 是一个项目管理和整合工具,通过对 目录结构和构建生命周期 的标准化, 使开发团队用极少的时间就能够自动完成工程的基础构建配置,本文介绍SpringBoot左脚进门之Maven管理家具体步骤,感兴趣的朋友一起看看吧

一、概念

Maven 是一个项目管理和整合工具。通过对 目录结构和构建生命周期 的标准化, 使开发团队用极少的时间就能够自动完成工程的基础构建配置。

Maven 简化了工程的构建过程,并对其标准化,提高了重用性。

Maven 本地仓库 (Local Repository):

  • 每个开发者的计算机上都有一个本地仓库,用于存储下载的依赖库。
  • 本地仓库通常位于用户的 ~/.m2/repository 目录下(在 Windows 上通常是 C:\Users<username>.m2\repository)。

Nexus 私服 (Private Repository):

  • Nexus 是一个流行的仓库管理工具,用于托管私有仓库。
  • 私有仓库可以存储企业内部的库,也可以作为中央仓库的缓存,提高下载速度。
  • 开发者通过 HTTP 访问 Nexus 私服,下载所需的依赖库。

Maven 中央仓库 (Central Repository):

  • Maven 中央仓库是公共的、开源的库仓库,包含了大量开源项目的库。
  • 开发者可以通过 HTTP 访问 Maven 中央仓库,下载开源库。

工作流程:

开发者的 Maven 项目:

  • 开发者在本地计算机上使用 Maven 管理项目。
  • Maven 项目通过 pom.xml 文件定义依赖关系。

依赖查找:

  • 当 Maven 需要下载一个依赖库时,它首先检查本地仓库。
  • 如果本地仓库中没有该库,则 Maven 会尝试从 Nexus 私服下载。
  • 如果 Nexus 私服中也没有该库,则 Maven 会从 Maven 中央仓库下载,并将该库缓存到本地仓库和 Nexus 私服中。

配置文件:

  • settings.xml 文件用于配置 Maven 的全局设置,包括镜像、服务器认证信息等。
  • pom.xml 文件用于定义项目的构建配置和依赖关系。

具体步骤:

  • 本地仓库检查:
  • Maven 首先检查本地仓库是否有所需的依赖库。
  • Nexus 私服检查:
  • 如果本地仓库中没有,Maven 会尝试从 Nexus 私服下载。
  • Maven 中央仓库检查:
  • 如果 Nexus 私服中也没有,Maven 会从 Maven 中央仓库下载,并将该库缓存到本地仓库和 Nexus 私服中。

二、Maven目录结构

根目录:工程名
|---src://源码
|---|---main: //存放主程序
|---|---|---java: //源码文件
|---|---|---resources: //存放框架的资源文件
|---|---test://存放测试程序
|---|---|---java: //java测试文件
|---|---|---resources: //java测试的资源文件
|---pom.xml://maven的核心配置文件
<project ...>
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.itranswarp.learnjava</groupId>
    <artifactId>hello</artifactId>
    <version>1.0</version>
    <packaging>jar</packaging>
    <properties>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
        <maven.compiler.release>17</maven.compiler.release>
    </properties>
    <dependencies>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-simple</artifactId>
            <version>2.0.16</version>
        </dependency>
    </dependencies>
</project>

三、仓库

Maven 仓库有两种类型:

  • 本地仓库(local):自己电脑上存储资源的仓库,通过连接远程仓库获取资源
  • 远程仓库(remote):非自己电脑上的仓库,为本地仓库提供资源
    • 中央仓库:Maven团队维护,存储所有资源的仓库
    • 私服:公司范围内存储资源的仓库,从中央仓库获取资源或自己的资源,仅对内部开放,不对外共享

本地仓库:

本地仓库说明:

Maven 本地仓库是机器上的一个文件夹,它在你第一次运行任何 maven 命令的时候创建。

Maven 本地仓库保存你的工程的所有依赖。当你运行一次 Maven 构建命令,Maven 会自动下载所有依赖的 jar 文件到本地仓库中。它避免了每次构建时都引用存放在远程机器上的依赖文件。

本地仓库存放位置

本地仓库默认被创建在 C:\Users\用户名.m2\ 目录下。要修改默认位置,在 %M2_HOME%\conf 目录中的 settings.xml 文件中定义另一个路径。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 
   http://maven.apache.org/xsd/settings-1.0.0.xsd">
      <localRepository>${user.home}/.m2/repository</localRepository>
</settings>

中央仓库:

Maven 中央仓库是由 Maven 社区提供的仓库。

//设置成功后,会从阿里的镜像库中获取依赖,不会从 Maven 中央仓库中获取依赖了。
<!--添加如下配置:设置阿里镜像库-->
<mirror>
    <id>ali</id>
    <name>ali Maven</name>
    <mirrorOf>*</mirrorOf>
    <url>https://maven.aliyun.com/repository/public/</url>
</mirror>

私服:

私服是一种在公司内部或局域网中使用的远程仓库。它通常由公司自己搭建,用于存储公司内部开发的库和插件,也可以从中央仓库或其他远程仓库获取依赖。私服可以加快公司内部项目的构建速度,同时也可以避免外部网络不稳定对项目构建的影响。

四、坐标和依赖

<dependency>
    <!--工程组的标识,它在一个组织或者项目中通常是唯一的,公司或域名倒序+项目名-->
    <groupId>mysql</groupId>
    <!--工程的名称,模块名-->
    <artifactId>mysql-connector-java</artifactId>
    <!--工程的版本号-->
    <version>8.0.31</version>
</dependency>
groupId:
    这是工程组的标识。它在一个组织或者项目中通常是唯一的。例如,一个银行组织 com.company.bank 拥有所有的和银行相关的项目。
artifactId:
    这是工程的标识。它通常是工程的名称。例如,消费者银行。groupId 和 artifactId 一起定义了 artifact 在仓库中的位置。
version:
    这是工程的版本号。在 artifact 的仓库中,它用来区分不同的版本。例如: com.company.bank:consumer-banking:1.0 com.company.bank:consumer-banking:1.1
<dependencies>
    <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>8.0.31</version>
        <!--scope标签代表指定依赖范围-->
        <scope>runtime</scope>
    </dependency>
</dependencies>
compile:
    默认值,适用于所有阶段(开发、测试、部署、运行),本jar会一直存在所有阶段;
runtime:
    只在运行时使用,如JDBC驱动,适用运行和测试阶段;
test:
    只在测试时使用,用于编译和运行测试代码,不会随项目发布;
provided:
    只在开发、测试阶段使用。

五、Maven生命周期命令

命令作用
mvn compile编译主程序 src/main
,生成target目录,存放编译主程序生成的字节码文件,输出到 target/classes
mvn test-compile编译测试程序 src/main
,生成target目录,存放编译主程序生成的字节码文件,输出到 target/classes
mvn test编写的测试代码并生成测试报告(目前对于后端开发没有太大作用)
mvn package将项目打成jar包
mvn clean清空项目本地编译目录
mvn install将项目 安装到本地仓库(多个项目相互依赖 相互使用时.)

这是最常用的生命周期,用于编译、测试、打包和部署项目。它的典型阶段包括:

  • validate:验证项目的正确性以及所有必要的信息是否可用。
  • compile:编译项目的源代码。
  • test:使用合适的单元测试框架(如 JUnit)运行测试,但不包含生成的测试代码。
  • package:将编译后的代码打包成可分发格式,如 JAR 或 WAR 文件。
  • verify:对集成测试的结果进行检查,确保质量标准得到满足。
  • install:将包安装到本地仓库,以便其他本地项目可以依赖它。
  • deploy:在集成或发布环境中完成,将最终的包复制到远程仓库中。

到此这篇关于SpringBoot左脚进门之Maven管理家具体步骤的文章就介绍到这了,更多相关SpringBoot Maven管理家内容请搜索脚本之家以前的文章或继续浏览下面的相关文章希望大家以后多多支持脚本之家!

相关文章

  • Spring Boot实现热部署的五种方式

    Spring Boot实现热部署的五种方式

    这篇文章主要介绍了Spring Boot 五种热部署方式,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-01-01
  • Spring 定时任务@Scheduled 注解中的 Cron 表达式详解

    Spring 定时任务@Scheduled 注解中的 Cron 表达式详解

    Cron 表达式是一种用于定义定时任务触发时间的字符串表示形式,它由七个字段组成,分别表示秒、分钟、小时、日期、月份、星期和年份,这篇文章主要介绍了Spring 定时任务@Scheduled 注解中的 Cron 表达式,需要的朋友可以参考下
    2023-07-07
  • spring 自动注入AutowiredAnnotationBeanPostProcessor源码解析

    spring 自动注入AutowiredAnnotationBeanPostProcessor源码解析

    这篇文章主要介绍了spring自动注入AutowiredAnnotationBeanPostProcessor源码解析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-03-03
  • 解决@PathVariable出现点号.时导致路径参数截断获取不全的问题

    解决@PathVariable出现点号.时导致路径参数截断获取不全的问题

    这篇文章主要介绍了解决@PathVariable出现点号.时导致路径参数截断获取不全的问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-08-08
  • Spring中获取Bean对象的三种注入方式与两种注入方法详解

    Spring中获取Bean对象的三种注入方式与两种注入方法详解

    平常的Java开发中程序员在某个类中需要依赖其它类的方法,下面这篇文章主要给大家介绍了关于Spring中获取Bean对象的三种注入方式与两种注入方法的相关资料,文中通过图文介绍的非常详细,需要的朋友可以参考下
    2023-03-03
  • 深入理解Java中@Accessors和@Builder

    深入理解Java中@Accessors和@Builder

    本文主要介绍了@Accessors和@Builder使用,区别与坑,对使用这两个注解的有一定的帮助,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • SpringCloud超详细讲解微服务网关Zuul

    SpringCloud超详细讲解微服务网关Zuul

    这篇文章主要介绍了SpringCloud Zuul微服务网关,负载均衡,熔断和限流,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-07-07
  • Java并发编程之Java内存模型

    Java并发编程之Java内存模型

    这篇文章主要为大家介绍了Java内存模型,具有一定的参考价值,感兴趣的小伙伴们可以参考一下,希望能够给你带来帮助,希望能够给你带来帮助
    2021-11-11
  • Java实战之课程在线学习系统的实现

    Java实战之课程在线学习系统的实现

    本文将采用SpringBoot+Spring+Mybatis+Thyeleaf实现一个课程在线学习系统,采用SpringBoot框架实现 前台模板用的thymeleaf数据库层采用mybatis框架注解模式,感兴趣的可以了解一下
    2022-04-04
  • IDEA 2021.2 激活教程及启动报错问题解决方法

    IDEA 2021.2 激活教程及启动报错问题解决方法

    这篇文章主要介绍了IDEA 2021.2 启动报错及激活教程,文章开头给大家介绍了idea2021最新激活方法,关于idea2021启动报错的问题小编也给大家介绍的非常详细,需要的朋友可以参考下
    2021-10-10

最新评论