maven高级
一、idea创建maven项目
1.1、idea中创建maven web项目
1使用骨架archetype选择maven-archetype-webapp
2补充一些骨架中没有的文件夹
1.2、idea中使用tomcat
1集成本地的tomcat:
2tomcat的maven插件(建议):
1)pom.xml引入tomcat插件坐标
2)选中项目,右键->run maven->tomcat7:run
1.3、插件和依赖的区别
依赖:运行时开发时都需要用到的包,在项目打包时需要把这些依赖也打包进项目里。
插件:在项目开发时需要,但是在项目运行时不需要,因此在项目开发完成后不需要把插件打包进项目中。
二、依赖管理
2.1、依赖配置
使用坐标
2.2、依赖传递
- 直接依赖:在当前项目中通过依赖配置建立的依赖关系
- 间接依赖:被依赖的资源如果依赖其他资源,当前项目间接依赖其他资源
2.2.1、依赖传递中的冲突问题
依赖的资源出现冲突:按先后顺序
1就近原则
2声明优先:间接依赖是同级,那么看直接依赖谁先声明就用谁
3特殊优先:直接依赖配置了相同的资源,后面的会覆盖前面的
2.2.2、可选依赖
对外隐藏当前所依赖的资源。
中加一个true即可
2.2.3、排除依赖
主动断开依赖的资源,被排除的资源无需指定版本。
2.2.4、排除依赖和可选依赖的区别
可选依赖:隐藏,不要别人看
排除依赖:断开,我不要
2.3依赖范围
作用范围:
- 主程序范围有效(main文件夹范围内)
- 测试范围有效(test文件夹范围内)
- 是否参与打包(package指令范围内)
2.3.1、依赖范围的传递性
三、生命周期与插件
3.1、生命周期
生命周期分三套:
clean:清理工作
default:核心工作,如编译、测试、打包、安装等
site:产生报告,发布站点等
3.2、插件
插件与生命周期对应的阶段绑定,在执行到对应的生命周期时执行对应的插件功能
四、分模块开发与设计
4.1、分模块开发的意义
- 将原始模块安装功能拆分成若干个子模块,方便模块间的相互调用,接口分享。
4.2、pojo拆分
4.3、dao的拆分
dao在依赖pojo的时候,需要先把pojo模块使用install命令下载到本地仓库。
4.4、service的拆分
4.5、control的拆分
五、聚合
分模块开发可能会带来多模块构建维护的问题:一个模块更新了,其他模块没跟着更新可能会出错。所以需要一个模块来同时更新所以的模块。
六、模块继承
两个模块依赖的资源版本不同,可能会出现兼容性的问题,可通过模块继承来解决
继承:实现在子工程中沿用父工程中的配置(注父工程中dependencyManagement定义的依赖,仅定义未使用)
6.1、实现步骤
6.2、继承的资源
6.3、继承和聚合的比较
七、属性
父工程中如和spring相关的依赖都是同样的版本,万一某个版本不一样,就可能出错,所以使用属性进行管理。用属性来指定jar包的版本
7.1、属性类别
7.1.1、自定义属性
7.1.2、内置属性
如${version}可以得到目前项目自己的版本信息
7.1.3、setting属性
7.1.4、java系统属性
7.1.5、环境变量属性
八、版本管理
九、资源配置(了解)
作用:在任意配置文件中(如jdbc.properties)加载pom文件定义的属性
十、多环境开发配置(了解)
可以适应多种多样的环境
十一、跳过测试(了解)
11.1、跳过测试环节的应用场景
11.2、跳过测试的方式
11.2.1、使用命令跳过测试
11.2.2、使用界面跳过测试
11.2.3、使用配置跳过测试
十二、私服
分模块开发时用于把自己写的项目资源上传私服。中央仓库是有专门人维护的,不允许上传项目资源。
12.1、私服的安装、启动与配置
12.2、仓库分类
12.3、资源的上传
12.4、本地仓库访问私服
12.5、项目工程访问私服
分模块开发的时候,大家需要上传到私服才能得到对方写的项目资源