01-16Maven-SpringBoot入门

  • Maven继承
  • Maven高级
  • Spring
  • SpringBoot入门

Maven

一、概念及功能

概念:Maven是Apache软件基金会组织维护的一款专门为Java项目提供项目构建和依赖管理的工具

1.1作用:

  1. 项目构建

构建:是一个将代码从开发阶段到生产阶段的一个过程:清理,编译,测试,打包,安装,部署等

  • 清理:清除上一次的构建结果
  • 编译:将.java文件编译成.class文件
  • 测试:运行编写单元测试程序
  • 报告:针对刚才的测试结果生成全面的信息
  • 打包
    • Java工程:jar包
    • Web工程:war包
  • 安装:将当前项目打包之后安装到本地仓库中
  • 发布:将项目发布到服务器上进行运行
  1. 依赖管理
  • Jar包下载:使用Maven之后,Jar包的下载统一都是从Maven远程仓库中进行下载,Maven会管理所有已经上传的Jar包依赖
  • Jar包依赖:Jar包本身是一个项目,项目也会依赖于其他Jar包,使用Maven只需要导入最核心的Jar包,其他依赖包会自动加载
  • jar包冲突
    • Jar包与依赖包之间版本已经搭配好,最大可能的减少了依赖版本冲突问题
    • Jar包与Jar包之间依赖冲突了,那么可以通过对Jar包进行调整,从而解决依赖冲突问题
  1. 契约编程
  • 约定大于配置,配置大于编码

1.2Maven工作流程

注意:Maven连接远程仓库是需要联网的,如果没有网络那么会构建失败,构建失败后会生成一个后缀lastUpdated的文件

1.首先会向Maven的本地仓库请求资源

2.如果有就直接引用,如果没有就会到远程仓库下载到本地仓库

二、Maven安装

1.官网下载压缩包

2.必须解压到没有空格、中文目录、特殊字符的目录,不建议放在C盘

3.配置环境变量

  • 系统变量中点新建系统变量 变量名:MAVEN_HOME 变量值:解压后的文件夹的路径
  • 系统变量中找到path,双击后,新建,输入%MAVEN_HOME%bin

4.mvn-v 测试是否成功安装

三、Maven仓库

3.1分为两大类:

  • 本地仓库

计算机中的一个文件夹,位置需要我们通过conf中的settings.xml进行指定(在localRepository下写一对双标签,其中写路径),不写默认的本地仓库在C:/用户/当前用户/.m2/repository

  • 远程仓库
    • 中央仓库(Maven的默认远程仓库,在国外,下载会比较慢)
    • 私服仓库(类似于中央仓库,用于存放Jar包)
      • 镜像仓库(国内免费搭建了中央仓库的镜像仓库,如阿里云镜像仓库)
      • 公司私服仓库(公司内部封装的一些自己的公共Jar包供所有团队使用)

3.2jar包查找流程

1.当工程需要某个依赖的jar包时,首先会去当前电脑的本地仓库中根据gav坐标查找jar包

  • 如果找到了,就直接引用本地仓库的jar包或依赖包
  • 如果没有找到就会去连网去远程仓库下载

2.默认远程仓库是Mavan的中央仓库,下载速度慢,有些jar包可能下载不下来。所以一般会配置一个镜像仓库

3.从远程仓库下载的jar包会下载到本地仓库缓存,然后将本地仓库jar包引用到项目中使用(下载一次,永久使用)

四、Maven配置

1.创建本地仓库文件夹

2.修改settings.xml配置文件中的本地仓库地址(localRepository下写一对双标签,其中写路径)

3.配置阿里云镜像

<mirror>
  <id>nexus-aliyun</id>
  <name>Nexus aliyun</name>
  <url>http://maven.aliyun.com/nexus/content/groups/public/</url>
  <mirrorOf>central</mirrorOf>
</mirror>

4.更改JDK版本(默认Java工程是使用的JDK1.5)

<profile>
  <!-- 告诉maven我们用jdk17 -->
  <id>jdk-17</id>
  <!-- 开启JDK的使用 -->
  <activation>
      <activeByDefault>true</activeByDefault>
      <jdk>17</jdk>
  </activation>
  <properties>
      <!-- 配置编译器信息 -->
      <maven.compiler.source>17</maven.compiler.source>
      <maven.compiler.target>17</maven.compiler.target>
      <maven.compiler.compilerVersion>17</maven.compiler.compilerVersion>
  </properties>
</profile>

五、Maven坐标

组成:

  • groupId:当前Maven项目隶属于组织名称,通常都是公司域名反写,例如:cn.itsource
  • artifactId:项目或者是项目中的一个模块的名称
  • version:当前Maven项目版本号,根据需求进行设定
    • SNAPSHOT:快照版本,正在迭代过程中,不稳定的版本
    • RELEASE:释放,表示正式版本,稳定版本

六、Maven命令

**mvn compile: ** 编译 - 将java源文件.java 编译成 字节码文件.class

mvn clean: 清理 - 将编译好的字节码文件删除掉

**mvn clean compile:**清理+编译

**mvn test: ** 测试 - 运行测试代码,测试代码编译在target的test-classes中

