版本号闲谈

版本号闲谈

不管是对于后端还是前段版本兼容始终是个无法避免的难题,而其中的版本号命令也应该符合一定的规则,否则比较版本时就比较麻烦.

版本号的格式: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;
    }
}

你可能感兴趣的:(胡言乱语,java-se,发布,java)