[
https://issues.apache.org/jira/browse/CAMEL-24809?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Claus Ibsen resolved CAMEL-24809.
---------------------------------
Fix Version/s: 4.23.0
Resolution: Fixed
> camel-kamelet-main - map more third-party libraries in the known
> dependencies, by package, and generate the list from the managed dependencies
> ----------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CAMEL-24809
> URL: https://issues.apache.org/jira/browse/CAMEL-24809
> Project: Camel
> Issue Type: Improvement
> Components: camel-kamelet-main
> Reporter: Claus Ibsen
> Priority: Major
> Fix For: 4.23.0
>
>
> camel run resolves a class in a bean declaration or in application.properties
> to a Maven dependency through {{camel-main-known-dependencies.properties}}
> (65 entries today) and downloads it on demand. The mapping is hand-maintained
> and covers a handful of JDBC drivers, connection factories and LangChain4j
> providers, so a bean of any other third-party type fails at startup with a
> class-not-found unless the dependency is declared by hand.
> {{KnownDependenciesResolver.findGav}} matches the class name and then each
> enclosing package, so one line per library is enough: {{org.postgresql =
> org.postgresql:postgresql:${pgjdbc-driver-version}}} covers the Driver,
> PGSimpleDataSource, the pooling datasource and everything else in the jar.
> h3. Proposal
> # Map the libraries camel-parent already manages a version for, by their
> distinctive package (never a shared parent such as {{org.apache.commons}}):
> JDBC ({{org.h2}}, {{org.mariadb.jdbc}}, {{com.mchange.v2.c3p0}},
> {{com.zaxxer.hikari}}, the datasource classes of the MySQL, MSSQL and Oracle
> drivers listed by driver only today), messaging
> ({{org.apache.activemq.ActiveMQConnectionFactory}} for classic ActiveMQ,
> {{org.apache.kafka.clients}}), data ({{com.fasterxml.jackson.databind}},
> {{com.google.gson}}, {{org.yaml.snakeyaml}}, {{org.apache.commons.csv}},
> {{com.univocity.parsers}}, {{org.apache.commons.lang3}},
> {{org.apache.commons.io}}, {{com.google.common}}), templates and HTTP
> ({{freemarker.template}}, {{org.apache.velocity}},
> {{org.apache.hc.client5}}), caching ({{com.github.benmanes.caffeine}},
> {{com.hazelcast}}, {{org.infinispan}}, {{org.ehcache}}), cloud SDKs by
> service package ({{software.amazon.awssdk.services.s3}} to
> {{software.amazon.awssdk:s3}} and the same for sqs, sns, dynamodb, kinesis),
> observability ({{io.micrometer}}, {{io.opentelemetry.api}}), scripting
> ({{groovy.lang}} to {{org.apache.groovy:groovy}}).
> # Better than maintaining that list by hand: generate it at build time. For
> each third-party artifact camel-parent manages, open the jar and emit its
> distinctive top-level packages against the GAV into a
> {{camel-thirdparty-known-dependencies.properties}} next to the two existing
> files, loaded by {{KnownDependenciesResolver.loadKnownDependencies}}.
> The validator in camel-jbang reads the same files (PR #26574), so every entry
> added here also stops a false "class not found" in camel validate and the MCP
> write tool.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)