【SSM】篇六:Maven进阶

有时候,不是因为你没有能力,也不是因为你缺少勇气,只是因为你付出的努力还太少,所以,成功便不会走向你。而你所需要做的,就是坚定你的梦想,你的目标,你的未来,然后以不达目的誓不罢休的那股劲,去付出你的努力,成功就会慢慢向你靠近。

导读:本篇文章讲解 【SSM】篇六:Maven进阶,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com,来源:原文

一、分模块开发

1、分模块开发的意义

在这里插入图片描述

将原始模块按照功能拆分为若干个子模块,方便模块间的相互调用,接口共享。

在这里插入图片描述

2、分模块开发与设计

将其中一部分功能抽出来,做成一个独立的模块,然后在使用方使用maven的依赖坐标去引用。

  • STEP1:创建Maven模块
    在这里插入图片描述
  • STEP2:书写模块代码,如product模块、gateway模块…,横向拆分还是纵向拆分自己定
  • STEP3:通过Maven的install指令安装模块到本地仓库,否则只导入依赖A的坐标,而依赖A在本地仓库并没有,则error
    在这里插入图片描述

二、Maven依赖

依赖即当前项目运行所需的jar包,一个项目可以设置多个依赖

1、依赖传递

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

2、依赖传递冲突

依赖传递途中,出现了两个不同版本的同一个jar包,优先级理论如下:

在这里插入图片描述

理解就行,工作时刷新右侧Maven,出来哪个自然就是哪个生效了。

整个依赖关系,除了点开看,也可以直接点这里:

在这里插入图片描述

3、可选依赖(不透明)

即,引用我的人看不到我是否用了这个依赖。不想让别人知道我用过这个资源,这样也可以避免一些依赖冲突的问题。

<dependency>
	...
	<optional>false</optional>
</dependency>

java001引用java002,本来可以看到2中引用了log4j:

在这里插入图片描述

被引用的2不想让别人知道引用了log4j,则加optional:

在这里插入图片描述

总结即:

  • 被引用方隐藏自己的某个依赖A,引用方视角中,看不到被引用方有没有用这个依赖。
  • 隐藏后的对应资源不再具有依赖传递性

4、排除依赖

即:主动断开依赖的资源,这时不用写版本,三坐标中的version不用

<exclusions>
   <exclusion>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
   </exclusion>
</exclusions>

可选依赖是我隐藏我自己的某个依赖,别人不知道我有没有用过它;排除依赖是我用了别人的东西,发现有一部分我不想要,需要去掉

三、Maven配置管理

1、继承和聚合

聚合:

问题:

当pojo模块更新,如删掉一个属性,如果其余模块未能同步更新,则会导致其余模块不可用。
在这里插入图片描述

引入一个聚合工程,来同步管理,实现已更新模块关联的模块的同步更新。

在这里插入图片描述

聚合工程开发步骤:
  • STEP1:创建Maven模块(空),设置打包类型为pom
    在这里插入图片描述
  • STEP2:在pom文件中设置当前聚合工程所包含的子模块的名称
    在这里插入图片描述
    在这里插入图片描述

继承:

问题:
在这里插入图片描述

继承:

继承描述的是两个工程间的关系,与Java中的继承相似,子工程可以继承父工程中的配置信息,常见于依赖关系的继承,优势是:

  • 简化配置
  • 减少版本冲突(大家用同一版本的配置,一改全改)
继承的实现步骤:
  • STEP1:创建Maven模块,设置打包类型为pom
    在这里插入图片描述

  • STEP2:在父工程的pom文件中配置公共的依赖关系,以便子工程以后继承沿用
    在这里插入图片描述

  • STEP3:在父工程的dependencyManagement标签中配置子工程可选的依赖
    在这里插入图片描述

  • STEP4:在子工程中用parent标签配置当前工程所继承的父工程
    在这里插入图片描述

  • STEP5:在子工程中配置使用父工程中可选依赖的坐标,注意不用版本坐标,版本又父工程统一提供,一避免冲突
    在这里插入图片描述


聚合和继承的对比整理:

在这里插入图片描述

2、属性和版本管理

属性:

问题:

需要更改依赖版本的时候,即使有了继承简化,一下改多个依赖的版本仍然容易漏掉,考虑通过引入一个变量来实现—–即属性。

在这里插入图片描述

属性的配置与使用
  • STEP1:在父工程的pom文件的properties标签中定义属性,如spring.version
    在这里插入图片描述

  • STEP2:使用dollar大括号引用属性,以后方便修改
    在这里插入图片描述

配置文件加载属性:

资源文件如jdbc.properties中如何引用pom文件中的属性?

  • STEP1:在pom.xml中定义属性
    在这里插入图片描述
  • STEP2:配置文件中使用dollar大括号引用属性
    在这里插入图片描述
  • STEP3:在pom文件中开启资源文件目录加载属性的过滤器,以便directory标签中的目录可以解析变量
    在这里插入图片描述
Maven打war包的时候,没有web.xml文件会报错,如何解决?
  • 思路1):创建个空的web.xml文件欺骗IDEA

  • 思路2):在(父)pom文件中加配置,忽略web.xml检查
    在这里插入图片描述


其余属性:

在这里插入图片描述


版本管理:

引入的依赖的版本号命名规则多样:

在这里插入图片描述

**关于版本号:**

在这里插入图片描述

3、多环境配置与应用

多环境开发:

maven提供配置多种环境的设定,帮助开发者在使用过程中快速切换环境

在这里插入图片描述
比如以上三个环境,打包的时候如何快速切换选定某一个来打包。

多环境开发步骤:
  • STEP1:在pom文件中,用profiles标签定义多个环境:env_dep、env_pro、env_test
    在这里插入图片描述
  • STEP2:使用多环境
    在这里插入图片描述
    在这里插入图片描述
    在这里插入图片描述

跳过测试:

问题场景:

  • 功能更新中,还没开发完毕,想临时打个包,此时测试不通过,则导致打包失败
  • 想快速打包,不想等测试
跳过测试的方法:
  • 方式一: 闪电图标,但这样所有的模块就都跳过了
    在这里插入图片描述

  • 方式二: 用指令
    在这里插入图片描述

  • 方式三: 在pom文件中,使用测试插件,进行细粒度控制
    在这里插入图片描述

四、Maven私服

在这里插入图片描述

  • 替代Maven团队提供的中央仓库,在团队内部使用的仓库
  • 私服是一台独立的服务器,用于解决团队内部的资源共享与资源同步问题

在这里插入图片描述

1、私服的安装与分类

  • 下载:
    在这里插入图片描述

  • 启动:
    在这里插入图片描述
    在这里插入图片描述

  • 分类:
    在这里插入图片描述
    在这里插入图片描述

2、本地仓库访问私服配置

IDEA和私服间进行资源的上传与下载,中间要通过本地仓库来打交道,因此需要配置本地仓库访问私服的配置。

在这里插入图片描述
修改本地仓库的setting文件内容,配置访问私服的参数:

  • 本地仓库访问私服权限设置:
    在这里插入图片描述
  • 本地仓库访问私服地址设置:
    在这里插入图片描述
    到此,本地仓库和私服接上头了。

3、私服资源的上传与下载

  • 工程需要上传到私服,需要修改工程的pom文件:

在这里插入图片描述

  • 配置完成后,发布使用mvn deploy
  • 配置私服访问中央仓库,如改为阿里云的中央服务器:
    在这里插入图片描述

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/146077.html

(0)
飞熊的头像飞熊bm

相关推荐

发表回复

登录后才能评论
极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!