Maven核心概念

1.POM

1.含义Project Object Model 项目对象模型
2.pom.xml对于maven工程时核心配置文件,与构建过程相关的一切设置都在这个文件中进行配置。

2.坐标

1.数学坐标:平面中用x,y两个向量定位任意的一个点,空间中用x,y,z定位任意的一个点
2.maven中的坐标:
(1)groupid:公司或者组织域名倒叙+项目名<groupId>com.mycompany.app</groupId>
(2)artifactid:模块名<artifactId>my-app</artifactId>
(3)version:版本<version>1.0.0</version>

3. 仓库

1.仓库的分类
【1】本地仓库:当前电脑上的部署的仓库目录,为当前电脑所有的maven工程服务。
【2】远程仓库:
(1)私服:搭建在局域网环境中,为局域网范围内的所有maven工程服务。
(2)中央仓库:搭建在internet上,为全世界的maven工程服务
(3)中央仓库镜像: 为了分担中央仓库的流量,提升用户的访问速度。
2.仓库中保存的内容
【1】maven自身所需要的插件
【2】第三方的框架或工具的jar包
【3】我们自己开发的maven工程

4.依赖

1.maven的解析依赖信息时会到本地仓库中查找被依赖的jar包
对于我们自己开发的maven工程,使用mvn install命令安装后就可以进入仓库了。
2.依赖的范围
在这里插入图片描述
【1】compile范围的依赖
(1)对主程序是否有效:有效
(2)对测试程序是否有效:有效
(3)是否参与打包:参与
【1】test范围的依赖
(1)对主程序是否有效:无效
(2)对测试程序是否有效:有效
(3)是否参与打包:不参与
【1】provided范围的依赖
(1)对主程序是否有效:有效
(2)对测试程序是否有效:有效
(3)是否参与打包:不参与
(4)是否参与打包:不参与
3.依赖的传递性
情景:helloFriend项目设置了依赖,如图。hello项目中没有设置依赖,但是也会将jar包传递给hello项目。
在这里插入图片描述
【1】好处:可以传递的依赖不必要在每个模块工程中都重复声明,在最下面的工程中依赖一次就可以了。
【2】注意:没有设置compile范围的依赖不能传递。
4.依赖的排除
情景:
在这里插入图片描述
依赖排除的设置:
在需要排除jar包的当前工程中设置,只需要groupId和artifactId。
可以从此处视图选中依赖排除的jar包,右键选中Open POM,可以快速查看groupId和artifactId。
在这里插入图片描述

  <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>4.0.0.RELEASE</version>
  		<scope>compile</scope>
  		<exclusions>
  			<exclusion>
  				<groupId>commons-logging</groupId>
  				<artifactId>commons-logging</artifactId>
  			</exclusion>
  		</exclusions>
  	</dependency>
  </dependencies>

5.依赖传递时,依赖的原则
【1】作用:解决模块工程之间的jar包冲突
【2】情景1:hello和helloFirind依赖的jar包版本不同,makefriends会根据路径优先原则选择jar包。
在这里插入图片描述
【3】情景2:路径相同时,makeFriends会根据先声明者优先,即makeFriends的pom.xml中dependency标签声明的顺序。
在这里插入图片描述
6.统一管理依赖的版本号
情景:将spring的版本升级为4.1.1
在这里插入图片描述
设置方法:
【1】使用properties标签内使用自定义标签统一生成版本号

<properties>
  		<com.spring.version>4.1.1.RELEASE</com.spring.version>
  </properties>

【2】在需要统一版本号的位置上使用${自定义标签名}引用版本号。

 <dependencies>
  	<dependency>
  		<groupId>org.springframework</groupId>
  		<artifactId>spring-core</artifactId>
  		<version>${com.spring.version}</version>
  		<scope>compile</scope>
  	</dependency>
  </dependencies>

5.生命周期

1.各个构建的环节执行的顺序:不能打乱顺序,必须按照既定的顺序执行。
2.maven的核心程序中定义了抽象的生命周期,生命周期中的各个截断的具体任务是由插件来完成的
3.maven核心程序为了更好的实现自动化构建,无论执行生命周期中哪一个阶段,都是从生命周期最开始的位置执行。比如执行打包,从最开始的地方执行到打包。
4.插件和目标
【1】生命周期的各个阶段仅仅定义了要执行的任务是什么
【2】各个阶段和插件的目标对应
【3】相似的目标由特定的插件完成

生命周期阶段插件目标插件
compilecompilemaven-compiler-plugin
test-compiletestcompilemaven-compiler-plugin

【4】可以将目标看作调用插件功能的命令

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值