This page lists every artefact published by Vauban, the Java Modules packages they export, the Maven-plugin goals, and the comparison between the CDI Lite and Full profiles.
Maven artefacts
| Artefact | Recommended scope | Role |
|---|---|---|
|
|
Version marker ( |
|
|
CDI 4.1 Lite container runtime |
|
|
APT (emits |
|
|
Build-time bean indexer (zero dependency) |
|
|
Maven plugin (goals: |
|
|
ClassLoader SPI ( |
|
|
Universal class-loader engine ( |
|
|
Client-proxy weaving transforms (Class-File API), also packaged as a load-time agent |
|
|
|
|
|
JUnit 5 extension ( |
|
|
Official integration test suite |
Exported Java modules
| Module | Exported packages |
|---|---|
|
|
|
|
|
|
|
(internal — requires |
|
|
|
|
|
|
|
|
|
|
io.vidocq.vauban.core provides jakarta.enterprise.inject.spi.CDIProvider (VaubanCDIProvider), jakarta.enterprise.inject.se.SeContainerInitializer (VaubanSeContainerInitializer) and jakarta.enterprise.inject.build.compatible.spi.BuildServices (VaubanBuildServices) via provides. No unjustified opens.
Maven plugin goals
| Goal | Role |
|---|---|
|
Bound to |
|
Bound to |
|
Bound to |
Annotation-processor options
vauban-processor accepts two APT options (-A flags on javac, <compilerArgs> in Maven):
| Option | Effect |
|---|---|
|
Skips the static deployment validation (unsatisfied/ambiguous, unproxyable and circular-dependency checks). Useful when beans rely on injections that only a runtime Build Compatible Extension can satisfy (e.g. MicroProfile |
|
Default |
JUnit extension (vauban-junit)
@VaubanTest boots a lightweight container for tests:
@VaubanTest
@AddBeans(GreetingService.class)
class GreetingServiceTest {
@Inject GreetingService greeting;
@Test
void hello() {
assertEquals("Hello, Vauban!", greeting.hello("Vauban"));
}
}
Bean selection:
-
@VaubanTest— a plain marker (no members). Boots the container viaVaubanContainer.builder()before all tests, closes it after the last one, and injects the test instance’s@Injectfields. -
@AddBeans({Foo.class, Bar.class})— a separate annotation that registers the listed classes on the container builder (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(Java Modules visibility); -
the bootstrap strategy (
scanLocal(),scanClasspath(),addBeanClass()).
For dynamic application configuration, use MicroProfile Config through Vidocq Runtime.
Bugs
-
BUG.md — tracked reproducible bugs.