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