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]

Reply via email to