Maven进阶

Maven进阶

之前我们学了如何创建使用maven以及其依赖管理和生命周期,首先我们先回顾下重点知识

image-20220509212130528

image-20220509212159980

image-20220509212245612

插件是用来支持生命周期的

其生命周期是一条线执行的要执行中间部分其前面的所有操作都要执行一次

image-20220509212849081

可以通过工程自身的坐标在其他工程中导入该工程,其他工程中会拥有导入工程的所有依赖除非依赖被隐藏,或者自身手动排除了该依赖,

image-20220509215832733

箭头表示该依赖依赖了其他依赖(依赖具有传递性(可继承))

可选依赖--隐藏当前工程的指定依赖(配置后该依赖不具有传递性)

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>0.94.17</version>
//定义可选依赖
<optional>true</optional>

依赖过滤

(1)单依赖过滤

同依赖过滤直接处理:可以过滤一个或者多个,如果过滤多个要写多个<exclusion>。这个也解决不了我的问题,或者说解决太麻烦,我那里知道hbase要依赖那些包,记不住。

Java代码

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>0.94.17</version>
<--!排除依赖隐藏当前工程对应的依赖关系-->
<exclusions>
<exclusion>
<groupId>commons-logging</groupId>
<artifactId>commons-logging</artifactId>
</exclusion>
</exclusions>
</dependency>

(2)多依赖过滤

把所以依赖都过滤了。手起刀落~啊,世界都安静了。

Java代码

<dependency>
<groupId>org.apache.hbase</groupId>
<artifactId>hbase</artifactId>
<version>0.94.17</version>
<exclusions>
<exclusion>
<groupId>*</groupId>
<artifactId>*</artifactId>
</exclusion>
</exclusions>
</dependency>

以来的优先级看层级看是继承的还是自己声明的,自己声明的会覆盖继承的,同层级则看引入顺序,后声明的会覆盖前面的

image-20220509220616678

image-20220509220900358

分模块开发设计

一个工程有许多的模块,不同模块相互使用其他模块写好的东西,通过导入其他模块依赖降低开发难度,协同工作

image-20220509214125940

在这些分模块写好后要先存入本地仓库(install方法)这样才能被成功导入

聚合

分模块开发后会出现一个问题——当维护某个模块后(比如删除pojo中的一个属性后其他模块不能使用了)

image-20220509222400998

解决方法是创建个管理模块用来管理这些分模块(根据依赖关系构建与书写顺序无关)

image-20220509223400750

image-20220509223409503

继承

用于解决模块的依赖重复,模块依赖的快速升级

image-20220509223723180

当我们在ssm工程中设置他继承自01parent后就可以将重复的依赖在父工程中定义了,自身就不用定义那么多重复使用的依赖,而且方便依赖的管理

image-20220511084056696

在子类中如果选择要继承则导入要继承的依赖(不声明版本号)

image-20220511084235104

image-20220511084529589

属性

像spring版本在依赖中都是统一的,如果要改要改很多次,这里我们采取java中属性赋值的思想,来简化这种更改工作量(其实在ide中可以直接ctrl+r来直接批量查找替换)

image-20220511085216540

image-20220511085237835

资源文件引用属性

image-20220511090506945

image-20220511090555415

image-20220511090609897

第四步了解也可以生成个空的web.xml去骗下程序

image-20220511090705172

maven中属性分类

image-20220511090819175

版本管理

image-20220511091145767

多环境开发

企业开发中一个项目可能要链接多个数据库(多个环境)

image-20220511091642911

<!-- 配置多环境-->
<profiles>
<!-- 开发环境-->
<profile>
<id>env_dep</id>
<properties>
<jdbc.url>jdbc:mysql://127.0.2.2:3306/test?characterEncoding=utf-8&amp;serverTimezone=UTC</jdbc.url>
</properties>
<!-- 设定是否为默认启动的环境-->
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
<!-- 生产环境-->
<profile>
<id>env_pro</id>
<properties>
<jdbc.url>jdbc:mysql://127.1.2.2:3306/test?characterEncoding=utf-8&amp;serverTimezone=UTC</jdbc.url>
</properties>
</profile>
<!-- 测试环境-->
<profile>
<id>env_test</id>
<properties>
<jdbc.url>jdbc:mysql://127.2.2.2:3306/test?characterEncoding=utf-8&amp;serverTimezone=UTC</jdbc.url>
</properties>
</profile>
</profiles>

在执行maven命令的时候我们可以指定其环境

image-20220511092731598

跳过测试

跳过全部测试

image-20220511092947163

image-20220511093412059

通过插件设置要跳过的·测试

image-20220511093501507

私服

将团队自己写的依赖存入到私服中,可以让团队共享下载

image-20220511094232824

image-20220511095700937

我的密码也设置成admin

image-20220511100731397

资源的上传和下载

image-20220511101050307

首先要到我们的maven setting中配置访问我们私服的权限(实际上第一步是到私服去创建两个仓库)

image-20220511110227397

image-20220511110243324

2.配置私服路径

image-20220511110330031

image-20220511110340434

3。在工程中配置工程上传到私服的位置

image-20220511110433569

4.更改我们的中央仓库为阿里云的仓库这样下载新的依赖要快很多

image-20220511110534811

posted @   Ember00  阅读(38)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示