【框架】Maven

学习目标

  1. 理解分模块开发的意义
  2. 能够使用聚合工程快速构建项目
  3. 能够使用继承简化项目配置
  4. 能够根据需求配置生产、开发、测试环境,并在各环境间切换运行

分模块开发与设计

分模块开发步骤

  1. 创建Maven模块
  2. 书写模块代码
  3. maven模块依赖
    image
  4. 通过maven指令安装模块到本地仓库 (install指令)
    image

依赖管理

直接依赖和间接依赖(依赖的依赖)(具有传递性:工程可以使用间接依赖)
image
当两个依赖有共同的直接依赖,会产生冲突 → 依赖传递冲突问题

依赖传递冲突

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

依赖关系图

image
image

可选依赖与排除依赖

可选依赖

可选依赖是隐藏当前工程依赖的资源,隐藏后对应资源将不具有依赖传递性——不透明
理解:就是不想让开发人员看见使用依赖的间接依赖

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
			<!--设置依赖可选-->
            <optional>true</optional>
        </dependency>

排除依赖

排除依赖指主动断开依赖的资源,被排除的资源无需指定版本——不需要
理解:使用该依赖但不使用该依赖中的某个间接依赖

        <dependency>
            <groupId>org.springframework</groupId>
            <artifactId>spring-webmvc</artifactId>
            <version>5.2.10.RELEASE</version>
            <exclusions>
                <exclusion>
                    <groupId>org.apache.servicemix.bundles</groupId>
                    <artifactId>org.apache.servicemix.bundles.spring-aop</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

聚合与继承

聚合

问题:多个模块依赖某个模块时,被依赖的模块被改动后,其他模块会受影响
image
解决:因此可以单独建立一个管理模块
image
image

实操

1.管理模块打包方式:pom

工程 默认打包方式
默认 jar
Web war
管理模块 pom
2.设置管理的模块列表
    <modules>
        <module>../maeven_02_ssm</module>
        <module>../maeven_03_pojo</module>
        <module>../maeven_04_dao</module>
    </modules>

继承

  • 概念:继承描述的时两个工程间的关系,与java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承
  • 作用:
    • 简化配置
    • 减少版本冲突

步骤

image
image
image
image
image

聚合和继承的区别

  • 作用
    • 聚合用于快速构建项目
    • 继承用于快速配置
  • 相同点
    • 聚合与继承的pom.xml文件打包方式均为pom,可以将两种关系制作到同一个pom.xml文件中
    • 聚合与继承均属于设计型模块,并无实际的模块内容
  • 不同点
    • 聚合是在当前模块中配置关系,聚合可以感知到参与聚合的模块有哪些
    • 继承是在子模块配置关系,父模块无法感知哪些子模块继承了自己

属性管理

属性(就是变量,统一某些依赖的相同版本)

image
image

配置文件加载属性(便于集中配置,把配置文件如jdbc.properties也在pom.xml中管理)

步骤

image

image

image

<!--工程内所有子工程所在的指定包-->
<directory>${project.basedir}/src/main/resoreces</directory>
<!--就是为了能够识别${},${basedir}工程内置的系统属性-->
<filterubf>true</filterubf>

image

其他属性

image

image

查看一些系统属性

  1. 命令提示符 到 maven安装路径下 (...\bin)
  2. mvn help:system

版本管理

MVN官网 需要VPN
https://mvnrepository.com/

image

多环境配置

多环境开发

image
image

image

  • image

跳过测试

应用场景:

  • 部分模块没有开发完全 需要跳过测试 准备上线
  • 快速打包
  • ...

方法

  1. 全部跳过
    image
  2. 指定
    image
    image

私服

简介

image
image
https://help.sonatype.com/repomanager3/product-information/download

下载有点慢,这里有百度网盘的链接
链接:https://pan.baidu.com/s/1KY-2t889vz8ifaPjvTvnKA
提取码:1234

Nexus的使用

image

开启流程

  1. 位置D:\Nexus\latest-win64\nexus-3.20.1-01\bin
  2. 路径区域 输入cmd回车
    image
  3. 输入nexus.exe /run nexus,回车
    image
  4. 浏览器搜索http://localhost:8081
  5. 右上角Sign up登录
  6. 用户名 admin(默认的) 密码 根据提示找到Nexus\latest-win64\sonatype-work\nexus3下的admin.password文件,查看密码,Sign up
  7. Next
  8. 设置新密码,Next
  9. 勾选 Enable anonymous access(允许匿名访问),Next
  10. finish

使用界面

image

私服仓库分类

私服操作流程分析

image

私服仓库分类

image

资源上传与下载

image

访问私服配置(本地仓库访问私服)

  • 配置本地仓库访问私服的权限(maven路径下conf文件夹中的setting.xml)
    image
    <servers>
        <server>
            <id>heima-release</id>
            <username>admin</username>
            <password>admin</password>
        </server>
        <server>
            <id>heima-snapshots</id>
            <username>admin</username>
            <password>admin</password>
        </server>
    </servers>

其中
id私服中的服务器id名称 暂时还不知道

获取私服中服务器id

  1. 查看仓库
    image
  2. 创建两个仓库
    image
  • 第一个仓库 snapshot
    image
    image
    image
  • 第二个仓库 release
    image
    image
    image

image
image

  • 配置本地仓库资源来源(setting.xml)
  1. 找到mirrors标签
  2. name标签可以不用写
  3. id,仓库组id
    image
    image
  4. mirrorOf,直接写*,表示所有东西
  5. url
    image
  6. 配置结果
    image
    <mirrors>
        <mirror>
            <id>nexus-heima</id>
            <mirrorOf>*</mirrorOf>
            <url>http://localhost:8081/repository/maven-public/</url>
        </mirror>
    </mirrors>

访问私服配置(项目工程访问私服,idea,管理模块的pom.xml中)

  • 配置当前项目访问私服上传资源的保存位置(pom.xml)
    <distributionManagement>
		<!--正式版仓库-->
        <repository>
            <id>heima-release</id>
            <url>http://localhost:8081/repository/heima-release/</url>
        </repository>
		<!--临时版仓库-->
        <snapshotRepository>
            <id>heima-snapshots</id>
            <url>http://localhost:8081/repository/heima-snapshots/</url>
        </snapshotRepository>
    </distributionManagement>
  • 发布资源到私服命令
	mvn deploy

install和deploy区别
image

发布的版本,都会留下来,不会主动删除

配置从阿里镜像过来

image
image

posted @ 2022-10-13 22:30  沫漓fighting  阅读(52)  评论(0)    收藏  举报