Maven 指定范围依赖

时间:2020-06-30
本文章向大家介绍 Maven 指定范围依赖 ,主要包括 Maven 指定范围依赖 使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

许多大型的项目都已经模块化或组件化了,每个组件都可以自己进行版本发布,由于各组件之间有依赖关系,一个组件的版本号频繁修改(例如每个组件都遵从语义化版本控制语义化版本控制,当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

$flag 上一页 下一页