Maven

95 阅读2分钟

分模块开发的意义

将原始模块按功能拆分成若干子模块, 方便模块之间相互调用,接口共享

分模块开发与设计

分离模块 1 首先创建maven模块

1655632995(1).png

2 书写代码 1655633261(1).png 3 把模块install到本地仓库

1655633882(1).png

依赖传递

依赖的依赖

1655633987(1).png 依赖具有传递性 可以直接使用依赖的依赖
问题:依赖冲突 当依赖的依赖 依赖不同版本的包时 如何解决冲突问题?

1655635232(1).png 通过idea直观的看maven 然后根据之前的规则把依赖调好就ok了

85d89a5f8b7cd405c9b526c3b4f18a2.png

可选依赖和排除依赖

可选依赖(自己控制自己)

1655637446(1).png

1655642646(1).png 排除依赖 (排除别人的依赖)

1655642576(1).png

1655642673(1).png

聚合与继承

聚合

1655643996(1).png

创建一个用来管理其他工程的工程 1655644669(1).png

继承

使用后大部分通用包写在总工程中,其他的模块只导入相关的内容就行 1655645120(1).png

1655645214(1).png

可选择的继承
部分人使用,不是大家公用的 1655691710(1).png 子类自行进行调用,不要加版本 ,版本自动跟随父版本

1655691921(1).png

实现步骤

1a41e25fd31916bd530fe8149391423.png

1655690966(1).png

1655691007(1).png

1655691027(1).png

1655691053(1).png

属性

方便批量修改 1655692250(1).png 定义属性

1655692358(1).png

使用

1655694739(1).png

配置文件加载属性

使用pom文件控制配置文件 1655695352(1).png 因为子代都继承了主工程,所以路径就自动匹配上了{}路径就自动匹配上了 {project.basedir}内置的系统属性 1655696386(1).png 打war包时 如果项目WEB-INF没有web.xml则会报错
使用插件解决 1655696649(1).png

1655697113(1).png

版本管理

1655697909(1).png

多环境

  • 项目需要在多环境下跑 1655705567.png

  • 实现 1655706362(1).png

  • 使用环境

  • 默认使用默认环境 1655707158(1).png

跳过测试

867860445203e599b18e32dc5680c82.png idea给的方法 但是只要选了就跳过全部test 1655707325(1).png

指定跳过某些方法

  • 等同于闪电符号 1655707493(1).png
  • 细粒度管理 1655707802(1).png

1655708243(1).png

私服

用于解决团队内部的资源共享和资源同步 模拟一台中央服务器 1655708393(1).png

启动私服

  • 启动服务器 1655780743(1).png
  • 使用 localhost:8081 账号是admin 1655781248(1).png

1655781435(1).png

私服仓库分类

  • 私服资源操作流程 中央仓库 私服 仓库组 1655782289(1).png

1655782859(1).png

本地仓库访问支援配置

资源上传和下载

1655783923(1).png

配置本地仓库对私服的访问权限

在setting中

  • 1655785262(1).png
<server>
      <id>私服中的服务器id名称</id>
      <username>repouser</username>
      <password>repopwd</password>
 </server>

配置私服的访问路径

找仓库组

1655786008(1).png

1655786121(1).png

1655786210(1).png

<mirror>
      <id>maven-public</id>
      <mirrorOf>*</mirrorOf>
      <url>http://localhost:8081/repository/maven-public/</url>
</mirror>

私服资源的上传与下载

1655786619(1).png 使用deploy指令发布 要保证子模块都继承主模块或者自己写dietributionManagement