GuicedEE Installer
Upgrade an existing module to the same baseline expected by guicedee-creator.
Required Flow
- Inspect current project state (
pom.xml, wrapper files, source roots, module-info files). - Patch
pom.xmlto align withreferences/retrofit-checklist.md:- Java baseline set to 25+
- GuicedEE BOM imported in
dependencyManagement - Enforcer rules for Maven 4 and Java 25+
- Testing baseline includes
org.junit.jupiter:junit-jupiter(testscope), JUnit Jupiter6.0.3+, and Mockito
- Ensure Maven wrapper points to Maven 4 (
.mvn/wrapper/maven-wrapper.properties). - Create or repair:
src/main/java/module-info.javasrc/test/java/module-info.java- ensure test module
requiresJUnit Jupiter module(s) - ensure every test package
opens ... to org.junit.platform.commons - ensure packages requiring injection open to
com.google.guice - ensure DTO/JSON deserialization packages open to
tools.jackson.databind - ensure Vert.x packages open to
com.guicedee.vertx - safe default: open each used package to all required runtime targets
- Create or repair bootstrap
main()class with:LogUtils.addHighlightedConsoleLogger(Level.DEBUG)IGuiceContext.registerModule("<mainModule>")GuiceApplication.run(preparation)for executable mains, orIGuiceContext.instance().inject()with explicit loading completion handling for embedded startup (seeguicedee-inject). Preserve the application's required scanning configuration.
- If lifecycle customization exists, ensure SPI implementations are correctly dual-registered:
com.guicedee.client.services.lifecycle.IGuicePreStartupcom.guicedee.client.services.lifecycle.IGuiceModulecom.guicedee.client.services.lifecycle.IGuicePostStartup- Use
Integer sortOrder()when changing the inherited order; useInteger shutdownSortOrder()for distinct teardown ordering - registrations required in both
module-info.javaandsrc/main/resources/META-INF/services/*
- Apply package separation:
- test module name defaults to
<mainModule>.test - test package names end with
.test - no duplicate package names between main and test source roots
- test module name defaults to
- Run creator validator when available:
python3 ../guicedee-creator/scripts/verify_guicedee_baseline.py --project-root .- If not installed side-by-side, apply the checklist manually.
- The script reads local files, not Maven's effective model. Confirm inherited BOMs/plugins/versions with the effective POM before changing valid parent-managed configuration.
Migration Rules
- Prefer forward-only edits: change files to final target state in one pass.
- Do not keep old Java/Maven compatibility profiles when they conflict with Maven 4/JDK 25 baseline.
- Keep module/package naming deterministic to avoid split-package issues in JPMS tests.
pom.xmlmust includeorg.junit.jupiter:junit-jupiterwithtestscope.- Safe module rule: open used main packages to
com.google.guice,tools.jackson.databind, andcom.guicedee.vertx; includeorg.junit.platform.commonsfor test packages.
References
references/retrofit-checklist.md- patch checklist and exact BOM snippet.