​ 注意:src/test/java中的所有测试类的所有方法都会自动运行,但是测试类的类名有要求:TestXxx 或 XxxTest

mvn package: 打包【.class字节码文件】

mvn source:jar: 打源码包【.java文件】

mvn install: 安装 - 将项目打包然后将jar包安装到本地仓库中

**mvn package -Dmaven.test.skip=true:**打包的时候跳过测试类

七、IDEA导入Maven项目

第一步:点击Open

第二步:找到要导入的Maven工程

第三步:会提示让选择是否在当前窗口打开,还是新开一个IDEA创建打开导入的工程

第四步:测试导入的Maven项目

八、 IDEA创建Maven项目

8.1项目的创建

第一步:打开IDEA点击创建工程

第二步:选择Maven工程,输入相关信息,点击Create进行创建

第三步:Maven工程创建成功

8.2Maven配置

第一步:点击右侧Maven按钮,Maven Settings

第二步:配置Maven

第三步:配置创建新工程时的Maven配置,这样以后创建的Maven工程就默认使用此Maven配置了

8.3测试Maven项目

第一步:引入Junit依赖,在IDEA中修改了pom.xml一定要记得刷新Maven才会生效

第二步:在域名包下创建一个类

第三步:在测试包下创建测试类

8.4. IDEA执行Maven命令

九、依赖补充

9.1. 依赖传递

概念:Maven中依赖是具有传递性的)

查看依赖关系

好处:Maven具有依赖的传递性对我们来说是非常大的一个好处,因为这样就避免我们需要去自己引入间接依赖。

9.2. 依赖排除

场景:有时候我们在引入多个依赖时,间接依赖的版本不一致会导致依赖冲突,那么此时我们就需要阻断依赖。

	<dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
        <!--排除依赖标签,可以写多个-->
        <exclusions>
            <!--排除依赖标签,写具体要排除那个依赖,只需要写GA坐标即可-->
            <exclusion>
                <!--要排除依赖的G坐标-->
                <groupId>org.hamcrest</groupId>
                <!--要排除依赖的A坐标-->
                <artifactId>hamcrest-core</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

9.3. 依赖范围

概念:在Maven中依赖是具有作用范围的,默认情况下依赖的Jar包在任何地方都可以使用,我们可以通过…进行依赖作用范围的指定:

  • 主程序范围有效:main文件夹范围内
  • 测试程序范围有效:test文件夹范围内
  • 是否参与打包运行:package指令范围内

scope的取值范围

scope值主程序测试程序打包/运行
compile–默认YYY
testNYN
providedYYN
runtime-YY

9.4. 清理Maven仓库

注意:如果依赖下载失败,Maven识别到以lastUpdated结尾的文件后就不会再重新帮你下载,需要你删除这些以lastUpdated结尾的文件,然后Maven才会再次自动下载这些Jar包,以后实际开发中如果项目引入了某Jar包刷新后依赖依然报错,那么就需要检查一下此Jar包是否下载成功

解决方案:

第一步:在桌面创建一个del_lastUpdated.bat文件,创建文本改后缀即可 (文件名可以改,后缀必须是.bat)

第二步:右键编辑bat文件,拷贝以下命令并修改本地仓库文件夹绝对地址

set REPOSITORY_PATH=本地仓库文件夹绝对地址
rem 正在搜索...
del /s /q %REPOSITORY_PATH%\*.lastUpdated
rem 搜索完毕
pause

第三步:双击执行脚本,即可清除本地仓库下所有lastUpdated文件

Maven高级

一、继承

概念:本质上Maven的继承就是pom.xml配置的继承

  • A工程继承了B工程,那么A工程就继承了B工程的pom.xml所有配置
  • Maven继承的层级是没有限制的,大型互联网项目中层级会非常多,我们只需要按照规则去梳理层级即可

1.1. 为什么需要继承

原因一:真实开发中,依赖动则几十上百个依赖,那么这些依赖的版本管理是非常复杂的,为了方便版本管理,那么可以在父工程中统一管理版本信息。子工程直接使用对应版本即可,SpringBoot框架就是使用了Maven继承手段进行开发简化

原因二:真实开发中,一个项目会有很多个子工程,这些子工程都有自己的依赖,那么肯定会有一些重复的依赖,为了减少子工程重复导如依赖坐标信息,可以放在父工程中进行依赖抽取,子工程通过继承的方式进行依赖的引入

1.2. 搭建Maven继承工程

第一步:创建一个Maven工程

第二步

  • 删除父工程下的src文件夹,因为父工程只负责管理pom.xml,不负责编写代码,所以不需要src文件
  • 修改打包方式为pom,只有打包方式为pom的工程,才能管理其他Maven工程

第三步:创建子工程/Maven模块

1.3. 父子工程解析

  • 子工程创建好之后,会自动生成parent标签,指向父工程的GAV坐标
  • 子工程是不需要写GV坐标的,因为继承自父工程,子工程只需要提供A坐标即可
  • 父工程中有子工程后会自动生成modules标签,代表聚合配置

1.4. 父工程管理依赖

