Skip to content

Conversation

@delei
Copy link
Member

@delei delei commented Nov 22, 2025

Purpose of the pull request

Close #686

What's changed?

  • Split into multiple maven modules
  • Change the version number to 2.0.0-SNAPSHOT
  • Use ${revision} to manage the unified version number
  • Optimize the dependencies between modules

Multi-Module

The refactored project will have the following module hierarchy:

fesod-parent                            # Root
├── fesod-bom                           # Maven BOM
├── fesod-common                        # General modules and utility classes
├── fesod-examples                      # Usage examples
│   └── fesod-sheet-examples            # Fesod spreadsheets examples
└── fesod-sheet                         # For spreadsheets(csv,excel)
  • fesod-bom: Maven BOM(Bill of Materials) Module
  • fesod-common: Minimal dependencies, some generic utility classes have already been migrated.
  • fesod-examples: Create submodules according to the specific module (processor) type.
  • fesod-sheet: fesod has been renamed to fesod-sheet, for use in spreadsheets only

Dependency Graph

graph TD

    M2(fesod-common)
    M3(fesod-sheet-examples)
    M4(fesod-sheet)
    M5(fesod-examples)
    T1(poi-ooxml)
    T2(poi)
    T3(commons-io)
    T4(commons-csv)
    T5(ehcache)
    T6(fastexcel-support)
        
    M5 --> M3
    M4 --> M2
    M4 --> T1
    M4 --> T2
    M4 --> T3
    M4 --> T4
    M4 --> T5
    M4 --> T6
    M3 --> M4   

Loading

BOM

graph TD
    M1(fesod-bom)
    M2(fesod-common)
    M3(fesod-sheet)
        
    M1 -.-> M2
    M1 -.-> M3 

Loading

Checklist

  • I have read the Contributor Guide.
  • I have written the necessary doc or comment.
  • I have added the necessary unit tests and all cases have passed.

@delei delei added the PR: require-multiple-approvals This pull request requires multiple approvals. label Nov 22, 2025
@delei delei requested review from alaahong, Copilot and psxjoy and removed request for Copilot November 22, 2025 16:32
@netlify
Copy link

netlify bot commented Nov 25, 2025

Deploy Preview for fesod ready!

Name Link
🔨 Latest commit ac8742f
🔍 Latest deploy log https://app.netlify.com/projects/fesod/deploys/69259f14690d6f000864dee6
😎 Deploy Preview https://deploy-preview-706--fesod.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.

To edit notification comments on pull requests, go to your Netlify project configuration.

<dependency>
<groupId>org.apache.fesod</groupId>
<artifactId>fesod-sheet</artifactId>
<version>${project.version}</version>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

require to declare the version here if parent pom with dependency management?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

If the parent POM already has dependencies, then this is not necessary here. However, as an independent example project, I still included it separately to ensure that users can clearly identify the dependencies.

<dependency>
<groupId>org.apache.fesod</groupId>
<artifactId>fesod-common</artifactId>
<version>${project.version}</version>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

won't dependencies management from root pom cover this?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, should additional submodules (such as Spring) be added in future, they may directly depend on fesod-sheet, with fesod-common serving as a transitive dependency.

<artifactId>jazzer-junit</artifactId>
<scope>test</scope>
</dependency>
</dependencies>
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

why involve above dependencies into root pom? Won't dependencies management enough to cover?

Copy link
Member Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

IMO, unit tests are globally dependent, so there is no need to repeatedly introduce dependencies in sub-modules.

Copy link
Member

@alaahong alaahong left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Generally good, leave some questions on the additional version and dependencies.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

PR: require-multiple-approvals This pull request requires multiple approvals.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

[DISCUSS] Proposal: Refactor Fesod into Multi-Module Architecture

2 participants