maven常用命令和配置()

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-parentspring-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指定版本号范围写法

  • org.projectlombok
  • lombok
  • 1.18.8

上述代码是我们在使用maven依赖某一个jar包时最常见的写法,其中version指定了jar包的版本为1.18.8。但是在一些项目中我们可以看到如下写法:

复制代码
  • org.projectlombok
  • lombok
  • [1.18.8,1.18.12]

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的麻烦。也避免上线的时候因为忘记修改版本号导致线上版本依赖到快照版

————————

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-parentspring-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指定版本号范围写法

  • org.projectlombok
  • lombok
  • 1.18.8

上述代码是我们在使用maven依赖某一个jar包时最常见的写法,其中version指定了jar包的版本为1.18.8。但是在一些项目中我们可以看到如下写法:

复制代码
  • org.projectlombok
  • lombok
  • [1.18.8,1.18.12]

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的麻烦。也避免上线的时候因为忘记修改版本号导致线上版本依赖到快照版