首页 > 其他 > 详细

Maven 指定范围依赖

时间:2020-06-30 15:28:43      阅读:60      评论:0      收藏:0      [点我收藏+]

许多大型的项目都已经模块化或组件化了,每个组件都可以自己进行版本发布,由于各组件之间有依赖关系,一个组件的版本号频繁修改(例如每个组件都遵从语义化版本控制语义化版本控制,当bugfix时修订版本号会频繁的进行修改),会引起依赖它的组件也需要及时修改依赖的版本号,这样既繁琐又低效。这时候可以通过指定范围依赖来解决,上层的组件可以不用关心下层的组件版本号修改(在不影响使用的前提下)。

下面通过例子说明如何在maven项目中指定范围依赖,并进行编译。这里假设某个项目由A、B、C三个组件组成,其中A组件依赖于B组件。在A项目中指定对B组件的范围依赖,假设依赖B组件的2.3.*版本,即末尾版本号不管怎么修改,A组件都不需要关心,但在每次编译部署时希望能在maven repo里拉到最新的jar包。

技术分享图片

  1. 在A组件中的指定B的版本依赖为一个范围区间[2.3.0,2.4.0),即表示了A组件依赖B组件的2.3.*版本。在pom.xml有关配置如下:
      <properties>
      ?         <b.version>[2.3.0,2.4.0)</b.version>
      </properties>
      <dependencies>
	      <dependency>
		      <groupId>org.xxx.xxx</groupId>
		      <artifactId>B</artifactId>          
		      <version>${b.version}</version>       
	      </dependency>     
      </dependencies>

2.按上述在pom文件中配置了依赖的版本范围,编译时需要对范围依赖进行处理,因为编译时maven会把在该区间内的所有jar包都拉到本地,我们需要指定使用该区间内最新版本的jar包进行编译组件A。

1)需要添加一个插件:versions-maven-plugin,用来处理范围依赖中的最新版本。

?       <build>
? ? ? ? ? ? ?<plugins>
? ? ? ? ? ? ? ? ? <plugin>
? ? ? ? ? ? ? ? ? ? ? <groupId>org.codehaus.mojo</groupId>
? ? ? ? ? ? ? ? ? ? ?<artifactId>versions-maven-plugin</artifactId>
? ? ? ? ? ? ? ? ? ? <version>2.3</version>
? ? ? ? ? ? ? ? ?</plugin>
? ? ? ? ? ? ?</plugins>
? ? ? ? </build>

2)执行命令:

? ? ? mvn versions:resolve-ranges

**?执行完该命令后,pom中指定的版本范围会被更新指定为该区间内的最新版本。在本例中此时**${b.version}的值会变成

[2.3.0,2.4.0)中最新的版本号,例如2.3.7

3)执行完上述命令后在进行编译部署等操作

? ?mvn clean install/package/deploy

4)?将pom文件中的指定版本回滚到之前的指定范围区间

? ? ? mvn versions:revert

由于在编译之前已经将指定的范围依赖更新成了特定的新版本,然后在本地进行编译,但是此时不能将项目中这个改动上传到远程项目,远程项目中应该是指定的范围依赖。

因此需要恢复到原来的依赖范围状态,因此需要执行下mvn versions:revert进行回滚。此时 <b.version>2.3.7</b.version> 会被回滚成原始的版本 <b.version>[2.3.0,2.4.0)</b.version>

总结下来一句话就是:开发时项目中指定了范围依赖,本地/CI编译步骤不再是简单的mvn compile/install/test/deploy,而是下面三个步骤:

? ? ? ?1.mvn versions:resolve-ranges
? ? ? ?2.mvn install/package/deploy
? ? ? ?3.mvn versions:revert

Maven 指定范围依赖

原文:https://www.cnblogs.com/itplay/p/13213543.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!