[ 
https://issues.apache.org/jira/browse/CAMEL-26558?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Claus Ibsen updated CAMEL-26558:
--------------------------------
    Fix Version/s: 4.24.0

> camel-jbang - Export to Quarkus drops camel-quarkus-microprofile-health from 
> the pom.xml, also when it is asked for with --dep
> ------------------------------------------------------------------------------------------------------------------------------
>
>                 Key: CAMEL-26558
>                 URL: https://issues.apache.org/jira/browse/CAMEL-26558
>             Project: Camel
>          Issue Type: Bug
>          Components: camel-jbang
>    Affects Versions: 4.14.0, 4.18.5, 4.22.2, 4.23.0
>            Reporter: Thomas Raddatz
>            Priority: Minor
>             Fix For: 4.24.0
>
>
> {{camel export \-\-runtime=quarkus}} never writes 
> {{org.apache.camel.quarkus:camel-quarkus-microprofile-health}} to the 
> exported {{pom.xml}}, however the dependency is given: 
> {{\-\-dep=camel:microprofile-health}}, 
> {{\-\-dep=org.apache.camel:camel-microprofile-health}}, 
> {{\-\-dep=org.apache.camel.quarkus:camel-quarkus-microprofile-health}} or 
> {{camel.jbang.dependencies=camel:microprofile-health}} in 
> {{application.properties}}. The export reports success without a warning, and 
> the exported application starts without the SmallRye Health extension, so it 
> has no {{/q/health}} endpoint and no Camel health checks.
> The Quarkus export treats the extension as one that its POM template always 
> contains and removes it twice ({{ExportQuarkus}} in camel-jbang-core up to 
> 4.23, {{QuarkusExporter}} in camel-jbang-run on main since CAMEL-24724):
> * {{resolveDependencies}} removes every dependency that contains 
> {{camel-microprofile-health}} as an "out of the box" dependency,
> * the loop that builds the dependency list for the template skips 
> {{camel-quarkus-microprofile-health}} with the comment "Special case, 
> quarkus-pom.ftl already has them included."
> The template ({{quarkus-pom.ftl}}, {{quarkus-pom.tmpl}} up to 4.18) contains 
> only {{camel-quarkus-core}}, though.
> h3. Reproduction (Camel CLI 4.23.0)
> {code:bash}
> camel init hello.camel.yaml
> camel export hello.camel.yaml --runtime=quarkus --gav=org.example:hello:1.0.0 
> --dir=out \
>   --dep=camel:microprofile-health --dep=camel:jackson
> grep -E -o 'camel-quarkus-(microprofile-health|jackson)' out/pom.xml
> {code}
> {noformat}
> camel-quarkus-jackson
> {noformat}
> {{camel-quarkus-jackson}} is there, {{camel-quarkus-microprofile-health}} is 
> not.
> h3. History
> CAMEL-18719 (3.20.0) added the skip for {{camel-quarkus-core}}, 
> {{camel-quarkus-platform-http}} and {{camel-quarkus-microprofile-health}}, 
> the three extensions the template contained at that time. When commit 
> 0f60409d5ceb ("fix(jbang): include platform-http dependency") took 
> {{camel-quarkus-platform-http}} out of the template, it removed its skip and 
> its {{removeIf}} with it. [#17296|https://github.com/apache/camel/pull/17296] 
> (4.11.0) replaced {{camel-quarkus-microprofile-health}} in the template with 
> {{camel-quarkus-observability-services}}, which depends on the health 
> extension, but kept its two exclusions. That did no harm while the template 
> had {{camel-quarkus-observability-services}}. CAMEL-22187 (4.14.0) removed 
> that from the template as well, so that only {{\-\-observe}} adds it ({{camel 
> kubernetes export}} always sets it). Since 4.14.0 the health extension 
> therefore only comes with {{\-\-observe}}, together with the rest of 
> {{camel-quarkus-observability-services}} (Micrometer with the Prometheus 
> registry, OpenTelemetry, management).
> The exclusions and the template are the same on the camel-4.14.x, 
> camel-4.18.x, camel-4.22.x and camel-4.23.x branches (releases 4.18.5, 4.22.2 
> and 4.23.0) and on main.
> h3. Proposal
> Drop {{camel-microprofile-health}} and {{camel-quarkus-microprofile-health}} 
> from both exclusions, as 0f60409d5ceb did for platform-http, and keep only 
> {{camel-core}} / {{camel-quarkus-core}}, which the template does contain. 
> With {{\-\-observe}}, an explicit health dependency next to 
> {{camel-quarkus-observability-services}} only adds a direct dependency on an 
> artifact that is there transitively anyway. A test exports with 
> {{\-\-dep=camel:microprofile-health}} and checks the {{pom.xml}}.
> The workaround is to add the dependency to the exported {{pom.xml}} after the 
> export, or to export with {{\-\-observe}} if the other observability 
> extensions are wanted as well.



--
This message was sent by Atlassian Jira
(v10.3.26#10030026)

Reply via email to