terrymanu commented on issue #36866:
URL:
https://github.com/apache/shardingsphere/issues/36866#issuecomment-3495406835
Problem Analysis
Thank you for raising this valuable feature request! After analysis, I
completely understand your pain point:
- ShardingSphere indeed has 408 modules, making dependency management
complex
- External users need to understand the specific internal module structure
to use it correctly
- Lack of user-friendly dependency management approach
This is not a bug, but a reasonable request to improve user experience.
Fix Suggestion
I recommend creating a dedicated BOM module for ShardingSphere to solve
this problem. The specific implementation plan is as follows:
1. Create Core BOM Module
Create a shardingsphere-bom module in the project root directory:
<!-- shardingsphere-bom/pom.xml -->
<project xmlns="http://maven.apache.org/POM/4.0.0">
<modelVersion>4.0.0</modelVersion>
<parent>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere</artifactId>
<version>5.5.3-SNAPSHOT</version>
</parent>
<artifactId>shardingsphere-bom</artifactId>
<packaging>pom</packaging>
<name>ShardingSphere BOM</name>
<description>Bill of Materials for Apache ShardingSphere</description>
<dependencyManagement>
<dependencies>
<!-- Core modules -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- Feature modules -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-sharding-core</artifactId>
<version>${project.version}</version>
</dependency>
<!-- More modules organized by functional category... -->
</dependencies>
</dependencyManagement>
</project>
2. User Usage Pattern
Users can greatly simplify dependency management through the following
approach:
<!-- User's project pom.xml -->
<dependencyManagement>
<dependencies>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-bom</artifactId>
<version>5.5.3-SNAPSHOT</version>
<type>pom</type>
<scope>import</scope>
</dependency>
</dependencies>
</dependencyManagement>
<dependencies>
<!-- Simplified dependency declarations, no version numbers needed -->
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-jdbc-core</artifactId>
</dependency>
<dependency>
<groupId>org.apache.shardingsphere</groupId>
<artifactId>shardingsphere-sharding-core</artifactId>
</dependency>
</dependencies>
3. Implementation Steps
1. Create BOM Module Basic Structure
- Create shardingsphere-bom directory in project root
- Configure BOM module's pom.xml
2. Organize and Categorize Dependencies
- Organize internal modules by function (Core, Features, Mode, Parser,
Connector)
- Add recommended external dependency version management
3. Update Project Structure
- Add BOM module to root pom.xml's modules list
- Maintain backward compatibility with existing builds
4. Create Usage Documentation
- BOM usage guide
- Dependency examples for different scenarios
Enthusiastic Invitation
This is a very valuable feature improvement that will greatly enhance the
user experience of ShardingSphere!
We sincerely invite you to submit a PR to implement this feature:
1. Create the basic structure of the BOM module
2. Organize ShardingSphere's internal module dependencies by functional
category
3. Add usage documentation and examples
4. Ensure compatibility with existing build processes
Such improvements will make ShardingSphere more user-friendly and lower
the barrier to entry for new users. If you encounter any issues during
implementation, we are happy to provide guidance and assistance!
Looking forward to your contribution!
--
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.
To unsubscribe, e-mail: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]