Maven管理

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的坐标再靠上的位置,那么优先进入到项目。
  • 如:


      org.springframework
      spring-webmvc
      4.2.4.RELEASE


      org.springframework
      spring-context
      5.0.2.RELEASE

spring-webmvc传递依赖了spring-core的jar包,然而spring-context也依赖了spring-core的jar包。那么这个时候查看实际生效的jar包图:

Maven管理_第1张图片

可以实际生效得版本是4.2.4。这就是因为第一声明优先原则。如果把声明得先后顺序倒置,那么效果图如下:

Maven管理_第2张图片

  • 路径近者优先原则,直接依赖路径比传递依赖近,那么最终项目进入的jar包是路径近的

案例还是按照上述得案例,但是这个时候我们再额外加入一个直接的依赖,那么实际的效果是怎么样的呢?

   
      org.springframework
      spring-context
      5.0.2.RELEASE
    
    
      org.springframework
      spring-webmvc
      4.2.4.RELEASE
    
    
      org.springframework
      spring-core
      4.2.8.RELEASE
    

效果图如下:

Maven管理_第3张图片

  • 排除某个依赖包的时候,再配置exclutions标签,内部不用写版本号(推荐使用)。

8、maven坐标讲解

  • dependencyManagement是锁定jar包版本。Maven工程是可以分为父子依赖的,都属于传递依赖。比如:当当前A项目被B项目依赖,那么我们A项目中所有jar包都会传递到项目中。B项目开发者,如在项目中导入一套ssm框架得jar包,对于B项目是直接依赖,那么直接依赖得jar包会覆盖A项目传递过去得jar。

为了防止以上情况得出现,我们可以把A项目的主要jar包的坐标锁住,那么其依赖该项目中,即使有同名jar包直接的依赖,也是无法覆盖的。

  1. spring的事务就是基于aop的,aop面向切面编程,切面就是切入点和通知。
  2. 释放静态资源。本来springmvc的dispatcherservlet底层就是servlet,那么再静态资源到达的时候还是使用默认得httpservlet。
  3. 处理器映射器,处理器适配器
  4. 工程不等于完整的项目,模块也并不等于完整的项目。工程和模块是没什么关系的。区别就是:工程只能使用自己的内部资源,是独立的。模块是属于父工程的,模块一旦创立,那么所有父工程的资源都可以使用。
  5. 父子工程:子模块是继承于父工程,可以使用父工程的所有资源。子模块之间是天生没有关系的。父子工程之间不用建立关系,关系是天生的。平级之间的引用就是依赖,依赖不是先天的,是后期建立的。
  6. 再实际的而开发中,如果表现为依赖丢失。表现形式为:jar包导不进去。我们的做法就是再直接导入一次。

 

 

 

 

 

 

 

 

你可能感兴趣的:(maven高级)