前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >聊聊maven指定version区间的妙用

聊聊maven指定version区间的妙用

原创
作者头像
lyb-geek
发布2024-02-27 10:21:30
1400
发布2024-02-27 10:21:30
举报
文章被收录于专栏:Linyb极客之路Linyb极客之路

前言

在我们开发微服务项目的过程中,难免会依赖各种jar,开发环境可能引用1.0.0-SNAPSHOT,而到了正式环境,则需要引用1.0.0。之前我们的做法是通过pom配置profile来达到不同环境,使用不同的版本。形如下

代码语言:xml
复制
<profiles>
        <!-- 开发环境 -->
        <profile>
            <properties>
                <user-api.version>1.0.0-SNAPSHOT</user-api.version>
            </properties>
            <activation>
            <!-- 指定默认环境 -->
           <activeByDefault>true</activeByDefault>
            </activation>
        </profile>
        <!-- 生产环境 -->
        <profile>
            <id>prod</id>
            <properties>
               <properties>
                <user-api.version>1.0.0</user-api.version>
            </properties>
        </profile>
    </profiles>

直到某一天,忘了在哪个开源的pom,看到了形如下写法

代码语言:java
复制
  <dependency>
            <groupId>com.github.lybgeek</groupId>
            <artifactId>lybgeek</artifactId>
            <version>[1.0,2.0]</version>
        </dependency>

一开始还以为是啥jar那么特立独行,版本号竟然是1.0,2.0,后面了解了一下,才知道的自己的无知,同时也打开新世界大门

正文

1.0,2.0这个到底是啥?

这个代表其实就是一个version区间,表示的意思是,该区间的版本都是可用版本,默认取最新的版本,即2.0。其他的区间配法示例

代码语言:java
复制
(,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的版本

注: x为具体使用的版本号。默认情况下,同版本的快照版本会小于非快照版本

代码语言:java
复制
[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时,就可以指定形如下

代码语言:xml
复制
<dependency>
            <groupId>com.github.lybgeek</groupId>
            <artifactId>user-api</artifactId>
            <version>[1.0.0-SNAPSHOT,1.0.0]</version>
        </dependency>

比如开发环境没有1.0.0版本,则会引用1.0.0-SNAPSHOT,而正式环境有1.0.0则会引1.0.0

总结

maven version区间确实能减少我们一些配置的工作量,但是凡事都有两面性,如果版本之间存在不兼容情况下,最好还是具体指定版本

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 正文
  • 总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档