第一步:父工程管理依赖

  • dependencyManagement:此标签用于在父工程中管理依赖,但是不负责引入此依赖到工程中,子工程需要使用什么依赖还是需要在自己的子工程中手动引入,只是不需要引入版本了,版本来自父工程

注意:子工程记住一定要自己引入依赖,否则无法使用其内容

1.5. 配置自定义属性

场景:父工程在真实开发中会管理众多的依赖,那么这些依赖的版本号如果都写在各自的GAV坐标中其实管理起来也颇为复杂,所以我们可以自定义属性进行管理

  • properties:此标签是配置标签,我们可以在标签内自定义标签来定义属性值,此属性值可以被引用

    • itsource.junit.version:此标签是自定义的,标签名称就是属性引用名称,标签的值就是版本值
  • ${}:通过此方式可以引入自定义属性,大括号中的值就是自定义标签的值

二、 聚合

2.1. 什么是聚合

概念:在父pom.xml中的modules标签就是聚合标签,他表示了此工程由哪些模块组成,modules下的module也代表了此父工程管理了哪些子模块

优点:

好处一:我们可以直接对父工程执行mvn install,那么整个工程就自动打包好了

好处二:配置聚合之后,各个子模块在父工程中展示一个列表,可以快速让我们知道整个项目的继承结构

Spring概述

  1. Java企业级开发的发展史
  • JavaEE/J2EE时代

    复杂性和繁琐的配置,存在一些限制和挑战

  • Spring时代

    Spring框架引入了依赖注入(DI)和面向切面编程(AOP)等新概念,以减少组件之间的耦合度、提高代码的可维护性和可测试性

    Spring通过IoC容器(控制反转容器)来管理对象之间的依赖关系,不用new对象了,并提供了许多其他功能模块,如数据访问、事务管理、安全性等,使开发者能够更专注于业务逻辑的实现

    需要配置繁琐

  • SpringBoot时代

约定大于配置的原则,通过自动配置和默认值设置,减少了繁琐的配置工作

SpringBoot入门

实现步骤

第一步:使用SpringBoot骨架搭建SpringBoot项目

第二步:

  • SpringBoot依赖有很多版本,我们学习使用SpringBoot-2.6.13,如果改不了就去pom.xm里面改
  • 勾选初始化依赖,SpringBoot项目必须需要Web依赖,所以我们需要勾选Web依赖。其他依赖在以后项目使用中根据实际需要进行勾选

第三步:Springboot创建需要联网下载资源,等待构建完成即可

第四步:使用SpringBoot骨架进行创建会默认生成一些我们暂时使用不到的文件,为了项目简洁我们删除即可

第五步:创建请求处理类

  • 请求处理类:专门用来接收前端发起到后端的请求

  • 存储规范:请求处理类按照规范必须放入到controller包下

  • 第六步:运行SpringBoot项目

    • SpringBoot项目中定义了一个启动类,运行这个启动类可以把整个SpringBoot项目运行起来
  • 第七步:浏览器访问

    输入localhost:8080/hello 可以到配置文件里面更改默认端口号

1. 运行启动类启动项目,SpringBoot内置Tomcat,启动成功会看到控制台的默认端口号8080
2. 当在地址栏输入http://localhost:8080/hello时,浏览器访问的就是当前项目
3. 然后是用/hello去匹配我们的控制器Controller,即匹配注解@RequestMapping请求映射注解
4. 匹配上之后就会自动执行hello方法中的内容
  1. Mavanjar包查找流程 先在本地仓库查找,没有就去远程仓库下载后存在本地仓库
  2. Maven的安装之后需要配置哪些内容,为什么要配置 阿里云镜像 速度快 JDK的版本,默认是jdk1.5的 本地仓库的位置,防止对c盘占用过多
  3. Maven常见命令分别有哪些,有什么作用 compile编译 test测试 package打成jar包
  4. Maven继承和聚合的好处 继承,方便管理坐标,避免子工程重复导入相同的依赖 聚合,方便统一打包,管理
  5. SpringBoot是什么?有什么优势 框架,简化开发,约定大于配置,很多东西不用手动配置了
  6. SpringBoot入门项目的编写流程步骤有哪些 新建SpringBoot项目 删除不必要的东西 main下建一个controller的包 其中写请求处理类
    自动执行hello方法中的内容







> 1. Mavanjar包查找流程 先在本地仓库查找,没有就去远程仓库下载后存在本地仓库
> 2. Maven的安装之后需要配置哪些内容,为什么要配置  阿里云镜像 速度快  JDK的版本,默认是jdk1.5的  本地仓库的位置,防止对c盘占用过多
> 3. Maven常见命令分别有哪些,有什么作用 compile编译 test测试 package打成jar包  
> 4. Maven继承和聚合的好处    继承,方便管理坐标,避免子工程重复导入相同的依赖   聚合,方便统一打包,管理
> 5. SpringBoot是什么?有什么优势  框架,简化开发,约定大于配置,很多东西不用手动配置了
> 6. SpringBoot入门项目的编写流程步骤有哪些  新建SpringBoot项目 删除不必要的东西 main下建一个controller的包 其中写请求处理类
  • 21
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Zyangxsir

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值