ssm-maven
分模块开发、依赖管理、聚合和继承、属性、多环境配置与应用、私服
分模块开发
- 创建Maven模块
- 书写模块代码
- 通过maven指令安装模块到本地仓库(install 指令)
依赖管理
- 依赖传递与冲突问题
- 特殊优先
- 路径优先
- 声明优先
- 可选依赖和排除依赖
A依赖B,B依赖C
,C
通过依赖传递会被A
使用到,现在要想办法让A
不去依赖C
可选依赖是在B上设置<optional>
,A
不知道有C
的存在
排除依赖是在A上设置<exclusions>
,A
知道有C
的存在,主动将其排除掉
聚合
- 创建一个空的maven项目
- 将项目的打包方式改为pom 默认jar,web项目war, 聚合或者继承pom
- pom.xml添加所要管理的项目
- 使用聚合统一管理项目
继承
作用: 简化配置、减少版本冲突
- 创建一个空的Maven项目
- 将其打包方式设置为pom
- 在子项目中设置其父工程
- 优化子项目共有依赖导入问题
- 将子项目共同使用的jar包都抽取出来,维护在父项目的pom.xml中
- 删除子项目中已经被抽取到父项目的pom.xml中的jar包
- 优化子项目依赖版本问题
问题:引入了过多自己不需要的jar包- 在父工程的pom.xml定义依赖管理
- 在子项目的pom.xml添加需要的依赖 不需要添加版本号
属性
解决属性修改问题
- 父工程中定义版本属性
- 修改依赖的version
配置文件加载属性
- 父工程定义属性
- 资源文件中引用属性
- 设置maven过滤文件范围 ${project.basedir}
在Maven中的属性分为:
- 自定义属性(常用)
- 内置属性
- Setting属性
- Java系统属性
- 环境变量属性
版本管理
- SNAPSHOT
- RELEASE
- alpha
- beta
- 纯数字版
多环境配置与应用
父工程中定义多环境
<profiles>
<profile>
<id>环境名称</id>
<properties>
<key>value</key>
</properties>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
</profile>
...
</profiles>
使用多环境(构建过程)
mvn 指令 -P 环境定义ID[环境定义中获取]
譬如: mvn install -P env_dev