Dennis-Mircea Ciupitu created FLINK-40107:
---------------------------------------------

             Summary: Group example modules under an examples aggregator pom
                 Key: FLINK-40107
                 URL: https://issues.apache.org/jira/browse/FLINK-40107
             Project: Flink
          Issue Type: Improvement
          Components: Kubernetes Operator
    Affects Versions: kubernetes-operator-1.15.0
            Reporter: Dennis-Mircea Ciupitu


h1. Summary

Group the example modules under a dedicated {{examples}} aggregator pom instead 
of listing each of them individually in the parent {{pom.xml}}. The parent 
would then reference a single {{examples}} module, and the aggregator would own 
the list of example modules and their shared configuration.

h1. Motivation

The parent {{pom.xml}} currently lists the four example modules directly 
alongside the eight core modules:

* {{examples/flink-sql-runner-example}}
* {{examples/flink-beam-example}}
* {{examples/kubernetes-client-examples}}
* {{examples/autoscaling}}

This has a few downsides:

* The parent pom has to be edited every time an example is added or removed, 
mixing example bookkeeping with the core module list.
* Configuration common to all examples is duplicated. Each example pom 
independently sets {{maven.deploy.skip=true}}, since examples are not published.
* There is no single place that represents "the examples" as a unit, which 
makes it harder to build or skip them together.

Apache Flink itself uses this pattern via its {{flink-examples}} aggregator 
module, so there is established precedent in the ecosystem.

h1. Proposed change

Introduce an {{examples/pom.xml}} aggregator module (packaging {{pom}}) whose 
parent is {{flink-kubernetes-operator-parent}}. It would:

* Declare the four example modules in its own {{modules}} section.
* Own the shared example configuration, most notably 
{{maven.deploy.skip=true}}, so it is defined once and inherited.

The parent {{pom.xml}} would then reference only the single {{examples}} 
module, and each example would use the new aggregator as its parent. Because 
the aggregator inherits from the root parent, all existing managed 
dependencies, plugin configuration, and properties (for example 
{{flink.version}}) continue to resolve unchanged.

h1. Benefits

* The parent pom no longer changes when examples are added or removed.
* Shared example configuration lives in one place rather than being duplicated 
per example.
* The examples become addressable as a unit for building or skipping.

h1. Out of scope / open question

This change is purely structural and does not, by itself, remove the examples 
from the default reactor build, they are still built and shown in the reactor 
summary. Making the examples opt-in (for example behind a profile) is a 
separate decision with a CI tradeoff, since CI would then need to opt in to 
keep validating them. That should be discussed separately rather than bundled 
into this refactor.




--
This message was sent by Atlassian Jira
(v8.20.10#820010)

Reply via email to