0.maven目录
1.maven
①maven的作用
- 对jar包的管理,解决jar包的相互依赖
- 脱离ide环境
- 有约定的目录结构
②maven可以对项目进行打包
- jar包的打包(java工程)
主体部分:jar包中有(main)
测试部分:jar包中无(test测试成功才能打包成功) - war包的打包(web的工程)
测试:
打包好war包后,然后把war包放入tomcat中的webapps,启动tomcat之后可以直接访问war包
2.maven的依赖
①文件目录
- src:main,test
- target:打包的文件
- pom.xml:配置文件
②依赖范围(scope的范文)
- 即以scope范围引入的依赖,能否在main目录下,test目录下是否起作用,且部署到服务器时是否带着该依赖的包
- compile:main,test,部署到服务器
- test:test
- provided:main,test
- 各自的作用
test只是当地的测试
provided当地使用jar包,但是部署服务器时容易与服务器包冲突,即使用provided
compile主模块使用的jar包
③依赖传递和依赖排除
依赖传递
- a依赖b依赖c ,a能否直接依赖c
- 如果b依赖c是以compile依赖,则a可用c
- 如果b依赖c是以test和provided依赖,则a不可用c
依赖排除
- a依赖bc,bc依赖d的不同版本,a只能选择一个版本否则容易冲突
- 此时a依赖b时选择不依赖b的d
- 在a配置依赖b时加入exclusion排除d
3.maven的继承
①继承的概念(管理依赖的版本)
- a工程继承b工程,即a的pom文件继承b的pom文件
②继承的注意事项
- 父工程的pom文件
打包方式需要为pom
packaging标签为pom即为父工程 - 子工程里的pom文件
父工程里建模块工程(子工程)
子工程里的pom文件会有父工程的坐标 - 父工程管理依赖
dependencyManagerment标签管理
可以配置依赖的版本
③继承的实际影响
- 父工程配置了版本,子工程里只需使用具体的依赖不需要声明版本
若父工程已有,而子工程没有,则子工程采纳父工程版本号
若父工程已有,子工程也有且版本号相同,则子工程采纳版本号
若父工程已有,子工程也有且版本号不同,则子工程的版本号覆盖父工程(不推荐,一般需要遵从父工程的依赖)
④实际开发的作用
- 父工程修改依赖版本,子工程中各个生效
- 父工程可以使用自定义标签统一管理很多依赖的版本
mytest:4.1.0 (自定义标签)
version:$:{mytest}(属性表达式) - 实际模块使用时
公司级父工程-项目级父工程-模块(模块中只需拿出父工程已有的依赖即可)
4.聚合(聚合工程一般也为父子工程)
- 聚合的作用:聚合工程将所有的模块工程汇集起来。聚合可以一键安装。
5.maven其他重要知识点
- maven的生命周期
因为我们从maven的中间环节启动,需要自动执行其前面的所有环节
例如:执行instal
会执行 compile test package - maven的插件和目标
maven的核心程序是宏观调度,其他操作都是由插件来执行的
例如:compile 由 maven-compilier jar插件来执行的
目标是指插件的某个功能 - 仓库:本地仓库(当前电脑)
远程仓库:maven私服(局域网上的nexus)
远程仓库(联网下载)