Maven进阶
Maven进阶
之前我们学了如何创建使用maven以及其依赖管理和生命周期,首先我们先回顾下重点知识
插件是用来支持生命周期的
其生命周期是一条线执行的要执行中间部分其前面的所有操作都要执行一次
可以通过工程自身的坐标在其他工程中导入该工程,其他工程中会拥有导入工程的所有依赖除非依赖被隐藏,或者自身手动排除了该依赖,
箭头表示该依赖依赖了其他依赖(依赖具有传递性(可继承))
可选依赖--隐藏当前工程的指定依赖(配置后该依赖不具有传递性)
<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>
以来的优先级看层级看是继承的还是自己声明的,自己声明的会覆盖继承的,同层级则看引入顺序,后声明的会覆盖前面的
分模块开发设计
一个工程有许多的模块,不同模块相互使用其他模块写好的东西,通过导入其他模块依赖降低开发难度,协同工作
在这些分模块写好后要先存入本地仓库(install方法)这样才能被成功导入
聚合
分模块开发后会出现一个问题——当维护某个模块后(比如删除pojo中的一个属性后其他模块不能使用了)
解决方法是创建个管理模块用来管理这些分模块(根据依赖关系构建与书写顺序无关)
继承
用于解决模块的依赖重复,模块依赖的快速升级
当我们在ssm工程中设置他继承自01parent后就可以将重复的依赖在父工程中定义了,自身就不用定义那么多重复使用的依赖,而且方便依赖的管理
在子类中如果选择要继承则导入要继承的依赖(不声明版本号)

属性
像spring版本在依赖中都是统一的,如果要改要改很多次,这里我们采取java中属性赋值的思想,来简化这种更改工作量(其实在ide中可以直接ctrl+r来直接批量查找替换)
资源文件引用属性
第四步了解也可以生成个空的web.xml去骗下程序
maven中属性分类
版本管理
多环境开发
企业开发中一个项目可能要链接多个数据库(多个环境)
<!-- 配置多环境--> <profiles> <!-- 开发环境--> <profile> <id>env_dep</id> <properties> <jdbc.url>jdbc:mysql://127.0.2.2:3306/test?characterEncoding=utf-8&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&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&serverTimezone=UTC</jdbc.url> </properties> </profile> </profiles>
在执行maven命令的时候我们可以指定其环境
跳过测试
跳过全部测试
通过插件设置要跳过的·测试
私服
将团队自己写的依赖存入到私服中,可以让团队共享下载
我的密码也设置成admin
资源的上传和下载
首先要到我们的maven setting中配置访问我们私服的权限(实际上第一步是到私服去创建两个仓库)
2.配置私服路径
3。在工程中配置工程上传到私服的位置
4.更改我们的中央仓库为阿里云的仓库这样下载新的依赖要快很多
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!