版本号闲谈

    xiaoxiao2021-12-14  21

    版本号闲谈

    不管是对于后端还是前段版本兼容始终是个无法避免的难题,而其中的版本号命令也应该符合一定的规则,否则比较版本时就比较麻烦.
    版本号的格式:V<主版本号>.<副版本号>.<发布号> 版本号的初始值:V1.0.0
    版本号管理规则: 1、产品的主体构件进行重大修改,主版本号加1 2、产品升级增加特性副版本号加1 3、主版本号加1时,副版本号和发布号置为0 4、副版本号加1时,发布号置为0

    Java代码实现版本号比较

    针对以上命名的规则,我写了一个版本号比较工具. /** * 版本号比较 * * @author xuyi * @Time 2016年12月3日 下午3:13:14 * @类名 VersionCompare * @功能描述: * @春风十里不如你 * @备注: */ public class VersionCompare { /** * 这个方法应该算是比较完善的. * * @param firstVersion * @param secondVersion * @return */ public static VersionEnum compare(String firstVersion, String secondVersion) { if (firstVersion.equals(secondVersion)) return VersionEnum.EQUAL; if (moreLaterVersion(firstVersion, secondVersion)) return VersionEnum.HIGHER; return VersionEnum.LOWER; } /** * 判断两个版本号是否为同一个版本号 * * @param firstVersion * @param secondVersion * @return */ public static boolean isEqualsVersion(String firstVersion, String secondVersion) { return firstVersion.equals(secondVersion); } /** * 判断第一个版本号是否比后一个版本号更高 * * @param firstVersion * @param secondVersion * @return */ public static boolean moreLaterVersion(String firstVersion, String secondVersion) { //使用split方法时,注意一点,以"."分隔时要转义,因为使用的是正则处理的. String[] firstVersions = firstVersion.replace("V", "").split("\\."); String[] secondVersions = secondVersion.replace("V", "").split("\\."); int length = firstVersions.length; for (int i = 0; i < length; i++) { boolean later = Integer.compare(Integer.valueOf(firstVersions[i]), Integer.valueOf(secondVersions[i])) > 0; if (later) { return true; } } return false; } }
    /** * 版本比较的枚举类型 * * @author xuyi * @Time 2016年12月3日 下午3:22:15 * @类名 VersionEnum * @功能描述: * @春风十里不如你 * @备注: */ @Getter public enum VersionEnum { LOWER("lower", -1), EQUAL("equal", 0), HIGHER("higher", 1); private int code; private String desc; VersionEnum(String desc, int code) { this.desc = desc; this.code = code; } }
    转载请注明原文地址: https://ju.6miu.com/read-969448.html

    最新回复(0)