当前位置: 首页 > 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():判断当前版本号是否满足指定的版本范围。

http://www.dtcms.com/a/51986.html

相关文章:

  • 初识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 语言快速入门
  • 【Embedding】何为Embedding?
  • 筑牢网络安全防线:守护您的数据安全
  • 单体架构、集群、分布式、微服务的区别!
  • Redis设计与实现-数据结构
  • Selenium遇到Exception自动截图
  • 【大模型学习】第八章 深入理解机器学习技术细节
  • 【前端】【vue-i18n】安装和使用全解
  • Redis Stream
  • Ubuntu20.04 在离线机器上安装 NVIDIA Container Toolkit
  • [项目]基于FreeRTOS的STM32四轴飞行器: 三.电源控制