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