Complete monorepo implementation of the NAESB Energy Services Provider Interface (ESPI) 4.0 specification for Green Button energy data standards.
# Clone the monorepo
git clone https://github.com/GreenButtonAlliance/OpenESPI-GreenButton-Java.git
cd OpenESPI-GreenButton-Java
# Build all modules (Java 21 + Jakarta EE throughout)
mvn clean install
# Run Spring Boot 3.5 modules
cd openespi-datacustodian && mvn spring-boot:run
cd openespi-authserver && mvn spring-boot:run
Module | Description | Java | Jakarta EE | Spring Boot | Status |
---|---|---|---|---|---|
openespi-common | Shared domain models, services | 21 β | 9+ β | 3.5.0 β | Production |
openespi-datacustodian | OAuth2 resource server | 21 β | 9+ β | 3.5.0 β | Production |
openespi-authserver | OAuth2 authorization server | 21 β | 9+ β | 3.5.0 β | Production |
openespi-thirdparty | Client application | 21 β | 9+ β | 4.0.6 |
Partial Migration |
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β Third Party βββββΆβ Authorization βββββΆβ Data Custodian β
β (Java 21+Jakarta)β β Server (SB 3.5) β β Server (SB 3.5) β
βββββββββββββββββββ βββββββββββββββββββ βββββββββββββββββββ
β β β
βββββββββββββββββββββββββΌββββββββββββββββββββββββ
βΌ
βββββββββββββββββββ
β OpenESPI Common β
β (Spring Boot 3.5)β
βββββββββββββββββββ
All modules now support:
- β Java 21 - Modern JVM with performance improvements
- β Jakarta EE 9+ - Modern enterprise Java APIs
- β Consistent build system - Maven 3.9+ throughout
Spring Boot 3.5 modules:
- β openespi-common - Foundation library
- β openespi-datacustodian - Resource server
- β openespi-authserver - Authorization server
Partially migrated:
β οΈ openespi-thirdparty - Java 21 + Jakarta ready, Spring Boot migration in progress
# Build everything - all modules are Java 21 compatible
mvn clean install
# Test specific module
mvn test -pl openespi-datacustodian -am
# Build only fully-migrated modules
mvn clean install -Pspring-boot-only
# Work on Common module
cd openespi-common
mvn clean test
mvn spring-boot:run
# Work on DataCustodian
cd openespi-datacustodian
mvn clean test -am # Test with dependencies
mvn spring-boot:run
# Work on AuthServer
cd openespi-authserver
mvn clean test -am
mvn spring-boot:run
The ThirdParty module preserves important migration work from the main branch:
β Completed (from main branch):
- Java 1.7 β Java 21 upgrade
- javax.servlet β jakarta.servlet migration
- JSP/JSTL Jakarta compatibility
- Modern Maven toolchain
π Next Steps:
- Spring Framework β Spring Boot 3.5 migration
- OAuth2 client modernization
- Configuration externalization
# Test all modules
mvn test
# Test specific module
mvn test -pl openespi-common
# TestContainers integration tests
mvn verify -pl openespi-common -Pintegration-tests
# Cross-module integration
mvn verify -Pfull-integration
Each module has independent deployment capabilities:
- Common: Maven Central library
- DataCustodian: Kubernetes/Docker deployment
- AuthServer: Kubernetes/Docker deployment
- ThirdParty: WAR deployment or future containerization
# Build individual service images
cd openespi-datacustodian && docker build -t openespi-datacustodian .
cd openespi-authserver && docker build -t openespi-authserver .
# Deploy with Helm
helm install openespi-datacustodian ./helm/datacustodian
helm install openespi-authserver ./helm/authserver
This monorepo was created by consolidating separate repositories:
- openespi-common: From OpenESPI-Common-java (main branch)
- openespi-datacustodian: From OpenESPI-DataCustodian-java (main branch)
- openespi-authserver: From OpenESPI-AuthorizationServer-java (main branch)
- openespi-thirdparty: From OpenESPI-ThirdParty-java (main branch)
All original commit history has been preserved using git subtree.
- Migration Status - Detailed migration information
- Development Guide - Development workflow
- Deployment Guide - Production deployment
- API Documentation - REST API reference
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature
) - Make your changes in the appropriate module
- Test your changes (
mvn test -pl <module> -am
) - Commit your changes (
git commit -m 'Add amazing feature'
) - Push to the branch (
git push origin feature/amazing-feature
) - Open a Pull Request
- Follow existing code style in each module
- Write tests for new functionality
- Update documentation as needed
- Ensure CI/CD pipelines pass
Licensed under the Apache License 2.0. See LICENSE for details.
- Green Button Alliance: https://www.greenbuttonalliance.org
- Issues: https://github.com/GreenButtonAlliance/OpenESPI-GreenButton-Java/issues
- Discussions: https://github.com/GreenButtonAlliance/OpenESPI-GreenButton-Java/discussions
Migration Strategy: All modules use main
branches to preserve maximum migration work and ensure Java 21 + Jakarta EE consistency across the ecosystem.
Built with β€οΈ by the Green Button Alliance community