Maven基础知识

Maven基础概念

仓库

  • 仓库:用于存储资源,包含各种jar包

中间环节添加一个私服,用来避免多人同时调取同一个资源,国外仓库的传输速度过慢且二次传输的问题。通过私服局域网传输速度会加快很多。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tsNVvqs2-1645754953835)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113095819904.png)]

  • 仓库分类:

    • 本地仓库:自己电脑上存储资源的仓库,连接远程仓库获取资源

    • 远程仓库:非本机电脑上的仓库,为本地仓库提供资源

      • 中央仓库:MAVEN团队维护,存储所有资源的仓库
      • 私服:部门/公司范围内存储资源的仓库,从中央仓库获取资源
  • 私服的作用:

    • 保存具有版权的资源,包含购买或自主研发的jar

      • 中央仓库中的jar都是开源的,不能存储具有版权的资源
    • 一定范围内共享资源,仅对内部开放,不对外共享

小节

  • 仓库的概念与作用
  • 仓库的分类
    • 本地仓库
    • 远程仓库
      • 中央仓库
      • 私服

坐标

  • 什么是坐标?

    ​ Maven中的坐标用于描述仓库中资源的位置

    ​ https://repo1.maven.org/maven2/

  • Maven坐标主要组成

    ​ groupid:定义当前Maven项目隶属组织名称(通常是域名反写,例如:org.mybatis)

    ​ artifactId:定义当前Maven项目名称(通常是模块名称,例如CRM、SMS)

    ​ version:定义当前项目版本号

    ​ packaging:定义该项目的打包方式

  • Maven坐标的作用

    ​ 使用唯一标识,唯一性定位资源位置,通过该标识可以将资源的识别与下载工作交友

小节

  • 坐标的概念与作用
  • 坐标的组成
    • 组织ID
    • 项目ID
    • 版本号

仓库配置(settings.xml)

  • Maven启动后,会自动保存下载的资源到本地仓库

    • 默认位置

      Default: ${user.home}/.m2/repository

      当前目录位置为登录用户名所在目录下的.m2文件夹中

    • 自定义位置

      E:\maven_cangku\repository

      当前目录位置为D:\maven\repository文件夹中

    • 远程仓库配置

      • Maven默认连接的仓库位置

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UWJFKfX1-1645754953836)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113103824661.png)]

    • 镜像仓库配置

      • 在setting文件中配置阿里云镜像仓库

        [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-D5dRdfcI-1645754953836)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113103932833.png)]

具体配置如下图所示

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DtjjzWIb-1645754953837)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113104014704.png)]

全局Setting与用户setting区别

  • 全局setting定义了当前计算器中Maven的公共配置
  • 用户setting定义了当前用户的配置

小节

  • 配置本地仓库(资源下到哪)
  • 配置阿里镜像仓库(资源从哪来)
  • setting文件的区别

第一个Maven项目(手工制作)

mvn archetype:generate -DgroupId=com.ahao -DartifactId=java-project -DarchetypeArtifactId=maven-archetype-quickstart -Dversion=0.0.1-snapshot -DinteractiveMode=false

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cF4Q85pf-1645754953838)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113202331979.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-HfXS9cWd-1645754953839)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113201802802.png)]

小节

  • 插件创建Maven工程
  • Maven web工程目录结构

第一个Maven项目(IDEA生成)

配置maven环境,支持3.6.1版本

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ztFV6Lr8-1645754953839)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213202449.png)]

点击

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-76jiyWJH-1645754953840)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213320808.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-BAZCjubh-1645754953841)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213402748.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5PjOnCaQ-1645754953842)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213427224.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L2V09aKL-1645754953842)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213455435.png)]

一路到底,就生成了,分别赋予不同的属性,并在test中添加resources

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Hkrrcycg-1645754953843)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213553526.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sL32fyQ9-1645754953844)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213630086.png)]

赋予test resources属性

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MFFRxray-1645754953845)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213715478.png)]

然后可以点击下图所示的位置,可看到编译等方法。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7Dj5vQV3-1645754953848)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213815734.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OrSBsOHN-1645754953848)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113213855264.png)]

在xml文件中,添加如下内容后需要在maven中点击刷新按钮

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-7y4F7mjH-1645754953849)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113214034855.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-p9iTaqfc-1645754953849)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113214116224.png)]

**另外一个方法:**点击编辑配置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-nGgLBWyl-1645754953850)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113214251017.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kPZNnoQ6-1645754953851)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113214420584.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-L5Ljvw4E-1645754953851)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220113214435073.png)]

小节

  • Maven环境配置
  • Maven项目创建
  • Maven命令执行

另外一种方式生成:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-8rM6Kdgt-1645754953852)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114102359111.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-KJLyfAu6-1645754953852)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114102418023.png)]

点击对勾,并搜索quick,随后起名字,如com.ahao java01,然后一路next

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ol56Yxj3-1645754953853)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114102456336.png)]

之后按照同样的方式添加resources包。并赋予属性(不同的颜色包)。

tomcat插件安装与web工程启动

按照这个顺序弄好web项目

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ubBkqZQE-1645754953854)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114110148367.png)]

配置xml文件

在build中加入tomcat包,需要去maven仓库找

Maven Repository: org.apache.tomcat.maven » tomcat7-maven-plugin » 2.1 (mvnrepository.com)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-60WIIgNL-1645754953854)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114110352075.png)]

复制到xml中

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>

  <groupId>com.ahao</groupId>
  <artifactId>web01</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>war</packaging>

  <name>web01 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>

  <dependencies>

  </dependencies>

  <!--构建-->
  <build>
      <!--设置插件-->
      <plugins>
          <!--具体的插件配置-->
          <plugin>
              <groupId>org.apache.tomcat.maven</groupId>
              <artifactId>tomcat7-maven-plugin</artifactId>
              <version>2.1</version>
          </plugin>
      </plugins>
  </build>
</project>

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-kZlQHqmB-1645754953855)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114110506620.png)]

另外一种方式就是在编辑配置中,添加maven,后输入tomcat7:run

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-LYssW5E7-1645754953855)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114105504653.png)]

所有的说明:配置

<?xml version="1.0" encoding="UTF-8"?>

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <!--指定pom的模型版本-->
  <modelVersion>4.0.0</modelVersion>
    <!--组织id-->
  <groupId>com.ahao</groupId>
    <!--项目id-->
  <artifactId>web01</artifactId>
    <!--版本号:release,shapshot-->
  <version>1.0-SNAPSHOT</version>
    <!--打包方式,web工程打包为war,jave工程打包为jar-->
  <packaging>war</packaging>

  <name>web01 Maven Webapp</name>
  <!-- FIXME change it to the project's website -->
  <url>http://www.example.com</url>

  <properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <maven.compiler.source>1.7</maven.compiler.source>
    <maven.compiler.target>1.7</maven.compiler.target>
  </properties>
    <!--设置当前工程的所有依赖-->
  <dependencies>
      <!--具体的依赖-->
      <dependency>
          <groupId>junit</groupId>
          <artifactId>junit</artifactId>
      </dependency>
  </dependencies>

  <!--构建-->
  <build>
      <!--设置插件-->
      <plugins>
          <!--具体的插件配置-->
          <plugin>
              <groupId>org.apache.tomcat.maven</groupId>
              <artifactId>tomcat7-maven-plugin</artifactId>
              <version>2.1</version>
          </plugin>
      </plugins>
  </build>
</project>

依赖管理

依赖配置

  • 依赖指当前项目运行所需的jar,一个项目可以设置多个依赖
  • 格式:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ub44DUjo-1645754953856)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114135202006.png)]

依赖传递

  • 依赖具有传递性
    • 直接依赖:在当前项目中通过依赖配置建立的依赖关系
    • 间接依赖:被资源的资源如果依赖其他资源,当前项目间接依赖其他资源

说白了就是,引用其他人使用的工程后,会继承他人所依赖的某些jar包。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pWF6NYcn-1645754953856)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114135938580.png)]

依赖传递冲突问题

  • 路径优先:当依赖中出现相同的资源时,层级越深,优先级越低,层级越浅,优先级越高
  • 声明优先:当资源在相同层级被依赖时,配置顺序靠前的覆盖配置顺序靠后的
  • 特殊优先:当同级配置了相同资源的不同版本,后配置的覆盖先配置的

可选依赖

可选依赖指对外隐藏当前所依赖的资源–不透明,通过optional设置

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OWjwA6vF-1645754953857)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114141039135.png)]

排除依赖

  • 排除依赖指主动断开依赖的资源,被排除的资源无需指定版本–不需要

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-w7kyBE4E-1645754953857)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114141400475.png)]

小节

  • 依赖管理
  • 依赖传递
  • 可选依赖(不透明)
  • 排除依赖(不需要)

依赖范围

  • 依赖的jar默认情况可以在任何地方使用,可以通过scope标签设定其作用范围
  • 作用范围
    • 主程序范围有效(main文件夹范围内)
    • 测试程序范围有效(test文件夹范围内)
    • 是否参与打包(package指令范围内)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-k6Si7D97-1645754953858)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114141946134.png)]

使用方法:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yzAw64Jo-1645754953858)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114142056010.png)]

依赖范围传递性

  • 带有依赖范围的资源在进行传递时,作用范围将受到影响

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-bxRhV51V-1645754953858)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114142333496.png)]

小节

  • 依赖范围
  • 依赖范围传递性(了解)

生命周期与插件

项目构建生命周期

  • Maven构建生命周期描述的是一次构建过程经历了多少个事件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-DkWrynHR-1645754953859)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114142707607.png)]

  • Maven对项目构建的生命周期划分为3套
    • clean:清理工作
    • default:核心工作,例如编译,测试,打包,部署等
    • site:产生报告,发布站点等

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JZl7LdMO-1645754953860)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114142935431.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-fNpLMoSn-1645754953860)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114142951009.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Uk7OFOHn-1645754953861)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114143004603.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-JR7HzhdO-1645754953861)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114143136920.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Fop46g44-1645754953862)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114143800267.png)]

插件位置:Maven – Available Plugins (apache.org)

类型有jar、test-jar

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-20WIlN0P-1645754953862)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114144030586.png)]

小节

  • 生命周期
  • 插件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0NtoJEbx-1645754953863)(C:\Users\54546\AppData\Roaming\Typora\typora-user-images\image-20220114144321401.png)]

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值