maven
pom中的parent标签:
parent标签类似java中的继承,复用依赖,减少冗余配置
使用场景(when):
在多模块(module)的项目中,有很多模块中的pom中存在相同的引用,如果此时声明一个父pom文件,将公用的依赖提取到父pom文件中(即使用<parent>标签),将大大减少其他pom文件中的依赖的配置
如何使用(how):
假如有此时有一个项目中有2个module
我们可以这样使用(step):
创建一个新的module,名为parent(当然也可以叫其他名字),存放父pom,父pom中,也可以使用parent标签(一般放 大部分module都使用的组件,如spirng boot)
在其他两个module中使用parent标签,其坐标就是父pom中声明的坐标
————————————————
SpringBoot项目要继承SpringBoot的起步依赖spring-boot-starter-parent
spring-boot-starter-parent已经对spring进行了一些默认的配置
导入spring-boot-starter-parent之后,其他先关依赖就不用填写版本,由此包统一管理
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>2.4.2</version>
<relativePath/> <!-- lookup parent from repository -->
</parent>
maven指定版本号范围写法
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>1.18.8</version>
</dependency>
上述代码是我们在使用maven依赖某一个jar包时最常见的写法,其中version指定了jar包的版本为1.18.8。但是在一些项目中我们可以看到如下写法:
复制代码
<dependency>
<groupId>org.projectlombok</groupId>
<artifactId>lombok</artifactId>
<version>[1.18.8,1.18.12]</version>
</dependency>
version的位置变成了中括号加逗号的形式,那这样是什么意思呢?意思是在1.18.8-1.18.12的范围内的jar包都可以使用,默认使用最大版本的即1.18.12
完整的版本号范围说明如下:(x为具体使用的版本号)
复制代码
(,1.0] x <= 1.0
[1.0] x = 1.0 跟直接指定1.0没有区别
[1.2,1.3] 1.2 <= x <= 1.3
[1.0,2.0) 1.0 <= x < 2.0
[1.5,) x >= 1.5
(,1.0],[1.2,) x <= 1.0 or x >= 1.2
(,1.1),(1.1,) x < 1.1 or x > 1.1 即排除1.1的版本
那么假如此时存在快照版本和非快照版本呢?默认情况下,同版本的快照版本会小于非快照版本。如:
复制代码
[1.0-SNAPSHOT,1.0] 如果1.0不存在则使用1.0-SNAPSHOT,1.0存在则使用1.0版本
[1.0,1.0-SNAPSHOT] 错误,会提示:Reason: Range defies version ordering
现在流行微服务,微服务之间就经常会有各种jar包互相引用,在开发一个新的需求如1.1的需求时,开发阶段使用的是快照版本。我们的maven依赖版本就可以写成[1.1-SNAPSHOT,1.1]这样因为我们1.1版本的jar还没发布,所以项目会使用1.1-SNAPSHOT。当项目开发完成上线的时候,打包了1.1版本,依赖的项目打包的时候发现1.1版本的jar存在了则会使用1.1版本的jar。免去上线的时候需要修改pom的麻烦。也避免上线的时候因为忘记修改版本号导致线上版本依赖到快照版
标签:1.0,1.1,parent,配置,jar,maven,pom,版本,常用命令 From: https://www.cnblogs.com/youxin/p/17228619.html