1、maven基础知识回顾
- 依赖管理(jar包管理)
- 一键构建
2、仓库种类
- 本地仓库(本地计算机)
- 远程仓库(私服)
- 中央仓库
3、仓库之间的关系
当我们本地启动一个maven工程的时候,maven工程会通过pom文件中jar包的坐标去本地仓库找对应jar包。默认情况下,如果本地找不到,那么就会自动去中央仓库寻找。再公司中,如果本地没有对应的jar,先去私服查找。
4、maven常用命令
- clean complie test package install deploy
- maven的三套声明周期 :清理生命周期 默认生命周期 站点生命周期
5、传递依赖
项目中没有直接的导入的jar,可以通过项目直接依赖到项目中去。
6、直接依赖
项目中直接导入的jar包,就是项目的直接依赖。
7、解决jar包冲突
- 第一声明优先原则,那个jar的坐标再靠上的位置,那么优先进入到项目。
如:
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
spring-webmvc传递依赖了spring-core的jar包,然而spring-context也依赖了spring-core的jar包。那么这个时候查看实际生效的jar包图:
可以实际生效得版本是4.2.4。这就是因为第一声明优先原则。如果把声明得先后顺序倒置,那么效果图如下:
- 路径近者优先原则,直接依赖路径比传递依赖近,那么最终项目进入的jar包是路径近的
案例还是按照上述得案例,但是这个时候我们再额外加入一个直接的依赖,那么实际的效果是怎么样的呢?
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-context</artifactId>
<version>5.0.2.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-webmvc</artifactId>
<version>4.2.4.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-core</artifactId>
<version>4.2.8.RELEASE</version>
</dependency>
效果图如下:
- 排除某个依赖包的时候,再配置exclutions标签,内部不用写版本号(推荐使用)。
8、maven坐标讲解
- dependencyManagement是锁定jar包版本。Maven工程是可以分为父子依赖的,都属于传递依赖。比如:当当前A项目被B项目依赖,那么我们A项目中所有jar包都会传递到项目中。B项目开发者,如在项目中导入一套ssm框架得jar包,对于B项目是直接依赖,那么直接依赖得jar包会覆盖A项目传递过去得jar。
为了防止以上情况得出现,我们可以把A项目的主要jar包的坐标锁住,那么其依赖该项目中,即使有同名jar包直接的依赖,也是无法覆盖的。
- spring的事务就是基于aop的,aop面向切面编程,切面就是切入点和通知。
- <mvc:default-servlet-handler/>释放静态资源。本来springmvc的dispatcherservlet底层就是servlet,那么再静态资源到达的时候还是使用默认得httpservlet。
- <mvc:annotation-driven/>处理器映射器,处理器适配器。
- 工程不等于完整的项目,模块也并不等于完整的项目。工程和模块是没什么关系的。区别就是:工程只能使用自己的内部资源,是独立的。模块是属于父工程的,模块一旦创立,那么所有父工程的资源都可以使用。
- 父子工程:子模块是继承于父工程,可以使用父工程的所有资源。子模块之间是天生没有关系的。父子工程之间不用建立关系,关系是天生的。平级之间的引用就是依赖,依赖不是先天的,是后期建立的。
- 再实际的而开发中,如果表现为依赖丢失。表现形式为:jar包导不进去。我们的做法就是再直接导入一次。
版权声明:本文为javashareauthor原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。