Skip to content

Document and standardize bootstrap approach for pre-generated binding classes #573

@david-waltermire

Description

@david-waltermire

Summary

Some modules contain pre-generated binding classes that cannot be generated during normal builds due to circular dependencies or complex configurations. A standardized bootstrap approach is needed.

Background

The metaschema-maven-plugin creates circular dependencies when used in certain modules:

  • metaschema-testing: metaschema-maven-plugin → metaschema-schema-generator → metaschema-testing
  • databind: Complex binding configurations require manual post-processing

Current Bootstrap Pattern

Implemented in metaschema-testing (PR #567):

  • pom-bootstrap.xml - Standalone POM for regeneration
  • Pre-generated classes checked into src/main/java
  • README.md documents regeneration process
  • CLAUDE.md includes bootstrap instructions

Proposed Standardization

  1. Naming Convention: pom-bootstrap.xml for regeneration POMs
  2. Documentation: Each module with bootstrap classes should have:
    • README section explaining the bootstrap process
    • Reference in main CLAUDE.md
  3. Directory Structure:
    module/
    ├── pom.xml              # Normal build (no plugin)
    ├── pom-bootstrap.xml    # Regeneration only
    ├── README.md            # Documents bootstrap process
    └── src/main/
        ├── metaschema/          # Source Metaschema modules
        ├── metaschema-bindings/ # Binding configurations
        └── java/.../binding/    # Pre-generated classes
    

Modules Requiring Bootstrap

Acceptance Criteria

  • Document bootstrap pattern in project-level documentation
  • Create pom-bootstrap.xml for all modules with pre-generated bindings
  • Add README.md to each module explaining regeneration
  • Update CLAUDE.md with complete bootstrap documentation

Related

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    Status

    Done

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions