当前位置: 首页 > news >正文

java使用第三方库 semver4j 处理语义化版本,递增,对比等操作

方法一:手动解析版本号并处理

public class VersionNumberAddition {
    public static String incrementVersion(String version, int incrementType) {
        String[] parts = version.split("\\.");
        int major = Integer.parseInt(parts[0]);
        int minor = Integer.parseInt(parts[1]);
        int patch = Integer.parseInt(parts[2]);

        switch (incrementType) {
            case 1: // 主版本号加 1
                major++;
                minor = 0;
                patch = 0;
                break;
            case 2: // 次版本号加 1
                minor++;
                patch = 0;
                break;
            case 3: // 补丁版本号加 1
                patch++;
                break;
            default:
                throw new IllegalArgumentException("Invalid increment type");
        }

        return major + "." + minor + "." + patch;
    }

    public static void main(String[] args) {
        String version = "1.0.0";
        // 主版本号加 1
        String newVersionMajor = incrementVersion(version, 1);
        System.out.println("主版本号加 1 后的版本号: " + newVersionMajor);
        // 次版本号加 1
        String newVersionMinor = incrementVersion(version, 2);
        System.out.println("次版本号加 1 后的版本号: " + newVersionMinor);
        // 补丁版本号加 1
        String newVersionPatch = incrementVersion(version, 3);
        System.out.println("补丁版本号加 1 后的版本号: " + newVersionPatch);
    }
}

方法二、使用工具

1、添加依赖

<dependency>
    <groupId>org.semver4j</groupId>
    <artifactId>semver4j</artifactId>
    <version>3.1.1</version>
</dependency>

2、示例代码

import org.semver4j.Semver;
import org.semver4j.Semver.SemverType;

public class VersionNumberOperations {
    public static void main(String[] args) {
        // 定义初始版本号
        String versionStr1 = "1.0.0";
        String versionStr2 = "1.1.0";

        // 将版本号字符串转换为 Semver 对象
        Semver semver1 = new Semver(versionStr1, SemverType.STRICT);
        Semver semver2 = new Semver(versionStr2, SemverType.STRICT);

        // 版本号递增操作
        // 主版本号加 1
        Semver newVersionMajor = semver1.nextMajor();
        System.out.println("主版本号加 1 后的版本号: " + newVersionMajor);
        // 次版本号加 1
        Semver newVersionMinor = semver1.nextMinor();
        System.out.println("次版本号加 1 后的版本号: " + newVersionMinor);
        // 补丁版本号加 1
        Semver newVersionPatch = semver1.nextPatch();
        System.out.println("补丁版本号加 1 后的版本号: " + newVersionPatch);

        // 版本号对比操作
        // 判断版本号大小
        if (semver1.isGreaterThan(semver2)) {
            System.out.println(versionStr1 + " 大于 " + versionStr2);
        } else if (semver1.isLessThan(semver2)) {
            System.out.println(versionStr1 + " 小于 " + versionStr2);
        } else {
            System.out.println(versionStr1 + " 等于 " + versionStr2);
        }

        // 判断版本号是否满足某个范围
        String rangeStr = ">=1.0.0 <2.0.0";
        boolean isInRange = semver1.satisfies(rangeStr);
        System.out.println(versionStr1 + " 是否在范围 " + rangeStr + " 内: " + isInRange);
    }
}

代码解释
版本号递增操作:
nextMajor():将主版本号加 1,同时将次版本号和补丁版本号重置为 0。
nextMinor():将次版本号加 1,同时将补丁版本号重置为 0。
nextPatch():将补丁版本号加 1。
版本号对比操作:
isGreaterThan():判断当前版本号是否大于另一个版本号。
isLessThan():判断当前版本号是否小于另一个版本号。
satisfies():判断当前版本号是否满足指定的版本范围。

相关文章:

  • 初识Python:一门简洁而强大的编程语言
  • 大语言模型(LLM)和嵌入模型的统一调用接口
  • GB28181开发--SRS+Jessibuca‌
  • LINUX网络基础 [一] - 初识网络,理解网络协议
  • 集合论--形式化语言里的汇编码
  • vulnhub渗透日记23:bulldog
  • SQLite Having 子句详解
  • java基础100道面试题
  • AT32F421专题---PA9 PA10的I2C1连接AT24C02失败及解决
  • Diffusion模型中时间t嵌入的方法
  • Teaching Small Language Models Reasoning throughCounterfactual Distillation
  • Hive-07之企业级调优
  • Docker部署MySQL
  • Python:简单的爬虫程序,从web页面爬取图片与标题并保存MySQL
  • 大模型核心要素完全解析:从数字神经元到智能对话的奥秘
  • go语言数据类型
  • (50)[HGAME 2023 week2]before_main
  • AutoGen学习笔记系列(六)Tutorial - Termination
  • unittest框架 核心知识的系统复习及与pytest的对比
  • uniapp x 学习之 uts 语言快速入门
  • 特朗普再提“接管”加沙,要将其变为“自由区”
  • 丰富“互换通”产品类型,促进中国金融市场高水平对外开放
  • 外企聊营商|威能集团:公平环境增“暖”意
  • 普京批准俄方与乌克兰谈判代表团人员名单
  • 汤加附近海域发生6.4级地震
  • 当代科技拟召开债券持有人会议 ,对“H20科技2”进行四展