Skip to content

POM vs Layout Matrix

This page maps runtime layout intent to concrete Maven topology in examples/csv-payments.

Use it to answer two questions quickly:

  1. What does pipeline.runtime.yaml change logically?
  2. Which POM/module topology is required to make that shape real?

Canonical model

  • Runtime layout = logical placement (pipeline.runtime.yaml).
  • Build topology = physical deployables (Maven modules/POMs).
  • Transport = call mechanism (GRPC, REST, LOCAL).

If layout and topology are not aligned, the build can succeed but runtime behavior will not match the intended deployment shape.

Layout to topology matrix (CSV Payments)

Target runtime layoutRuntime mapping fileMaven entrypointPhysical deployables producedStatus in csv-payments
modularconfig/runtime-mapping/modular-auto.yaml or modular-strict.yamlexamples/csv-payments/pom.xmlPer-service runtimes + orchestrator + persistenceImplemented
pipeline-runtimeconfig/runtime-mapping/pipeline-runtime.yamlexamples/csv-payments/pom.pipeline-runtime.xml via build-pipeline-runtime.shorchestrator-svc + pipeline-runtime-svc + persistence-svcImplemented
monolithconfig/runtime-mapping/monolith.yamlexamples/csv-payments/pom.monolith.xml via build-monolith.shSingle monolith-svc runtimeImplemented

Phase/execution relevance by topology

Legend:

  • required: needed for that topology
  • n/a: not part of that topology
  • depends: required only if that module is present in the topology
Build concernModular (pom.xml)Pipeline-runtime (pom.pipeline-runtime.xml)Monolith (pom.monolith.xml)
Parent dev cert generation (generate-dev-certs.sh)requiredrequiredrequired
Per-module role source roots (target/generated-sources/pipeline/*)requiredrequiredrequired
Role-specific compile outputs (classes-pipeline/*)requiredrequiredrequired
Merge role outputs into target/classes before packagingrequiredrequiredrequired
Merge orchestrator pipeline metadata into packaged runtime (META-INF/pipeline/order.json, telemetry.json, orchestrator-clients.properties)n/arequired for grouped runtime modulerequired (monolith-svc)
Source aggregation from multiple service modulesn/arequired for grouped runtime modulerequired (monolith-svc)
Standalone orchestrator runtime modulerequiredrequiredn/a
Standalone grouped pipeline runtime modulen/arequired (pipeline-runtime-svc)n/a
Standalone plugin runtime module (for plugin aspects)dependsrequired (typical)n/a

Practical interpretation

  • Runtime mapping alone can make placement deterministic, but not alter artifact count.
  • Build topology determines whether you actually deploy 1, 2, or many runtimes.
  • CSV Payments now ships dedicated topology lanes for all three layouts: modular (pom.xml), pipeline-runtime (pom.pipeline-runtime.xml), and monolith (pom.monolith.xml).