This is an automated email from the ASF dual-hosted git repository.
zhangliang pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/shardingsphere.git
The following commit(s) were added to refs/heads/master by this push:
new bc061f8849c Add ShardingSphere BOM (#37065)
bc061f8849c is described below
commit bc061f8849c0183ab2c1d47867cd0e3856a5ea8d
Author: Liang Zhang <[email protected]>
AuthorDate: Tue Nov 11 00:26:38 2025 +0800
Add ShardingSphere BOM (#37065)
* Update CLAUDE.md
* Add ShardingSphere BOM
* Add ShardingSphere BOM
* Add ShardingSphere BOM
* Add ShardingSphere BOM
* Add ShardingSphere BOM
* Add ShardingSphere BOM
* Add ShardingSphere BOM
* Add ShardingSphere BOM
---
CLAUDE.md | 294 ++++-
RELEASE-NOTES.md | 1 +
distribution/bom/pom.xml | 1279 ++++++++++++++++++++
distribution/pom.xml | 1 +
.../content/user-manual/dependencies/_index.cn.md | 22 +
.../content/user-manual/dependencies/_index.en.md | 22 +
.../content/user-manual/dependencies/bom.cn.md | 83 ++
.../content/user-manual/dependencies/bom.en.md | 83 ++
8 files changed, 1750 insertions(+), 35 deletions(-)
diff --git a/CLAUDE.md b/CLAUDE.md
index 3eceac9c11a..2f01bc73eec 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -14,12 +14,12 @@ Built on Database Plus concept - unified data access layer
over existing databas
1. **Code Self-Documentation**
- Zero inline comments - code explains itself through clear naming
- - Extract complex logic to well-named methods
+ - Extract complex logic to well-named methods (see Self-Documentation
Patterns in Part 2)
- Use factory methods for object creation
2. **100% Test Coverage**
- Every line, branch, and method must be tested
- - Coverage-driven development - use JaCoCo reports to guide testing
+ - Coverage-driven development - use JaCoCo reports to guide testing (see
Part 2: Coverage Tools Reference)
- Focus on branch coverage, eliminate redundant tests
3. **Follow Project Standards**
@@ -36,18 +36,69 @@ Built on Database Plus concept - unified data access layer
over existing databas
- Always run `./mvnw spotless:apply -Pcheck` before task completion
- Ensure all modified code follows project formatting
+### Task Classification Standards
+
+#### Task Type Identification
+
+**Source Code Tasks**
+- **File Patterns**: `**/src/main/java/**/*.java`,
`**/src/test/java/**/*.java`, `**/pom.xml`
+- **Impact**: Code compilation, test execution, coverage analysis,
functionality
+- **Examples**: New feature development, bug fixes, test improvements,
configuration changes
+
+**Documentation Tasks**
+- **File Patterns**: `**/*.md`, `docs/**/*`, `**/README*`, `.github/**/*.md`
+- **Impact**: Content accuracy, user experience, knowledge transfer
+- **Examples**: API documentation, user guides, architecture docs, release
notes
+
+**Mixed Tasks**
+- **Characteristics**: Involves both source code and documentation changes
+- **Approach**: Apply combined validation based on changed file types
+- **Examples**: Feature additions with documentation, API changes with examples
+
+#### Differentiated Validation Standards
+
+**Source Code Task Requirements**
+- ✅ 100% test coverage (JaCoCo validation)
+- ✅ Code compilation and build success
+- ✅ Code formatting with Spotless
+- ✅ All quality checks pass (Checkstyle, etc.)
+- ✅ Self-documenting code with zero inline comments
+
+**Documentation Task Requirements**
+- ✅ Link validity verification
+- ✅ Markdown format consistency
+- ✅ Content accuracy review
+- ✅ Spelling and grammar check
+- ❌ No test coverage or compilation required
+
+**Mixed Task Requirements**
+- Apply source code standards to `.java` files
+- Apply documentation standards to `.md` files
+- Ensure consistency between code and documentation changes
+
### Quick Checklists
#### Before Starting Any Task
- [ ] Re-read relevant sections of this guide
-- [ ] Identify specific standards for your task type
-- [ ] Understand the success criteria and coverage requirements
+- [ ] **Identify task type**: Source code, documentation, or mixed task
+- [ ] Understand the success criteria and validation requirements for your
task type
+- [ ] Review specific standards for your task type
#### Before Task Completion
-- [ ] All tests pass with 100% coverage
-- [ ] Code is self-documenting with zero inline comments
-- [ ] Code formatting applied: `./mvnw spotless:apply -Pcheck`
-- [ ] All changes are within specified scope
+
+**For Source Code Tasks:**
+- [ ] All validation requirements from Differentiated Validation Standards
(Lines 60-77)
+- [ ] Additional cleanup: Remove unused mocks, imports, and dead code
+- [ ] Optimize mock configurations and branch coverage
+
+**For Documentation Tasks:**
+- [ ] All validation requirements from Differentiated Validation Standards
(Lines 60-77)
+- [ ] Test code examples and snippets when applicable
+
+**For Mixed Tasks:**
+- [ ] Apply source code standards to `.java` files
+- [ ] Apply documentation standards to `.md` files
+- [ ] Ensure consistency between code and documentation changes
### Common Pitfalls to Avoid
- **Internal blank lines** in methods - extract private methods instead
@@ -55,6 +106,13 @@ Built on Database Plus concept - unified data access layer
over existing databas
- **Early test exits** - configure mocks properly to reach target code
- **Surface-level coverage** - verify actual coverage improvement with JaCoCo
+#### Code Cleanup Standards
+- **Dead Mock Objects**: Remove all mock objects never referenced in tests
+- **Unused Imports**: Remove imports that are not used in the file
+- **Redundant Mock Setup**: Extract common mock configurations to private
methods
+- **Unreachable Code**: Remove any code that can never be executed
+- **Duplicate Test Logic**: Eliminate tests that don't improve branch coverage
+
---
## Part 2: Development Process & Quality Standards
@@ -63,20 +121,32 @@ Built on Database Plus concept - unified data access layer
over existing databas
```mermaid
graph LR
-A[Analyze Task] --> B[Coverage Analysis]
-B --> C[Design & Implement]
-C --> D[Verify Coverage]
-D --> E[Format Code]
-E --> F[Complete]
+A[Analyze Task] --> B[Identify Task Type]
+B --> C[Choose Validation Strategy]
+C --> D[Design & Implement]
+D --> E[Task-Specific Validation]
+E --> F[Format Code]
+F --> G[Complete]
```
+#### Task-Specific Workflows
+
+**Source Code Tasks:**
+1. Analyze Task → Identify as Source Code → Coverage Analysis → Design &
Implement → Verify Coverage → Format Code → Complete
+
+**Documentation Tasks:**
+1. Analyze Task → Identify as Documentation → Content Review → Design &
Implement → Content Validation → Format Check → Complete
+
+**Mixed Tasks:**
+1. Analyze Task → Identify as Mixed → Combined Strategy → Design & Implement →
Multi-Type Validation → Format & Complete → Complete
+
### Simplified Testing Process
#### Step 1: Analyze & Design
- **Code Flow Analysis**: Understand complete execution paths
- **Coverage Gap Identification**: Use JaCoCo to find uncovered branches
- **Dependency Mapping**: Identify all mocks needed for complete chain
-- **Test Scenarios**: Design realistic business cases for uncovered branches
+- **Test Scenarios**: Design realistic business cases for uncovered branches
(see Mock Configuration Standards)
#### Step 2: Implement & Verify
- **Mock Configuration**: Set up complete dependency chains with
`RETURNS_DEEP_STUBS`
@@ -128,6 +198,51 @@ private boolean userIsAdminWithPermission() {
- **Factory methods**: Describe object creation intent
- **Private methods**: Explain what logic they encapsulate
+#### Comprehensive Test Patterns
+```java
+// Standard test structure (Given-When-Then)
+@Test
+void assertMethodWithCondition() {
+ // Given - setup complete mock chain
+ mockDependencyChain();
+
+ // When - call method directly
+ MyResult actual = target.methodUnderTest(input);
+
+ // Then - assert with Hamcrest
+ assertThat(actual, is(expectedResult));
+}
+
+// Branch-focused test patterns for utility classes
+@Test
+void assertMethodWithConditionTruePathExpectsResult() {
+ // Given - configure mocks for true branch
+ mockConditionReturnsTrue();
+
+ // When - call method that hits the true branch
+ MyResult actual = utilityClass.methodWithCondition(input);
+
+ // Then - verify true branch result
+ assertThat(actual, is(expectedTrueResult));
+}
+
+// Advanced branch testing naming
+@Test
+void assert[MethodName]When[BranchCondition]Expects[Result]() {
+ // Given - setup for specific branch condition
+ // When - execute method
+ // Then - verify expected result for this branch
+}
+```
+
+#### Test Organization Principles
+- **Branch-first naming**:
`assert[MethodName]When[BranchCondition]Expects[Result]`
+- **One test per branch**: Each test should target a specific conditional
branch
+- **Minimal test count**: Avoid redundant tests that don't improve branch
coverage
+- **Test isolation**: Each test controls specific constructor and method
behaviors
+- **Resource management**: Always clean up MockedConstruction with
try-with-resources
+- **Verification focus**: Each test validates one specific branch outcome
+
#### Mock Configuration Standards
```java
// ✅ Complete dependency chain
@@ -137,8 +252,44 @@
when(dependencyA.getDependencyB().process(input)).thenReturn(result);
private void mockUserPermissionService() {
when(userPermissionService.hasAdminPermission(any())).thenReturn(true);
}
+
+// ✅ Constructor mocking for utility classes
+try (MockedConstruction<DatabaseTypeRegistry> mocked =
mockConstruction(DatabaseTypeRegistry.class, (mock, context) -> {
+ DialectDatabaseMetaData dialectDatabaseMetaData =
mock(DialectDatabaseMetaData.class, RETURNS_DEEP_STUBS);
+
when(dialectDatabaseMetaData.getConnectionOption().isInstanceConnectionAvailable()).thenReturn(true);
+
when(mock.getDialectDatabaseMetaData()).thenReturn(dialectDatabaseMetaData);
+})) {
+ // Test code that instantiates DatabaseTypeRegistry
+}
+
+// ✅ Complex external dependency mocking
+try (MockedConstruction<ExternalClass> mocked =
mockConstruction(ExternalClass.class, (mock, context) -> {
+ when(mock.getExternalCondition()).thenReturn(true);
+
when(mock.getDialectDatabaseMetaData().getConnectionOption().isInstanceConnectionAvailable()).thenReturn(false);
+})) {
+ boolean actual = UtilityClass.staticMethodWithExternalDependency();
+ assertThat(actual, is(expected));
+}
```
+#### Advanced Mock Configuration with MockedConstruction
+Use `MockedConstruction` when testing code that creates objects with `new`:
+- **Constructor interception**: Control how dependency objects are created
+- **Complete call chain**: Configure full dependency paths with
`RETURNS_DEEP_STUBS`
+- **Try-with-resources**: Automatically clean up mock constructions
+- **Utility class testing**: Perfect for static utility methods with external
dependencies
+
+#### Mock Configuration Strategies
+- **Deep stubs**: Use `RETURNS_DEEP_STUBS` for complex nested dependencies
+- **Resource management**: Always use try-with-resources for MockedConstruction
+- **Behavior isolation**: Each test controls specific constructor behaviors
+- **Constructor identification**: Look for `new SomeClass()` in target methods
+
+#### MockedStatic vs MockedConstruction
+- **MockedStatic**: For static method calls (`UtilityClass.staticMethod()`)
+- **MockedConstruction**: For object creation (`new UtilityClass()`)
+- **Placement**: MockedConstruction must wrap the code that creates the objects
+
#### Assertion Style (Mandatory)
```java
// ✅ Use Hamcrest matchers for readability
@@ -160,6 +311,11 @@ assertThat(actualList, hasSize(expectedSize));
./mvnw test jacoco:check@jacoco-check -Pcoverage-check -Djacoco.skip=false \
-Djacoco.check.class.pattern=com.example.ClassName
+# Verify package coverage with 100% requirement
+./mvnw test jacoco:check@jacoco-check -Pcoverage-check -Djacoco.skip=false \
+ -Djacoco.check.class.pattern="com.example.**" \
+ -Djacoco.minimum.coverage=1.00
+
# Format code
./mvnw spotless:apply -Pcheck
@@ -167,11 +323,44 @@ assertThat(actualList, hasSize(expectedSize));
./mvnw install -T1C
```
+#### Coverage Patterns
+```bash
+# Package level coverage
+-Djacoco.check.class.pattern="com.example.**"
+
+# By type coverage
+-Djacoco.check.class.pattern="**/*Service"
+
+# Multiple patterns
+-Djacoco.check.class.pattern="**/*Service,**/*Manager"
+```
+
#### Coverage Interpretation
- **Target**: 100% instruction, line, branch, and method coverage
- **Validation**: Must verify improvement with JaCoCo HTML reports
- **Focus**: Branch coverage over redundant line coverage
- **Strategy**: Minimal tests targeting specific uncovered branches
+- **BUILD SUCCESS**: Coverage meets requirements
+- **BUILD FAILURE**: Review `module/target/site/jacoco/index.html` for
uncovered lines
+
+#### Advanced Coverage Strategies
+```bash
+# Branch gap analysis - identify uncovered branches
+./mvnw clean test jacoco:report -Djacoco.skip=false
+open target/site/jacoco/index.html # Check red diamonds for missing branches
+```
+
+#### Constructor Path Testing
+- **Identify `new` operators**: Look for `new SomeClass()` in target code
+- **Use MockedConstruction**: Intercept constructor calls to control behavior
(see Mock Configuration Standards)
+- **Configure complete mock chains**: Ensure all dependency paths are properly
mocked
+- **Test each branch**: Create focused tests for each conditional branch
+
+#### Utility Class Coverage Optimization
+- **Static method analysis**: Map each conditional branch to specific test
scenarios
+- **Dependency isolation**: Use MockedConstruction to control external
dependencies
+- **Complete path coverage**: Ensure both true and false paths are tested
+- **Verification strategy**: Use JaCoCo HTML reports to confirm 100% branch
coverage
---
@@ -206,7 +395,7 @@ test/ - E2E/IT test engine and cases
**SPI Implementation**
- Service discovery mechanism for registration
- Appropriate default implementations
-- Use `TypedSPILoader.getService()` in tests when mocking is complex
+- Use `TypedSPILoader.getService()` in tests when mocking is complex (see
Appendix: Common Issues & Solutions)
### Development Patterns
@@ -231,26 +420,25 @@ Properties props = PropertiesBuilder.build(new
Property("key", "value"));
Repository repository = new YamlRepository(path);
```
-#### Test Patterns
-```java
-// Use real SPI services when mocking is complex
-DatabaseTypedSPILoader.getService(DatabaseType.class, databaseName);
+// Test patterns and organization covered in Comprehensive Test Patterns (Part
2)
-// Interface-based testing over concrete implementations
-@Test
-void assertMethodWithCondition() {
- // Given - setup complete mock chain
- mockDependencyChain();
+### Utility Class Testing Best Practices
- // When - call method directly
- MyResult actual = target.methodUnderTest(input);
+#### Static Method Testing Strategy
+- **Branch mapping**: Map each conditional statement to specific test scenarios
+- **Constructor control**: Use MockedConstruction to control external
dependencies
+- **Complete path coverage**: Ensure both true and false branches are tested
+- **Minimal test set**: One test per branch, no redundant coverage
- // Then - assert with Hamcrest
- assertThat(actual, is(expectedResult));
-}
-```
+// Constructor behavior validation examples covered in Mock Configuration
Standards (Part 2)
-### Decision Framework
+#### Complete Branch Coverage Implementation
+- **Identify all branches**: Use JaCoCo HTML reports to find uncovered
conditional branches
+- **Create targeted tests**: One test method per missing branch
+- **Mock external dependencies**: Control all external object creation paths
+- **Verify 100% coverage**: Confirm all branch diamonds are green in JaCoCo
reports
+
+// Test method organization principles covered in Comprehensive Test Patterns
(Part 2)
#### Priority Guidelines
1. **Quality > Speed**: Never compromise on 100% coverage or code standards
@@ -282,6 +470,7 @@ void assertMethodWithCondition() {
### Quick Reference Commands
+**Source Code Tasks**
```bash
# === Development ===
./mvnw install -T1C # Full build
@@ -293,10 +482,35 @@ void assertMethodWithCondition() {
./mvnw test jacoco:check@jacoco-check -Pcoverage-check -Djacoco.skip=false \
-Djacoco.check.class.pattern=ClassName
-# === Coverage Patterns ===
--Djacoco.check.class.pattern="com.example.**" # Package level
--Djacoco.check.class.pattern="**/*Service" # By type
--Djacoco.check.class.pattern="**/*Service,**/*Manager" # Multiple
+# See Part 2: Coverage Tools Reference for complete command patterns and
advanced strategies
+```
+
+**Documentation Tasks**
+```bash
+# === Documentation Validation ===
+# Quick link check (if available)
+find . -name "*.md" -exec grep -l "http" {} \; # Find docs with links
+
+# Markdown format check
+markdownlint docs/**/*.md # If markdownlint is available
+
+# Spell check (if available)
+cspell docs/**/*.md # If cspell is configured
+
+# === Documentation Quick Fix ===
+./mvnw spotless:apply -Pcheck # Format any code examples
+```
+
+**Mixed Tasks**
+```bash
+# === Combined Validation ===
+# Apply source code commands to .java files only
+# Apply documentation commands to .md files only
+# Use file-specific validation based on changed file patterns
+
+# Example: Check changed files
+git diff --name-only HEAD~1 | grep "\.java$" # Changed Java files
+git diff --name-only HEAD~1 | grep "\.md$" # Changed Markdown files
```
### Common Issues & Solutions
@@ -310,6 +524,16 @@ void assertMethodWithCondition() {
- **Issue**: Complex nested mocks become unmanageable
- **Solution**: Use `RETURNS_DEEP_STUBS`, extract mock setup to private methods
+// Constructor mocking problems and solutions covered in Mock Configuration
Standards (Part 2)
+
+#### Branch Coverage Challenges
+- **Issue**: Tests pass but coverage doesn't reach 100%
+- **Solution**: Use MockedConstruction to control all external dependencies in
conditional branches
+- **Issue**: Complex conditional logic with multiple nested dependencies
+- **Solution**: Break down complex conditions into individual branch tests
+- **Issue**: Cannot determine which branch is being executed
+ - **Solution**: Use JaCoCo HTML reports to identify red diamond (uncovered
branches)
+
#### SPI Testing Complexity
- **Issue**: SPI services are difficult to mock
- **Solution**: Use real services via `TypedSPILoader.getService()` when
appropriate
diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md
index ba5bfad82a5..6a4925d9077 100644
--- a/RELEASE-NOTES.md
+++ b/RELEASE-NOTES.md
@@ -19,6 +19,7 @@
### New Features
+1. Add ShardingSphere BOM -
[#36866](https://github.com/apache/shardingsphere/issues/36866)
1. Decouple feature modules as pluggable -
[#36086](https://github.com/apache/shardingsphere/pull/36086)
1. Decouple database types as pluggable -
[#35346](https://github.com/apache/shardingsphere/pull/35346)
1. Decouple registry center types as pluggable -
[#36087](https://github.com/apache/shardingsphere/pull/36087)
diff --git a/distribution/bom/pom.xml b/distribution/bom/pom.xml
new file mode 100644
index 00000000000..1e87d1d251a
--- /dev/null
+++ b/distribution/bom/pom.xml
@@ -0,0 +1,1279 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ ~ Licensed to the Apache Software Foundation (ASF) under one or more
+ ~ contributor license agreements. See the NOTICE file distributed with
+ ~ this work for additional information regarding copyright ownership.
+ ~ The ASF licenses this file to You under the Apache License, Version 2.0
+ ~ (the "License"); you may not use this file except in compliance with
+ ~ the License. You may obtain a copy of the License at
+ ~
+ ~ http://www.apache.org/licenses/LICENSE-2.0
+ ~
+ ~ Unless required by applicable law or agreed to in writing, software
+ ~ distributed under the License is distributed on an "AS IS" BASIS,
+ ~ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ ~ See the License for the specific language governing permissions and
+ ~ limitations under the License.
+ -->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://maven.apache.org/POM/4.0.0
http://maven.apache.org/xsd/maven-4.0.0.xsd">
+ <modelVersion>4.0.0</modelVersion>
+ <parent>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-distribution</artifactId>
+ <version>5.5.3-SNAPSHOT</version>
+ </parent>
+ <artifactId>shardingsphere-bom</artifactId>
+ <packaging>pom</packaging>
+ <name>${project.artifactId}</name>
+ <description>Bill of Materials for Apache ShardingSphere</description>
+
+ <dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-annotation</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-exception</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-data-source-pool-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-data-source-pool-hikari</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-common</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-context</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-classpath</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-absolutepath</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-zookeeper</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-url-etcd</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-algorithm-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-cryptographic-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-cryptographic-aes</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-key-generator-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-key-generator-snowflake</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-key-generator-uuid</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-load-balancer-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-load-balancer-random</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-load-balancer-round-robin</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-load-balancer-weight</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-message-digest-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-algorithm-message-digest-md5</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-binder-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-binder-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-binder-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-binder-oracle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-binder-sqlserver</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-binder-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-checker</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-route-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-route-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-route-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-rewrite-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-rewrite-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-merge</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-executor</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-session</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-expr-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-expr-entry</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-expr-literal</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-expr-interval</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-expr-groovy</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-expr-espresso</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-util</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-infra-reachability-metadata</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-database-connector-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-sql92</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-database-connector-h2</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-mariadb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-oracle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-sqlserver</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-clickhouse</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-doris</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-database-connector-hive</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-presto</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-connector-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-database-exception-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-exception-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-database-exception-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-database-protocol-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-distsql-engine</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-statement-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-sql92</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-oracle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-sqlserver</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-hive</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-clickhouse</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-doris</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-presto</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-engine-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-statement-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-statement-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-statement-oracle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-statement-sqlserver</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-parser-sql-statement-hive</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mode-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mode-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mode-node</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-cluster-mode-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-cluster-mode-repository-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-cluster-mode-repository-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-cluster-mode-repository-zookeeper</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-cluster-mode-repository-etcd</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-standalone-mode-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-standalone-mode-repository-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-standalone-mode-repository-memory</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-standalone-mode-repository-jdbc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-authority-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-authority-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-authority-simple</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-authority-database</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-authority-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-authority-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-authority-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-single-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-single-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-single-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-single-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-single-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-federation-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-federation-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-federation-compiler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-federation-executor</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-federation-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-federation-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-federation-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-parser-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-parser-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-parser-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-parser-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-parser-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-translator-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sql-translator-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-translator-native-provider</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-translator-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-translator-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sql-translator-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-time-service-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-time-service-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-system-time-service</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-database-time-service</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-transaction-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-transaction-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-transaction-base-seata-at</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-transaction-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-transaction-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-transaction-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-transaction-xa-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-transaction-xa-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-transaction-xa-atomikos</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-transaction-xa-narayana</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-global-clock-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-global-clock-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-global-clock-hlc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-global-clock-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-global-clock-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-global-clock-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-global-clock-tso-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-global-clock-tso-provider-local</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-global-clock-tso-provider-redis</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-schedule-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-data-pipeline-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-data-pipeline-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-data-pipeline-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-data-pipeline-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-feature-sharding</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-data-pipeline-cdc-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-cdc-protocol</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-cdc-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-cdc-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-cdc-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-cdc-client</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-scenario-migration-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-scenario-migration-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-scenario-migration-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-scenario-migration-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-data-pipeline-scenario-consistency-check</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-frontend-spi</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-frontend-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-frontend-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-proxy-frontend-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-proxy-frontend-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-frontend-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-backend-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-backend-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-proxy-backend-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-backend-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-backend-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-proxy-dialect-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-oracle</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-sqlserver</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-hive</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-presto</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-proxy-dialect-clickhouse</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-doris</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-dialect-mariadb</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-proxy-bootstrap</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-postgresql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-opengauss</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-protocol-firebird</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-broadcast-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-broadcast-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-broadcast-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-broadcast-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-broadcast-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-encrypt-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-encrypt-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-encrypt-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-encrypt-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-encrypt-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mask-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mask-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mask-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mask-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-mask-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-readwrite-splitting-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-readwrite-splitting-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-readwrite-splitting-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-readwrite-splitting-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-readwrite-splitting-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-shadow-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-shadow-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-shadow-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-shadow-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-shadow-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sharding-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sharding-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sharding-mysql</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sharding-distsql-statement</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-sharding-distsql-parser</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-sharding-distsql-handler</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-agent-api</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-agent-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-agent-plugin-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-agent-metrics-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-agent-metrics-prometheus</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-agent-tracing-core</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+
<artifactId>shardingsphere-agent-tracing-opentelemetry</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-agent-logging-file</artifactId>
+ <version>${project.version}</version>
+ </dependency>
+ </dependencies>
+ </dependencyManagement>
+
+ <build>
+ <plugins>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-jar-plugin</artifactId>
+ <configuration>
+ <skipIfEmpty>true</skipIfEmpty>
+ </configuration>
+ </plugin>
+ <plugin>
+ <groupId>org.apache.maven.plugins</groupId>
+ <artifactId>maven-deploy-plugin</artifactId>
+ <configuration>
+ <skip>false</skip>
+ </configuration>
+ </plugin>
+ </plugins>
+ </build>
+</project>
diff --git a/distribution/pom.xml b/distribution/pom.xml
index 175ebd0f20d..564953ec037 100644
--- a/distribution/pom.xml
+++ b/distribution/pom.xml
@@ -29,6 +29,7 @@
<modules>
<module>src</module>
+ <module>bom</module>
<module>agent</module>
<module>jdbc</module>
<module>proxy</module>
diff --git a/docs/document/content/user-manual/dependencies/_index.cn.md
b/docs/document/content/user-manual/dependencies/_index.cn.md
new file mode 100644
index 00000000000..ef109634f9e
--- /dev/null
+++ b/docs/document/content/user-manual/dependencies/_index.cn.md
@@ -0,0 +1,22 @@
++++
+pre = "<b>4.5. </b>"
+title = "依赖管理"
+weight = 5
+chapter = true
++++
+
+合理的依赖管理对于使用 ShardingSphere 构建稳定且可维护的应用程序至关重要。
+
+本章节提供了在项目中管理 ShardingSphere 依赖的全面指导,涵盖 Maven BOM 使用、版本兼容性以及企业级应用的最佳实践。
+
+ShardingSphere 提供多种发布方式以适应不同的集成场景。理解如何正确管理依赖能够确保版本兼容性并简化项目维护。
+
+本章节涵盖的主要主题包括:
+
+* **物料清单 (BOM)**:Maven 项目的集中化依赖版本管理
+* **版本兼容性**:理解版本关系和兼容性矩阵
+* **构建工具集成**:Maven 和 Gradle 的配置示例
+
+无论您是启动新项目还是维护现有的企业应用,正确的依赖管理有助于避免常见问题,如版本冲突、依赖地狱和部署问题。
+
+快速开始场景请参考[快速开始](../../quick-start/)章节。详细的配置示例请查阅 ShardingSphere-JDBC 和
ShardingSphere-Proxy 的相关章节。
diff --git a/docs/document/content/user-manual/dependencies/_index.en.md
b/docs/document/content/user-manual/dependencies/_index.en.md
new file mode 100644
index 00000000000..c5c535dbef2
--- /dev/null
+++ b/docs/document/content/user-manual/dependencies/_index.en.md
@@ -0,0 +1,22 @@
++++
+pre = "<b>4.5. </b>"
+title = "Dependency Management"
+weight = 5
+chapter = true
++++
+
+Proper dependency management is crucial for building stable and maintainable
applications with ShardingSphere.
+
+This chapter provides comprehensive guidance on managing ShardingSphere
dependencies in your projects, covering Maven BOM usage, version compatibility,
and best practices for enterprise applications.
+
+ShardingSphere provides multiple distribution methods to suit different
integration scenarios. Understanding how to properly manage dependencies
ensures version compatibility and simplifies project maintenance.
+
+The key topics covered in this chapter include:
+
+* **Bill of Materials (BOM)**: Centralized dependency version management for
Maven projects
+* **Version Compatibility**: Understanding version relationships and
compatibility matrices
+* **Build Tool Integration**: Configuration examples for Maven and Gradle
+
+Whether you are starting a new project or maintaining an existing enterprise
application, proper dependency management helps avoid common pitfalls such as
version conflicts, dependency hell, and deployment issues.
+
+For quick start scenarios, please refer to the [Quick
Start](../../quick-start/) chapter. For detailed configuration examples, please
consult the relevant sections in ShardingSphere-JDBC and ShardingSphere-Proxy.
diff --git a/docs/document/content/user-manual/dependencies/bom.cn.md
b/docs/document/content/user-manual/dependencies/bom.cn.md
new file mode 100644
index 00000000000..225f3d93766
--- /dev/null
+++ b/docs/document/content/user-manual/dependencies/bom.cn.md
@@ -0,0 +1,83 @@
++++
+pre = "<b>4.5.1. </b>"
+title = "物料清单 (BOM)"
+weight = 1
++++
+
+物料清单 (Bill of Materials, BOM) 是 Maven 的标准功能,提供集中化的依赖版本管理。ShardingSphere BOM
确保所有模块使用兼容的版本,消除版本冲突并简化依赖管理。
+
+## 什么是 ShardingSphere BOM?
+
+ShardingSphere BOM (`shardingsphere-bom`) 是一个包含所有 ShardingSphere 模块版本信息的 POM
文件。通过在项目中导入 BOM,您不再需要为单个 ShardingSphere 依赖指定版本。
+
+## 使用 BOM 的优势
+
+* **版本一致性**:确保所有 ShardingSphere 模块使用兼容版本
+* **简化依赖管理**:无需为单个模块指定版本
+* **轻松升级**:只需更改 BOM 版本即可升级所有 ShardingSphere 依赖
+* **减少 POM 体积**:更清晰、更易读的依赖声明
+* **冲突预防**:避免传递依赖之间的版本冲突
+
+## Maven 配置
+
+要在 Maven 项目中使用 ShardingSphere BOM,请在您的 `pom.xml` 中添加以下配置:
+
+```xml
+<dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-bom</artifactId>
+ <version>${shardingsphere.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+</dependencyManagement>
+```
+
+导入 BOM 后,您可以声明 ShardingSphere 依赖而无需指定版本:
+
+```xml
+<dependencies>
+ <!-- ShardingSphere JDBC 驱动 -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc</artifactId>
+ </dependency>
+
+ <!-- MySQL SQL 解析器 -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-mysql</artifactId>
+ </dependency>
+
+ <!-- 数据源池实现 -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-data-source-pool-hikari</artifactId>
+ </dependency>
+</dependencies>
+```
+
+## Gradle 支持
+
+对于 Gradle 用户,您可以通过 `dependencyManagement` 插件使用 BOM:
+
+```gradle
+plugins {
+ id 'java'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
+}
+
+dependencyManagement {
+ imports {
+ mavenBom
"org.apache.shardingsphere:shardingsphere-bom:${shardingsphereVersion}"
+ }
+}
+
+dependencies {
+ implementation 'org.apache.shardingsphere:shardingsphere-jdbc'
+ implementation
'org.apache.shardingsphere:shardingsphere-parser-sql-engine-mysql'
+}
+```
diff --git a/docs/document/content/user-manual/dependencies/bom.en.md
b/docs/document/content/user-manual/dependencies/bom.en.md
new file mode 100644
index 00000000000..6a09f1ea1ed
--- /dev/null
+++ b/docs/document/content/user-manual/dependencies/bom.en.md
@@ -0,0 +1,83 @@
++++
+pre = "<b>4.5.1. </b>"
+title = "Bill of Materials (BOM)"
+weight = 1
++++
+
+A Bill of Materials (BOM) is a standard Maven feature that provides
centralized dependency version management. ShardingSphere BOM ensures that all
modules use compatible versions, eliminating version conflicts and simplifying
dependency management.
+
+## What is ShardingSphere BOM?
+
+The ShardingSphere BOM (`shardingsphere-bom`) is a POM file that contains
version information for all ShardingSphere modules. By importing the BOM in
your project, you no longer need to specify versions for individual
ShardingSphere dependencies.
+
+## Benefits of Using BOM
+
+* **Version Consistency**: Ensures all ShardingSphere modules use compatible
versions
+* **Simplified Dependency Management**: No need to specify versions for
individual modules
+* **Easy Upgrades**: Upgrade all ShardingSphere dependencies by changing only
the BOM version
+* **Reduced POM Size**: Cleaner and more readable dependency declarations
+* **Conflict Prevention**: Avoids version conflicts between transitive
dependencies
+
+## Maven Configuration
+
+To use ShardingSphere BOM in your Maven project, add the following to your
`pom.xml`:
+
+```xml
+<dependencyManagement>
+ <dependencies>
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-bom</artifactId>
+ <version>${shardingsphere.version}</version>
+ <type>pom</type>
+ <scope>import</scope>
+ </dependency>
+ </dependencies>
+</dependencyManagement>
+```
+
+After importing the BOM, you can declare ShardingSphere dependencies without
versions:
+
+```xml
+<dependencies>
+ <!-- ShardingSphere JDBC Driver -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-jdbc</artifactId>
+ </dependency>
+
+ <!-- ShardingSphere Parser for MySQL -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-parser-sql-engine-mysql</artifactId>
+ </dependency>
+
+ <!-- Data Source Pool Implementation -->
+ <dependency>
+ <groupId>org.apache.shardingsphere</groupId>
+ <artifactId>shardingsphere-infra-data-source-pool-hikari</artifactId>
+ </dependency>
+</dependencies>
+```
+
+## Gradle Support
+
+For Gradle users, you can use the BOM through the `dependencyManagement`
plugin:
+
+```gradle
+plugins {
+ id 'java'
+ id 'io.spring.dependency-management' version '1.0.11.RELEASE'
+}
+
+dependencyManagement {
+ imports {
+ mavenBom
"org.apache.shardingsphere:shardingsphere-bom:${shardingsphereVersion}"
+ }
+}
+
+dependencies {
+ implementation 'org.apache.shardingsphere:shardingsphere-jdbc'
+ implementation
'org.apache.shardingsphere:shardingsphere-parser-sql-engine-mysql'
+}
+```