# est-spi-version **Repository Path**: est-spi/version ## Basic Information - **Project Name**: est-spi-version - **Description**: No description available - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2026-03-15 - **Last Updated**: 2026-03-18 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # EST SPI Version [English Version](README.en.md) ## EST SPI 版本管理模块 est-spi-version 是 EST SPI 框架的版本管理模块,提供语义化版本(Semantic Versioning)支持和版本兼容性检查功能。 ### 核心功能 #### Version - 版本接口 定义版本的标准接口,包括: - getMajor() - 获取主版本号 - getMinor() - 获取次版本号 - getPatch() - 获取补丁版本号 - getPreRelease() - 获取预发布版本标识 - getBuildMetadata() - 获取构建元数据 - toString() - 获取版本字符串表示 - isStable() - 检查是否为稳定版本 - isPreRelease() - 检查是否为预发布版本 - isGreaterThan() - 检查是否大于另一个版本 - isLessThan() - 检查是否小于另一个版本 - isEqualTo() - 检查是否等于另一个版本 - isGreaterThanOrEqualTo() - 检查是否大于或等于另一个版本 - isLessThanOrEqualTo() - 检查是否小于或等于另一个版本 #### SimpleVersion - 简单版本实现 版本的简单实现,提供: - 语义化版本解析 - 版本比较 - 预发布版本支持 - 构建元数据支持 #### VersionException - 版本异常 版本操作的异常类。 #### VersionManager - 版本管理器接口 定义版本管理器的标准接口,包括: - registerVersion() - 注册组件版本 - unregisterVersion() - 注销组件版本 - getVersion() - 获取组件版本 - getComponentIds() - 获取所有组件ID - isCompatible() - 检查版本兼容性 - getLatestCompatible() - 获取最新兼容版本 - parse() - 解析版本字符串 - create() - 创建版本对象 #### SimpleVersionManager - 简单版本管理器实现 版本管理器的简单实现,提供: - 组件版本注册管理 - 版本兼容性检查 - 版本创建和解析 ### 快速开始 #### 创建版本 ```java import ltd.idcu.est.spi.version.Version; import ltd.idcu.est.spi.version.SimpleVersion; public class Example { public static void main(String[] args) { Version v1 = new SimpleVersion(1, 2, 3); System.out.println("Version: " + v1); System.out.println("Major: " + v1.getMajor()); System.out.println("Minor: " + v1.getMinor()); System.out.println("Patch: " + v1.getPatch()); System.out.println("Is stable: " + v1.isStable()); Version v2 = new SimpleVersion(1, 0, 0, "alpha"); System.out.println("\nPre-release version: " + v2); System.out.println("Is pre-release: " + v2.isPreRelease()); Version v3 = new SimpleVersion(1, 2, 3, null, "build.123"); System.out.println("\nVersion with build metadata: " + v3); System.out.println("Build metadata: " + v3.getBuildMetadata()); } } ``` #### 解析版本字符串 ```java import ltd.idcu.est.spi.version.SimpleVersion; import ltd.idcu.est.spi.version.Version; public class Example { public static void main(String[] args) { Version v1 = SimpleVersion.parse("1.2.3"); System.out.println("Parsed: " + v1); Version v2 = SimpleVersion.parse("1.0.0-alpha"); System.out.println("Parsed pre-release: " + v2); Version v3 = SimpleVersion.parse("1.2.3+build.123"); System.out.println("Parsed with build: " + v3); Version v4 = SimpleVersion.parse("1.2.3-beta.1+exp.sha.5114f85"); System.out.println("Complex version: " + v4); } } ``` #### 版本比较 ```java import ltd.idcu.est.spi.version.Version; import ltd.idcu.est.spi.version.SimpleVersion; public class Example { public static void main(String[] args) { Version v1_0_0 = new SimpleVersion(1, 0, 0); Version v1_0_1 = new SimpleVersion(1, 0, 1); Version v1_1_0 = new SimpleVersion(1, 1, 0); Version v2_0_0 = new SimpleVersion(2, 0, 0); System.out.println("1.0.0 < 1.0.1: " + v1_0_0.isLessThan(v1_0_1)); System.out.println("1.0.1 > 1.0.0: " + v1_0_1.isGreaterThan(v1_0_0)); System.out.println("1.0.1 < 1.1.0: " + v1_0_1.isLessThan(v1_1_0)); System.out.println("1.1.0 < 2.0.0: " + v1_1_0.isLessThan(v2_0_0)); System.out.println("1.0.0 == 1.0.0: " + v1_0_0.isEqualTo(v1_0_0)); Version alpha = new SimpleVersion(1, 0, 0, "alpha"); Version beta = new SimpleVersion(1, 0, 0, "beta"); Version stable = new SimpleVersion(1, 0, 0); System.out.println("\nalpha < beta: " + alpha.isLessThan(beta)); System.out.println("beta < stable: " + beta.isLessThan(stable)); } } ``` #### 使用版本管理器 ```java import ltd.idcu.est.spi.version.*; import java.util.Optional; public class Example { public static void main(String[] args) { VersionManager manager = new SimpleVersionManager(); Version coreVersion = new SimpleVersion(1, 5, 3); Version utilsVersion = new SimpleVersion(2, 1, 0); manager.registerVersion("core", coreVersion); manager.registerVersion("utils", utilsVersion); System.out.println("Registered components: " + manager.getComponentIds()); Optional core = manager.getVersion("core"); core.ifPresent(v -> System.out.println("Core version: " + v)); Version required = new SimpleVersion(1, 0, 0); boolean compatible = manager.isCompatible("core", required); System.out.println("Core compatible with " + required + ": " + compatible); Version tooNew = new SimpleVersion(2, 0, 0); compatible = manager.isCompatible("core", tooNew); System.out.println("Core compatible with " + tooNew + ": " + compatible); Optional latest = manager.getLatestCompatible("core", new SimpleVersion(1, 0, 0)); latest.ifPresent(v -> System.out.println("Latest compatible: " + v)); } } ``` #### 使用管理器创建和解析版本 ```java import ltd.idcu.est.spi.version.*; public class Example { public static void main(String[] args) { VersionManager manager = new SimpleVersionManager(); Version v1 = manager.create(1, 2, 3); System.out.println("Created: " + v1); Version v2 = manager.create(1, 0, 0, "alpha"); System.out.println("Created pre-release: " + v2); Version v3 = manager.create(1, 2, 3, "beta", "build.123"); System.out.println("Created complex: " + v3); Version v4 = manager.parse("2.5.1"); System.out.println("Parsed: " + v4); } } ``` #### 完整示例 ```java import ltd.idcu.est.spi.version.*; import java.util.Optional; public class CompleteExample { public static void main(String[] args) { System.out.println("=== EST SPI Version Example ==="); VersionManager manager = new SimpleVersionManager(); System.out.println("\n--- Creating versions ---"); Version v1 = manager.create(1, 0, 0); Version v2 = manager.create(1, 5, 3); Version v3 = manager.create(2, 0, 0, "beta"); System.out.println("v1: " + v1 + " (stable: " + v1.isStable() + ")"); System.out.println("v2: " + v2 + " (stable: " + v2.isStable() + ")"); System.out.println("v3: " + v3 + " (stable: " + v3.isStable() + ")"); System.out.println("\n--- Comparing versions ---"); System.out.println("v1 < v2: " + v1.isLessThan(v2)); System.out.println("v2 > v1: " + v2.isGreaterThan(v1)); System.out.println("v2 < v3: " + v2.isLessThan(v3)); System.out.println("v1 == v1: " + v1.isEqualTo(v1)); System.out.println("\n--- Registering component versions ---"); manager.registerVersion("core", v2); manager.registerVersion("utils", manager.create(2, 1, 0)); manager.registerVersion("api", manager.create(1, 2, 0, "rc.1")); System.out.println("Components: " + manager.getComponentIds()); System.out.println("\n--- Checking compatibility ---"); Version requiredCore = manager.create(1, 0, 0); System.out.println("Core compatible with " + requiredCore + ": " + manager.isCompatible("core", requiredCore)); Version requiredUtils = manager.create(2, 0, 0); System.out.println("Utils compatible with " + requiredUtils + ": " + manager.isCompatible("utils", requiredUtils)); Version tooNew = manager.create(3, 0, 0); System.out.println("Core compatible with " + tooNew + ": " + manager.isCompatible("core", tooNew)); System.out.println("\n--- Parsing version strings ---"); Version parsed1 = manager.parse("1.2.3"); Version parsed2 = manager.parse("1.0.0-alpha.1"); Version parsed3 = manager.parse("2.5.0+build.20230101"); System.out.println("Parsed 1: " + parsed1); System.out.println("Parsed 2: " + parsed2); System.out.println("Parsed 3: " + parsed3); System.out.println("\n--- Getting latest compatible ---"); Optional latest = manager.getLatestCompatible("core", manager.create(1, 0, 0)); latest.ifPresent(v -> System.out.println("Latest compatible core: " + v)); System.out.println("\n--- Done ---"); manager.clear(); } } ``` ### Maven 依赖 ```xml ltd.idcu.est.spi est-spi-version 1.0.0 ``` ### 许可证 MIT License