暑期实训第三周小结03

Maven

1.maven其实是一个项目管理工具。有两大核心功能:依赖管理和一键构建。

  • 依赖管理:maven对项目中jar包的管理过程。以前我们直接把jar包放置在项目中;而maven工程是将真正的jar包放置在仓库中,项目中只用放置jar包的坐标。
  • 一键构建:maven自身集成了Tomcat插件,可以对项目进行编译、测试、打包、安装、发布等操作。

2.仓库种类:本地仓库、远程仓库、中央仓库。
仓库之间的关系:
当我们启动一个maven工程的时候,maven工程会通过pom文件中jar包的坐标去本地仓库找对应的jar包。
默认情况下,如果本地仓库没有对应jar包,maven工程会自动去中央仓库下载jar包到本地仓库。
在公司中,如果本地没有对应jar包,会先从私服下载jar包;如果私服没有jar包,可以从中央仓库下载,也可以从本地上传。

3.maven常用命令:cleancompiletestpackageinstalldeploy
maven三套生命周期:清理生命周期、默认生命周期、站点生命周期。

4.maven工程要导入jar包的坐标,就必须要考虑解决jar包的冲突。
maven导入jar包中的一些概念:

  • 直接依赖:项目中直接导入的jar包,就是该项目的直接依赖包。
  • 传递依赖:项目中没有直接导入的jar包,可以通过项目直接依赖jar包传递到项目中去。

解决jar包的冲突

  • 方式一:
    第一声明优先原则:哪个jar包的坐标在靠上的位置,这个jar包就是先声明的。先声明的jar包坐标下的依赖包,可以优先进入项目中。

  • 方式二:
    路径近者优先原则:直接依赖路径比传递依赖路径近,那么最终项目中的jar包是路径近的直接依赖包。

  • 方式三:
    直接排除法:当我们要排除某个jar包下的依赖包,在配置exclusions标签的时候,内部可以不写版本号。因为此时依赖包使用的版本默认和本jar包一样。

5.关于锁定jar包版本
为什么需要锁定jar包版本?

maven工程是可以分父子依赖关系的。凡是依赖别的项目后,拿到的别的项目的依赖包,都属于传递依赖
比如:A项目,被B项目依赖。此时A项目中的所有jar包都会传递到B项目中。
B项目开发者,如果再在B项目中导入一套SSM框架的jar包,对于B项目是直接依赖,那么直接依赖的jar包就会把A项目传递过去的jar包覆盖掉
为防止以上情况的出现,我们可以把A项目中的主要jar包的坐标锁住,那么其他依赖该项目的项目中,即便是有同名jar包直接依赖,也无法覆盖。

如何“锁住jar包”?

<dependencyManagement>
  <dependencies>
    <dependency>
      <groupId>org.springframework</groupId>
      <artifactId>spring-aop</artifactId>
      <version>${spring.version}</version>
    </dependency>
  </dependencies>
<dependencyManagement>  

6.maven项目中的工程模块
区别
工程天生只能使用自己内部资源,其天生是独立的。后天可以和其他工程或模块建立关联关系。

模块天生不是独立的,模块天生是属于父工程的。模块一旦创建,所有父工程的资源都可以使用。

关系
父子工程之间,子模块天生继承父工程,可使用父工程所有资源。父子工程之间的继承关系是先天的,不需要手动建立。
子模块之间没有任何关系。
平级之间的引用叫依赖,依赖不是先天的,是需要后天建立的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值