This page lists every artefact published by Vauban, the JPMS packages they export, the Maven-plugin goals, and the comparison between the CDI Lite and Full profiles.
Maven artefacts
| Artefact | Recommended scope | Role |
|---|---|---|
|
|
Public API ( |
|
|
CDI 4.1 Lite container runtime |
|
|
APT (emits |
|
|
Build-time bean indexer (zero dependency) |
|
|
Maven plugin (goals: |
|
|
ClassLoader SPI ( |
|
|
|
|
|
JUnit 5 extension ( |
|
|
Official integration test suite |
Exported JPMS modules
| Module | Exported packages |
|---|---|
|
|
|
|
|
|
|
(internal — requires |
|
|
|
|
|
|
io.vidocq.vauban.core provides jakarta.enterprise.inject.spi.CDIProvider via provides. No unjustified opens.
Maven plugin goals
| Goal | Role |
|---|---|
|
Scans the module path and writes |
|
Runs the APT (equivalent to |
|
Emits |
|
JPMS analysis, detects split packages and inconsistent exports. |
|
Packages a runnable distribution (jlink + image). |
|
Encrypts a signed jar via |
JUnit extension (vauban-junit)
@VaubanTest boots a lightweight container for tests:
@VaubanTest
class GreetingServiceTest {
@Inject GreetingService greeting;
@Test
void hello() {
assertEquals("Hello, Vauban!", greeting.hello("Vauban"));
}
}
Three discovery modes:
-
@VaubanTestalone —scanLocal()of the test’s package. -
@VaubanTest(scan = ScanMode.CLASSPATH)— fullscanClasspath(). -
@VaubanTest(beans = {Foo.class, Bar.class})—addBeanClass(…).
CDI 4.1 Lite vs Full comparison
| Feature | Lite | Full | Vauban |
|---|---|---|---|
Managed beans, standard scopes |
✅ |
✅ |
✅ |
Producers, disposers |
✅ |
✅ |
✅ |
Events ( |
✅ |
✅ |
✅ |
Interceptors ( |
✅ |
✅ |
✅ |
Build Compatible Extensions (BCE) |
✅ |
✅ |
✅ |
Portable Extensions (runtime |
❌ |
✅ |
❌ |
|
❌ |
✅ |
❌ |
|
❌ |
✅ |
// TODO@user: confirm |
Passivation, bean serialisation |
❌ |
✅ |
❌ |
|
❌ |
✅ |
❌ |
EL for managed beans |
❌ |
✅ |
❌ |
Decorators |
Optional |
✅ |
// TODO@user: validate coverage |
Configuration
Vauban needs no application configuration file. Bean selection happens via:
-
the
module-info.java(JPMS visibility); -
the bootstrap strategy (
scanLocal(),scanClasspath(),addBeanClass()).
For dynamic application configuration, use MicroProfile Config through Vidocq Runtime.