This is an automated email from the ASF dual-hosted git repository.

nfilotto pushed a commit to branch 346/auto-detect-version
in repository https://gitbox.apache.org/repos/asf/camel-karaf.git

commit c73351c684a96efbbe764efbccfa0abeccac6d46
Author: Nicolas Filotto <nfilo...@talend.com>
AuthorDate: Thu Jun 13 16:19:29 2024 +0200

    Ref #346: Allow to auto detect the version of transitive dependencies
---
 components/pom.xml                                 |  18 -
 features/pom.xml                                   |   1 +
 features/src/main/feature/camel-features.xml       | 425 +++++++++++----------
 pom.xml                                            |   4 +
 tests/camel-test-blueprint/route.xml               |  12 -
 .../karaf/feature/maven/AutoDetectVersionMojo.java | 290 ++++++++++++++
 .../camel/karaf/feature/maven/WrappedBundle.java   |   2 +-
 .../src/it/auto-detect-version/pom.xml             |  51 +++
 .../src/main/feature/expected.xml                  |  63 +++
 .../src/main/feature/features.xml                  |  63 +++
 .../src/it/auto-detect-version/verify.groovy       |  58 +++
 11 files changed, 745 insertions(+), 242 deletions(-)

diff --git a/components/pom.xml b/components/pom.xml
index da50a564..19b4c8c7 100644
--- a/components/pom.xml
+++ b/components/pom.xml
@@ -318,22 +318,4 @@
         <module>camel-zookeeper</module>
         <module>camel-zookeeper-master</module>
     </modules>
-
-    <build>
-        <plugins>
-            <!-- generates an osgi repository added to the test karaf 
containing the dependencies-->
-            <plugin>
-                <groupId>org.apache.servicemix.tooling</groupId>
-                <artifactId>depends-maven-plugin</artifactId>
-                <executions>
-                    <execution>
-                        <id>generate-depends-file</id>
-                        <goals>
-                            <goal>generate-depends-file</goal>
-                        </goals>
-                    </execution>
-                </executions>
-            </plugin>
-        </plugins>
-    </build>
 </project>
diff --git a/features/pom.xml b/features/pom.xml
index 912c8fd8..e12c6ac0 100644
--- a/features/pom.xml
+++ b/features/pom.xml
@@ -74,6 +74,7 @@
                 <executions>
                     <execution>
                         <goals>
+                            <goal>auto-detect-version</goal>
                             <goal>ensure-wrap-bundle-version</goal>
                             <goal>configure-wrap-spi-provider</goal>
                         </goals>
diff --git a/features/src/main/feature/camel-features.xml 
b/features/src/main/feature/camel-features.xml
index 2eb06dfd..1bde3c7d 100644
--- a/features/src/main/feature/camel-features.xml
+++ b/features/src/main/feature/camel-features.xml
@@ -296,7 +296,7 @@
     <feature name='camel-activemq' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-jms</feature>
         <bundle 
dependency='true'>mvn:org.apache.activemq/activemq-client/${activemq-version}</bundle>
-        <bundle 
dependency='true'>mvn:org.fusesource.hawtbuf/hawtbuf/1.11</bundle>
+        <bundle 
dependency='true'>mvn:org.fusesource.hawtbuf/hawtbuf/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-activemq/${project.version}</bundle>
     </feature>
 
@@ -343,7 +343,7 @@
     </feature>
     <feature name='camel-atom' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency="true">wrap:mvn:com.apptasticsoftware/rssreader/3.6.0</bundle>
+        <bundle 
dependency="true">wrap:mvn:com.apptasticsoftware/rssreader/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-atom/${project.version}</bundle>
     </feature>
     <feature name='camel-avro' version='${project.version}' start-level='50'>
@@ -394,7 +394,7 @@
     <feature name='camel-aws2-eventbridge' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version="${aws-java-sdk2-version}">awssdk</feature>
-        <bundle dependency='true'>mvn:commons-io/commons-io/2.14.0</bundle>
+        <bundle 
dependency='true'>mvn:commons-io/commons-io/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:software.amazon.awssdk/eventbridge/${aws-java-sdk2-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-aws2-eventbridge/${project.version}</bundle>
     </feature>
@@ -451,7 +451,7 @@
     <feature name='camel-aws2-ses' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version="${aws-java-sdk2-version}">awssdk</feature>
-        <bundle 
dependency="true">mvn:jakarta.mail/jakarta.mail-api/2.1.2</bundle>
+        <bundle 
dependency="true">mvn:jakarta.mail/jakarta.mail-api/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:software.amazon.awssdk/ses/${aws-java-sdk2-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-aws2-ses/${project.version}</bundle>
     </feature>
@@ -524,27 +524,27 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <feature version='[1.48,2)'>azure</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-cosmos/4.58.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-cosmos/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-cosmosdb/${project.version}</bundle>
     </feature>
     <feature name='camel-azure-eventhubs' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[1.48,2)'>azure-eventhubs</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob/12.25.4</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-eventhubs/${project.version}</bundle>
     </feature>  
     <feature name='camel-azure-files' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-ftp</feature>
         <feature version='[1.48,2)'>azure-storage</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-file-share/12.21.4</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-file-share/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-files/${project.version}</bundle>
     </feature>
     <feature name='camel-azure-key-vault' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <feature version='[1.48,2)'>azure-eventhubs</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-security-keyvault-secrets/4.8.2</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob/12.25.4</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-security-keyvault-secrets/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-key-vault/${project.version}</bundle>
     </feature>
     <feature name='camel-azure-schema-registry' version='${project.version}' 
start-level='50'>
@@ -555,14 +555,14 @@
     <feature name='camel-azure-servicebus' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[1.48,2)'>azure</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-core-amqp/2.9.3</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-messaging-servicebus/7.16.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-core-amqp/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-messaging-servicebus/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-servicebus/${project.version}</bundle>
     </feature>
     <feature name='camel-azure-storage-blob' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[1.48,2)'>azure-storage</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob/12.25.4</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-blob-changefeed/${azure-storage-blob-changefeed-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-storage-blob/${project.version}</bundle>
     </feature>
@@ -570,13 +570,13 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[1.48,2)'>azure-storage</feature>
         <bundle 
dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-file-datalake/12.18.4</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-file-datalake/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-storage-datalake/${project.version}</bundle>
     </feature>
     <feature name='camel-azure-storage-queue' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[1.48,2)'>azure-storage</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-queue/12.20.4</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.azure/azure-storage-queue/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-azure-storage-queue/${project.version}</bundle>
     </feature>
     <feature name='camel-base64' version='${project.version}' start-level='50'>
@@ -588,7 +588,7 @@
         <feature>jakarta-validation</feature>
         
<bundle>mvn:org.hibernate.validator/hibernate-validator/${hibernate-validator-version}</bundle>
         
<bundle>mvn:org.jboss.logging/jboss-logging/${jboss-logging-version}</bundle>
-        <bundle>mvn:com.fasterxml/classmate/1.5.1</bundle>
+        <bundle>mvn:com.fasterxml/classmate/${auto-detect-version}</bundle>
         
<bundle>mvn:jakarta.el/jakarta.el-api/${jakarta-el-api-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-bean-validator/${project.version}</bundle>
     </feature>
@@ -608,7 +608,7 @@
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <feature version="[5,6)">jakarta-servlet</feature>
         <feature version="[3,4)">jaxb-runtime</feature>
-        <bundle 
dependency="true">mvn:org.apache.ws.xmlschema/xmlschema-core/2.3.1</bundle>
+        <bundle 
dependency="true">mvn:org.apache.ws.xmlschema/xmlschema-core/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.cxf/cxf-core/${cxf-version}</bundle>
@@ -646,10 +646,10 @@
         <feature version='[4.1,5)'>netty</feature>
         <bundle 
dependency="true">mvn:com.datastax.oss/java-driver-core/${cassandra-driver-version}</bundle>
         <bundle 
dependency='true'>mvn:com.datastax.oss/java-driver-query-builder/${cassandra-driver-version}</bundle>
-        <bundle 
dependency="true">mvn:com.datastax.oss/native-protocol/1.5.1</bundle>
-        <bundle 
dependency="true">mvn:com.datastax.oss/java-driver-shaded-guava/25.1-jre-graal-sub-1</bundle>
+        <bundle 
dependency="true">mvn:com.datastax.oss/native-protocol/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.datastax.oss/java-driver-shaded-guava/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:io.dropwizard.metrics/metrics-core/${metrics-version}</bundle>
-        <bundle dependency='true'>mvn:com.typesafe/config/1.4.1</bundle>
+        <bundle 
dependency='true'>mvn:com.typesafe/config/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.hdrhistogram/HdrHistogram/${hdrhistrogram-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-cassandraql/${project.version}</bundle>
     </feature>
@@ -712,7 +712,7 @@
     </feature>
     <feature name='camel-couchbase' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency='true'>mvn:com.couchbase.client/core-io/2.6.2</bundle>
+        <bundle 
dependency='true'>mvn:com.couchbase.client/core-io/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:com.couchbase.client/java-client/${couchbase-client-version}</bundle>
         <bundle 
dependency='true'>mvn:io.projectreactor/reactor-core/${reactor-version}</bundle>
         <bundle 
dependency='true'>mvn:org.reactivestreams/reactive-streams/${reactive-streams-version}</bundle>
@@ -721,7 +721,7 @@
     <feature name='camel-couchdb' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version="[4,5)">http-client</feature>
-        <bundle dependency='true'>mvn:com.google.code.gson/gson/2.9.1</bundle>
+        <bundle 
dependency='true'>mvn:com.google.code.gson/gson/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.lightcouch/lightcouch/${lightcouch-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-couchdb/${project.version}</bundle>
     </feature>
@@ -754,10 +754,10 @@
         <feature>jakarta-validation</feature>
         <feature version="[11,12)">jetty</feature>
         <bundle 
dependency="true">mvn:org.glassfish.hk2/osgi-resource-locator/2.5.0-b42</bundle>
-        <bundle dependency="true">mvn:org.apache.neethi/neethi/3.2.0</bundle>
-        <bundle 
dependency="true">mvn:org.apache.ws.xmlschema/xmlschema-core/2.3.1</bundle>
+        <bundle 
dependency="true">mvn:org.apache.neethi/neethi/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.apache.ws.xmlschema/xmlschema-core/${auto-detect-version}</bundle>
         <bundle 
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.cglib/${cglib-version}_1</bundle>
-        <bundle 
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/1.6.3_1</bundle>
+        <bundle 
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.wsdl4j/${auto-detect-version:alias=wsdl4j/wsdl4j}_1</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-attachments/${project.version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-http-base/${project.version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-cxf-all/${project.version}</bundle>
@@ -774,7 +774,7 @@
         <bundle 
dependency='true'>wrap:mvn:com.datasonnet/datasonnet-mapper/${datasonnet-mapper-version}</bundle>
         <bundle 
dependency='true'>mvn:io.github.classgraph/classgraph/${classgraph-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.lihaoyi/ujson_2.13/1.2.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.lihaoyi/ujson_2.13/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-datasonnet/${project.version}</bundle>
     </feature>
     <feature name='camel-debug' version='${project.version}' start-level='50'>
@@ -791,7 +791,7 @@
     </feature>
     <feature name='camel-disruptor' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>mvn:com.lmax/disruptor/3.4.4</bundle>
+        <bundle 
dependency='true'>mvn:com.lmax/disruptor/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-disruptor/${project.version}</bundle>
     </feature>
     <feature name='camel-djl' version='${project.version}' start-level='50'>
@@ -822,7 +822,7 @@
     <feature name='camel-dropbox' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version="[6,7)">jakarta-servlet</feature>
-        <bundle 
dependency='true'>mvn:com.google.code.findbugs/jsr305/3.0.2</bundle>
+        <bundle 
dependency='true'>mvn:com.google.code.findbugs/jsr305/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.core/jackson-core/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:com.dropbox.core/dropbox-core-sdk/${dropbox-version}</bundle>
@@ -933,13 +933,13 @@
         <bundle 
dependency='true'>mvn:com.jayway.jsonpath/json-path/${json-path-version}</bundle>
         <bundle 
dependency='true'>mvn:net.minidev/json-smart/${json-smart-version}</bundle>
         <bundle 
dependency='true'>mvn:net.minidev/accessors-smart/${json-smart-version}</bundle>
-        <bundle dependency='true'>mvn:org.ow2.asm/asm/9.3</bundle>
+        <bundle 
dependency='true'>mvn:org.ow2.asm/asm/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-geocoder/${project.version}</bundle>
     </feature>
     <feature name='camel-git' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <bundle 
dependency='true'>mvn:org.eclipse.jgit/org.eclipse.jgit/${jgit-version}</bundle>
-        <bundle 
dependency='true'>mvn:com.googlecode.javaewah/JavaEWAH/1.2.3</bundle>
+        <bundle 
dependency='true'>mvn:com.googlecode.javaewah/JavaEWAH/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-git/${project.version}</bundle>
     </feature>
     <feature name='camel-github' version='${project.version}' start-level='50'>
@@ -954,13 +954,13 @@
         <feature version='[4,5)'>http-client</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/${google-cloud-http-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*&amp;Export-Package=com.google.api.client.auth*;version=${google-cloud-http-client-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.apis/google-api-services-bigquery/v2-rev20240211-2.0.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.apis/google-api-services-bigquery/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${google-auth-library-oauth2-http-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${google-auth-library-oauth2-http-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-common-protos/2.36.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-bigquery/2.38.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-common-protos/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-bigquery/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-google-bigquery/${project.version}</bundle>
     </feature>
     <feature name='camel-google-calendar' version='${project.version}' 
start-level='50'>
@@ -971,8 +971,8 @@
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/${google-cloud-http-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${google-auth-library-oauth2-http-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${google-auth-library-oauth2-http-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.oauth-client/google-oauth-client/${google-oauth-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-gson/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-apache-v2/${google-cloud-http-client-version}</bundle>
@@ -996,8 +996,8 @@
         <bundle 
dependency='true'>mvn:com.google.oauth-client/google-oauth-client-java6/${google-oauth-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.oauth-client/google-oauth-client/${google-oauth-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.oauth-client/google-oauth-client-jetty/${google-oauth-client-version}$overwrite=merge&amp;Import-Package=com.sun.net.httpserver;resolution:=optional,*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-google-drive/${project.version}</bundle>
     </feature>
     <feature name='camel-google-functions' version='${project.version}' 
start-level='50'>
@@ -1005,13 +1005,13 @@
         <feature version="[33,34)">guava</feature>
         <feature version='[4,5)'>http-client</feature>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/${google-cloud-http-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
-        <bundle dependency='true'>wrap:mvn:com.google.api/gax/2.45.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${grpc-google-auth-library-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${grpc-google-auth-library-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-functions/${google-cloud-functions-bom-version}</bundle>
         <bundle 
dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-google-functions/${project.version}</bundle>
     </feature>
     <feature name='camel-google-mail' version='${project.version}' 
start-level='50'>
@@ -1023,8 +1023,8 @@
         <bundle 
dependency='true'>wrap:mvn:com.google.oauth-client/google-oauth-client/${google-oauth-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${google-auth-library-oauth2-http-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${google-auth-library-oauth2-http-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-gson/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-apache-v2/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-jackson2/${google-cloud-http-client-version}</bundle>
@@ -1035,31 +1035,31 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version="[33,34)">guava</feature>
         <feature version='[4.1,5)'>netty</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-pubsub/1.127.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api/api-common/2.28.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-pubsub/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/api-common/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
-        <bundle dependency='true'>wrap:mvn:com.google.api/gax/2.45.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax-grpc/2.45.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-cloud-pubsub-v1/1.109.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax-grpc/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-cloud-pubsub-v1/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${grpc-google-auth-library-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${grpc-google-auth-library-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-api/${grpc-version}$${spi-consumer}</bundle>
-        <bundle dependency='true'>mvn:org.threeten/threetenbp/1.6.8</bundle>
+        <bundle 
dependency='true'>mvn:org.threeten/threetenbp/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/${google-cloud-http-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[32,33)",*;resolution:=optional</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-gson/${google-cloud-http-client-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-protobuf/${grpc-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-protobuf-lite/${grpc-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-iam-v1/1.31.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-iam-v1/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-transport-native-epoll/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-transport-classes-epoll/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-codec-http/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-codec-http2/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-handler-proxy/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-codec-socks/${netty-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-common-protos/2.36.0$Export-Package=com.google.longrunning*;version=2.36.0,*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.perfmark/perfmark-api/0.27.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-common-protos/${auto-detect-version}$Export-Package=com.google.longrunning*;version=${auto-detect-version},*</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.perfmark/perfmark-api/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-stub/${grpc-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-netty/${grpc-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-core/${grpc-version}</bundle>
@@ -1074,14 +1074,14 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version="[33,34)">guava</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api/api-common/2.28.0</bundle>
-        <bundle dependency='true'>wrap:mvn:com.google.api/gax/2.45.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/api-common/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${google-auth-library-oauth2-http-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${google-auth-library-oauth2-http-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-pubsub/1.127.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-pubsub/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-cloud-secretmanager-v1/${google-cloud-secretmanager-bom-version}</bundle>
         <bundle 
dependency='true'>mvn:com.google.protobuf/protobuf-java/${protobuf-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-cloud-pubsub-v1/1.109.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api.grpc/proto-google-cloud-pubsub-v1/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-google-secret-manager/${project.version}</bundle>
     </feature>
     <feature name='camel-google-sheets' version='${project.version}' 
start-level='50'>
@@ -1097,8 +1097,8 @@
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-jackson2/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${grpc-google-auth-library-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${grpc-google-auth-library-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.apis/google-api-services-sheets/${google-api-services-sheets-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-google-sheets/${project.version}</bundle>
     </feature>
@@ -1110,24 +1110,24 @@
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>mvn:com.google.api-client/google-api-client/${google-api-client-version}</bundle>
         <bundle 
dependency='true'>mvn:com.google.http-client/google-http-client-apache-v2/${google-cloud-http-client-version}</bundle>
-        <bundle dependency='true'>mvn:org.threeten/threetenbp/1.6.8</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api/api-common/2.28.0</bundle>
-        <bundle dependency='true'>wrap:mvn:com.google.api/gax/2.45.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax-httpjson/2.45.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.apis/google-api-services-storage/v1-rev20240209-2.0.0</bundle>
+        <bundle 
dependency='true'>mvn:org.threeten/threetenbp/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/api-common/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.api/gax-httpjson/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.apis/google-api-services-storage/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-credentials/${google-auth-library-oauth2-http-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.auth/google-auth-library-oauth2-http/${google-auth-library-oauth2-http-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-core/2.35.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-core-http/2.35.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-storage/2.35.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-core/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-core-http/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.cloud/google-cloud-storage/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/${google-cloud-http-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-appengine/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-gson/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-jackson2/${google-cloud-http-client-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.oauth-client/google-oauth-client/${google-oauth-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.grpc/grpc-api/${grpc-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-google-storage/${project.version}</bundle>
     </feature>
     <feature name='camel-grape' version='${project.version}' start-level='50'>
@@ -1168,7 +1168,7 @@
     </feature>
     <feature name='camel-gson' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>mvn:com.google.code.gson/gson/2.10.1</bundle>
+        <bundle 
dependency='true'>mvn:com.google.code.gson/gson/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-gson/${project.version}</bundle>
     </feature>
     <feature name='camel-guava-eventbus' version='${project.version}' 
start-level='50'>
@@ -1188,7 +1188,8 @@
     </feature>
     <feature name='camel-headersmap' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.cedarsoftware/java-util/2.4.0</bundle>
+        <!-- Need to wrap the bundle because it doesn't export properly 
com.cedarsoftware.util -->
+        <bundle 
dependency='true'>wrap:mvn:com.cedarsoftware/java-util/${java-util-version}$overwrite=merge&amp;Export-Package=com.cedarsoftware.util*;version=${java-util-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-headersmap/${project.version}</bundle>
     </feature>
     <feature name='camel-hl7' version='${project.version}' start-level='50'>
@@ -1210,10 +1211,10 @@
     <feature name='camel-ical' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
-        <bundle 
dependency='true'>mvn:commons-validator/commons-validator/1.7</bundle>
+        <bundle 
dependency='true'>mvn:commons-validator/commons-validator/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-beanutils/commons-beanutils/${commons-beanutils-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-collections/commons-collections/${commons-collections-version}</bundle>
-        <bundle 
dependency='true'>mvn:commons-digester/commons-digester/2.1</bundle>
+        <bundle 
dependency='true'>mvn:commons-digester/commons-digester/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.mnode.ical4j/ical4j/${ical4j-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-ical/${project.version}</bundle>
     </feature>
@@ -1250,9 +1251,9 @@
         <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/logging-interceptor/${squareup-okhttp-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/${squareup-okhttp-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.squareup.okio/okio/${squareup-okio-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.moshi/moshi/1.15.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/converter-moshi/2.11.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/retrofit/2.11.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.moshi/moshi/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/converter-moshi/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/retrofit/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib/${kotlin-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.influxdb/influxdb-java/${influx-java-driver-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-influxdb/${project.version}</bundle>
@@ -1262,21 +1263,21 @@
         <bundle 
dependency='true'>wrap:mvn:com.influxdb/influxdb-client-java/${influx-client-java-driver-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.influxdb/influxdb-client-core/${influx-client-java-driver-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.influxdb/influxdb-client-utils/${influx-client-java-driver-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/logging-interceptor/4.12.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/4.12.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/adapter-rxjava3/2.9.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/converter-scalars/2.9.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/converter-gson/2.9.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/retrofit/2.9.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/logging-interceptor/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/adapter-rxjava3/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/converter-scalars/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/converter-gson/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.retrofit2/retrofit/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-reflect/${kotlin-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib/1.9.21</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.reactivestreams/reactive-streams/1.0.4</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.reactivex.rxjava3/rxjava/3.1.8$overwrite=merge&amp;Export-Package=io.reactivex.rxjava3.internal*,*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib-jdk8/1.8.21</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib-jdk7/1.8.21</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.okio/okio/3.7.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.okio/okio-jvm/3.7.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jetbrains/annotations/13.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.reactivestreams/reactive-streams/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.reactivex.rxjava3/rxjava/${auto-detect-version}$overwrite=merge&amp;Export-Package=io.reactivex.rxjava3.internal*,*</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib-jdk8/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jetbrains.kotlin/kotlin-stdlib-jdk7/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.okio/okio/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.okio/okio-jvm/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jetbrains/annotations/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.code.gson/gson/${gson-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-influxdb2/${project.version}</bundle>
     </feature>
@@ -1299,20 +1300,24 @@
     </feature>
     <feature name='camel-jackson-avro' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-jackson</feature>
-        <bundle 
dependency='true'>mvn:org.apache.commons/commons-compress/1.21</bundle>
-        <bundle dependency='true'>mvn:org.apache.avro/avro/1.11.1</bundle>
-        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-avro/2.16.1</bundle>
+        <feature version='[33,34)'>guava</feature>
+        <bundle 
dependency='true'>mvn:org.apache.commons/commons-compress/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.avro/avro/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.codehaus.jackson/jackson-core-asl/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.codehaus.jackson/jackson-mapper-asl/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.thoughtworks.paranamer/paranamer/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-avro/${jackson2-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jackson-avro/${project.version}</bundle>
     </feature>
     <feature name='camel-jackson-protobuf' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-jackson</feature>
-        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-protobuf/2.16.1</bundle>
+        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-protobuf/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jackson-protobuf/${project.version}</bundle>
     </feature>
     <feature name='camel-jacksonxml' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-jackson</feature>
-        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/2.16.1</bundle>
-        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1</bundle>
+        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.module/jackson-module-jakarta-xmlbind-annotations/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jacksonxml/${project.version}</bundle>
     </feature>
     <feature name='camel-jasypt' version='${project.version}' start-level='50'>
@@ -1359,19 +1364,19 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[33,34)'>guava</feature>
         <feature version='[4,5)'>http-client</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.atlassian.event/atlassian-event/4.1.3</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.atlassian.httpclient/atlassian-httpclient-library/2.1.5</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.atlassian.httpclient/atlassian-httpclient-api/2.1.5</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.atlassian.event/atlassian-event/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.atlassian.httpclient/atlassian-httpclient-library/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.atlassian.httpclient/atlassian-httpclient-api/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.atlassian.jira/jira-rest-java-client-core/${jira-rest-client-api-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.atlassian.jira/jira-rest-java-client-api/${jira-rest-client-api-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.atlassian.sal/sal-api/5.1.4$overwrite=merge&amp;Import-Package=*;resolution:=optional&amp;Export-Package=com.atlassian.sal.api*;version=5.1.4</bundle>
-        <bundle 
dependency='true'>mvn:io.atlassian.util.concurrent/atlassian-util-concurrent/4.0.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/1.43.3$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-gson/1.43.3</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.atlassian.sal/sal-api/${auto-detect-version}$overwrite=merge&amp;Import-Package=*;resolution:=optional&amp;Export-Package=com.atlassian.sal.api*;version=${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.atlassian.util.concurrent/atlassian-util-concurrent/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client/${auto-detect-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.google.http-client/google-http-client-gson/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.google.oauth-client/google-oauth-client/${google-oauth-client-version}$overwrite=merge&amp;Import-Package=com.google.common*;version="[33,34)",*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/0.31.1</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/0.31.1</bundle>
-        <bundle dependency='true'>mvn:joda-time/joda-time/2.9.9</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-contrib-http-util/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.opencensus/opencensus-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:joda-time/joda-time/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jira/${project.version}</bundle>
     </feature>
     <feature name='camel-jfr' version='${project.version}' start-level='50'>
@@ -1416,7 +1421,7 @@
     <feature name='camel-jooq' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <bundle dependency='true'>mvn:org.jooq/jooq/${jooq-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:io.r2dbc/r2dbc-spi/1.0.0.RELEASE</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.r2dbc/r2dbc-spi/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.reactivestreams/reactive-streams/${reactive-streams-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jooq/${project.version}</bundle>
     </feature>
@@ -1437,8 +1442,8 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>wrap:mvn:net.thisptr/jackson-jq/${jackson-jq-version}$overwrite=merge&amp;Export-Package=net*;version=${jackson-jq-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jruby.jcodings/jcodings/1.0.58</bundle>
-        <bundle dependency='true'>wrap:mvn:org.jruby.joni/joni/2.2.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jruby.jcodings/jcodings/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jruby.joni/joni/${auto-detect-version}</bundle>
         <bundle>mvn:org.apache.camel.karaf/camel-jq/${project.version}</bundle>
     </feature>
     <feature name='camel-jsch' version='${project.version}' start-level='50'>
@@ -1461,16 +1466,16 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>wrap:mvn:com.github.java-json-tools/json-patch/${json-patch-version}$overwrite=merge&amp;Export-Package=com.github.fge*;version=${json-patch-version}&amp;Import-Package=com.fasterxml*,com.github*;javax*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.github.java-json-tools/jackson-coreutils/2.0$overwrite=merge&amp;Export-Package=com.github.fge*;version=2.0&amp;Import-Package=com.fasterxml*,com.github*;javax*</bundle>
-        <bundle 
dependency='true'>mvn:com.github.java-json-tools/msg-simple/1.2</bundle>
-        <bundle 
dependency='true'>mvn:com.github.java-json-tools/btf/1.3</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.github.java-json-tools/jackson-coreutils/${auto-detect-version}$overwrite=merge&amp;Export-Package=com.github.fge*;version=${auto-detect-version}&amp;Import-Package=com.fasterxml*,com.github*;javax*</bundle>
+        <bundle 
dependency='true'>mvn:com.github.java-json-tools/msg-simple/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.github.java-json-tools/btf/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-json-patch/${project.version}</bundle>
     </feature>    
     <feature name='camel-json-validator' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>mvn:com.networknt/json-schema-validator/${networknt-json-schema-validator-version}</bundle>
-        <bundle dependency='true'>mvn:com.ethlo.time/itu/1.8.0</bundle>
+        <bundle 
dependency='true'>mvn:com.ethlo.time/itu/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:org.yaml/snakeyaml/${snakeyaml-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-json-validator/${project.version}</bundle>
@@ -1493,17 +1498,17 @@
         <bundle 
dependency='true'>mvn:com.jayway.jsonpath/json-path/${json-path-version}</bundle>
         <bundle 
dependency='true'>mvn:net.minidev/json-smart/${json-smart-version}</bundle>
         <bundle 
dependency='true'>mvn:net.minidev/accessors-smart/${json-smart-version}</bundle>
-        <bundle dependency='true'>mvn:org.ow2.asm/asm/9.3</bundle>
+        <bundle 
dependency='true'>mvn:org.ow2.asm/asm/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jsonpath/${project.version}</bundle>
     </feature>
     <feature name='camel-jta' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <bundle 
dependency='true'>mvn:jakarta.transaction/jakarta.transaction-api/${jakarta-transaction-api-version}</bundle>
         <bundle 
dependency='true'>mvn:jakarta.enterprise/jakarta.enterprise.cdi-api/${jakarta-enterprise-cdi-api-version}</bundle>
-        <bundle 
dependency='true'>mvn:jakarta.enterprise/jakarta.enterprise.lang-model/4.1.0</bundle>
+        <bundle 
dependency='true'>mvn:jakarta.enterprise/jakarta.enterprise.lang-model/${jakarta-enterprise-cdi-api-version}</bundle>
         <bundle 
dependency='true'>mvn:jakarta.inject/jakarta.inject-api/${jakarta-inject-version}</bundle>
         <bundle 
dependency='true'>mvn:jakarta.el/jakarta.el-api/${jakarta-el-api-version}</bundle>
-        <bundle 
dependency='true'>mvn:jakarta.interceptor/jakarta.interceptor-api/2.2.0</bundle>
+        <bundle 
dependency='true'>mvn:jakarta.interceptor/jakarta.interceptor-api/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jta/${project.version}</bundle>
     </feature>
     <feature name='camel-jte' version='${project.version}' start-level='50'>
@@ -1513,12 +1518,12 @@
     </feature>
     <feature name='camel-jt400' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>wrap:mvn:net.sf.jt400/jt400/20.0.6</bundle>
+        <bundle 
dependency='true'>wrap:mvn:net.sf.jt400/jt400/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-jt400/${project.version}</bundle>
     </feature>
     <feature name='camel-kafka' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency='true'>wrap:mvn:org.apache.kafka/kafka-clients/3.6.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.apache.kafka/kafka-clients/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-kafka/${project.version}</bundle>
     </feature>
     <feature name='camel-kamelet' version='${project.version}' 
start-level='50'>
@@ -1577,19 +1582,19 @@
     </feature>
     <feature name='camel-ldif' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-i18n/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-asn1-api/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-asn1-ber/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-client-api/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-codec-core/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-extras-aci/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-extras-codec/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-extras-codec-api/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-model/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-schema-data/2.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-util/2.0.0</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-i18n/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-asn1-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-asn1-ber/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-client-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-codec-core/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-extras-aci/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-extras-codec/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-extras-codec-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-model/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-ldap-schema-data/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.directory.api/api-util/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.directory.server/apacheds-core-api/${apacheds-version}</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/2.7.7_5</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.antlr/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-collections4/${commons-collections4-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-pool2/${commons-pool2-version}</bundle>
@@ -1627,7 +1632,7 @@
     <feature name='camel-mail' version='${project.version}' start-level='50'>
         <feature prerequisite="true">spifly</feature>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency="true">mvn:jakarta.mail/jakarta.mail-api/2.1.3</bundle>
+        <bundle 
dependency="true">mvn:jakarta.mail/jakarta.mail-api/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.eclipse.angus/angus-mail/${angus-mail-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-attachments/${project.version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-mail/${project.version}</bundle>
@@ -1636,14 +1641,14 @@
         <feature version='${camel.osgi.version.range}'>camel-mail</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>wrap:mvn:com.microsoft.azure/msal4j/${msal4j-version}$overwrite=merge&amp;Import-Package=com.sun.net.httpserver;resolution:=optional,*</bundle>
-        <bundle dependency='true'>mvn:com.nimbusds/content-type/2.3</bundle>
+        <bundle 
dependency='true'>mvn:com.nimbusds/content-type/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:com.nimbusds/nimbus-jose-jwt/${nimbus-jose-jwt}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.github.stephenc.jcip/jcip-annotations/1.0-1</bundle>
-        <bundle 
dependency='true'>mvn:com.nimbusds/oauth2-oidc-sdk/11.9.1</bundle>
-        <bundle dependency='true'>mvn:com.nimbusds/lang-tag/1.7</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.github.stephenc.jcip/jcip-annotations/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.nimbusds/oauth2-oidc-sdk/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.nimbusds/lang-tag/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:net.minidev/json-smart/${json-smart-version}</bundle>
         <bundle 
dependency='true'>mvn:net.minidev/accessors-smart/${json-smart-version}</bundle>
-        <bundle dependency='true'>mvn:org.ow2.asm/asm/9.3</bundle>
+        <bundle 
dependency='true'>mvn:org.ow2.asm/asm/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-mail-microsoft-oauth/${project.version}</bundle>
     </feature>
     <feature name='camel-mapstruct' version='${project.version}' 
start-level='50'>
@@ -1677,25 +1682,25 @@
         <feature 
version='${camel.osgi.version.range}'>camel-micrometer</feature>
         <feature 
version='${camel.osgi.version.range}'>camel-platform-http-main</feature>
         <bundle 
dependency='true'>mvn:io.micrometer/micrometer-registry-prometheus/${micrometer-version}</bundle>
-        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_common/0.16.0</bundle>
-        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient/0.16.0</bundle>
-        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_tracer_common/0.16.0</bundle>
-        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_tracer_otel/0.16.0</bundle>
-        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_tracer_otel_agent/0.16.0</bundle>
+        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_common/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_tracer_common/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_tracer_otel/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.prometheus/simpleclient_tracer_otel_agent/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:io.smallrye/jandex/${jandex-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-micrometer-prometheus/${project.version}</bundle>
     </feature>
     <feature name='camel-mina' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>mvn:org.apache.mina/mina-core/2.2.2</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.mina/mina-core/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-mina/${project.version}</bundle>
     </feature>
     <feature name='camel-minio' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>wrap:mvn:io.minio/minio/8.5.9</bundle>
+        <bundle 
dependency='true'>wrap:mvn:io.minio/minio/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-compress/${commons-compress-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/4.12.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-minio/${project.version}</bundle>
     </feature>
     <feature name='camel-mllp' version='${project.version}' start-level='50'>
@@ -1725,8 +1730,8 @@
     </feature>
     <feature name='camel-mvel' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>mvn:org.ow2.asm/asm/9.6</bundle>
-        <bundle dependency='true'>mvn:org.mvel/mvel2/2.5.2.Final</bundle>
+        <bundle dependency='true'>mvn:org.ow2.asm/asm/${asm-version}</bundle>
+        <bundle dependency='true'>mvn:org.mvel/mvel2/${mvel-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-mvel/${project.version}</bundle>
     </feature>
     <feature name='camel-mybatis' version='${project.version}' 
start-level='50'>
@@ -1775,7 +1780,7 @@
     </feature>
     <feature name='camel-ognl' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle dependency='true'>wrap:mvn:ognl/ognl/3.4.2</bundle>
+        <bundle 
dependency='true'>wrap:mvn:ognl/ognl/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-ognl/${project.version}</bundle>
     </feature>
     <feature name='camel-olingo2' version='${project.version}' 
start-level='50'>
@@ -1784,8 +1789,8 @@
         <bundle 
dependency='true'>mvn:org.apache.httpcomponents/httpasyncclient-osgi/${httpasyncclient-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
         <bundle 
dependency='true'>mvn:com.google.code.gson/gson/${gson-version}</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.olingo/olingo-odata2-api/2.0.13</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.apache.olingo/olingo-odata2-core/2.0.13$overwrite=merge&amp;Import-Package=com.*,org.*,javax.xml.*</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.olingo/olingo-odata2-api/${olingo2-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.apache.olingo/olingo-odata2-core/${olingo2-version}$overwrite=merge&amp;Import-Package=com.*,org.*,javax.xml.*</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-olingo2/${project.version}</bundle>
     </feature>
     <feature name='camel-olingo4' version='${project.version}' 
start-level='50'>
@@ -1793,26 +1798,26 @@
         <feature version="[4,5)">http-client</feature>
         <feature version="[6,7)">jakarta-servlet</feature>
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
-        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-commons-api/5.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-commons-core/5.0.0</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-client-api/5.0.0</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-commons-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-commons-core/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-client-api/${auto-detect-version}</bundle>
 <!--      TODO remove wrap protocol when 
https://issues.apache.org/jira/browse/OLINGO-1206 is resolved -->
-        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-server-api/5.0.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.apache.olingo/odata-server-core/5.0.0$overwrite=merge&amp;Export-Package=org.apache.olingo.*;version=5.0.0</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.apache.olingo/odata-client-core/5.0.0$overwrite=merge&amp;Export-Package=org.apache.olingo.client.core*;version=5.0.0</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.olingo/odata-server-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.apache.olingo/odata-server-core/${auto-detect-version}$overwrite=merge&amp;Export-Package=org.apache.olingo.*;version=${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.apache.olingo/odata-client-core/${auto-detect-version}$overwrite=merge&amp;Export-Package=org.apache.olingo.client.core*;version=${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.commons/commons-lang3/${commons-lang3-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.httpcomponents/httpasyncclient-osgi/${httpasyncclient-version}</bundle>
-        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/2.16.1</bundle>
-        <bundle dependency='true'>mvn:com.fasterxml/aalto-xml/1.3.2</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-common/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-transport/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-transport-native-unix-common/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-buffer/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-handler/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-resolver/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-codec/4.1.107.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.netty/netty-codec-http/4.1.107.Final</bundle>
+        <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-xml/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.fasterxml/aalto-xml/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-common/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-transport/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-transport-native-unix-common/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-buffer/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-handler/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-resolver/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-codec/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:io.netty/netty-codec-http/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-olingo4/${project.version}</bundle>
     </feature>
     <feature name='camel-openapi-java' version='${project.version}' 
start-level='50'>
@@ -1851,9 +1856,9 @@
         <bundle 
dependency='true'>wrap:mvn:com.github.openstack4j.core/openstack4j-core/${openstack4j-version}$overwrite=merge&amp;Import-Package=com.fasterxml*,com.github*,javax*,org*,com.google*;version='[33,34)'</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.github.openstack4j.core.connectors/openstack4j-okhttp/${openstack4j-version}$overwrite=merge&amp;Import-Package=com.fasterxml*,okhttp3*,javax*,org*;resolution:=optional,com.google*;version='[33,34)'</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.github.java-json-tools/json-patch/${json-patch-version}$overwrite=merge&amp;Export-Package=com.github.fge*;version=${json-patch-version}&amp;Import-Package=com.fasterxml*,com.github*;javax*</bundle>
-        <bundle 
dependency='true'>wrap:mvn:com.github.java-json-tools/jackson-coreutils/2.0$overwrite=merge&amp;Export-Package=com.github.fge*;version=2.0&amp;Import-Package=com.fasterxml*,com.github*;javax*</bundle>
-        <bundle 
dependency='true'>mvn:com.github.java-json-tools/msg-simple/1.2</bundle>
-        <bundle 
dependency='true'>mvn:com.github.java-json-tools/btf/1.3</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.github.java-json-tools/jackson-coreutils/${auto-detect-version}$overwrite=merge&amp;Export-Package=com.github.fge*;version=${auto-detect-version}&amp;Import-Package=com.fasterxml*,com.github*;javax*</bundle>
+        <bundle 
dependency='true'>mvn:com.github.java-json-tools/msg-simple/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.github.java-json-tools/btf/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.yaml/snakeyaml/${snakeyaml-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/okhttp/${squareup-okhttp-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.squareup.okhttp3/logging-interceptor/${squareup-okhttp-version}</bundle>
@@ -1870,8 +1875,8 @@
     </feature>
     <feature name='camel-optaplanner' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle>wrap:mvn:org.kie/kie-api/8.44.0.Final</bundle>
-        
<bundle>wrap:mvn:org.optaplanner/optaplanner-core-impl/${optaplanner-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.kie/kie-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.optaplanner/optaplanner-core-impl/${optaplanner-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-optaplanner/${project.version}</bundle>
     </feature>
     <feature name='camel-paho' version='${project.version}' start-level='50'>
@@ -1882,7 +1887,7 @@
 <!--    Paho v5 does not work in OSGi: 
https://github.com/eclipse/paho.mqtt.java/issues/857-->
     <feature name='camel-paho-mqtt5' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        
<bundle>wrap:mvn:org.eclipse.paho/org.eclipse.paho.mqttv5.client/1.2.5$overwrite=merge&amp;Export-Package=org.eclipse.paho.mqttv5.*;version=1.2.5</bundle>
+        
<bundle>wrap:mvn:org.eclipse.paho/org.eclipse.paho.mqttv5.client/${paho-version}$overwrite=merge&amp;Export-Package=org.eclipse.paho.mqttv5.*;version=${paho-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-paho-mqtt5/${project.version}</bundle>
     </feature>
     <feature name='camel-parquet-avro' version='${project.version}' 
start-level='50'>
@@ -1960,7 +1965,7 @@
         <bundle 
dependency='true'>mvn:com.google.protobuf/protobuf-java-util/${protobuf-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-io/commons-io/${commons-io-version}</bundle>
         <bundle 
dependency='true'>mvn:com.google.code.gson/gson/${gson-version}</bundle>
-        <bundle 
dependency='true'>mvn:com.google.code.findbugs/jsr305/3.0.2</bundle>
+        <bundle 
dependency='true'>mvn:com.google.code.findbugs/jsr305/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-protobuf/${project.version}</bundle>
     </feature>
     <feature name='camel-pubnub' version='${project.version}' start-level='50'>
@@ -1982,7 +1987,7 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.version.range}'>camel-cron</feature>
         <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.c3p0/${c3p0-version}_1</bundle>
-        <bundle dependency='true'>mvn:com.zaxxer/HikariCP-java7/2.4.13</bundle>
+        <bundle 
dependency='true'>mvn:com.zaxxer/HikariCP-java7/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.quartz-scheduler/quartz/${quartz-version}$overwrite=merge&amp;DynamicImport-Package=org.apache.camel.component.quartz</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-quartz/${project.version}</bundle>
     </feature>
@@ -2019,23 +2024,21 @@
         <feature version='[4.1,5)'>netty</feature>
         <feature version='${camel.osgi.spring.version}'>spring</feature>
         <bundle 
dependency='true'>mvn:org.redisson/redisson/${redisson-version}</bundle>
-        <bundle dependency='true'>mvn:com.esotericsoftware/kryo/5.6.0</bundle>
-        <bundle 
dependency='true'>mvn:com.esotericsoftware/minlog/1.3.1</bundle>
-        <bundle 
dependency='true'>mvn:com.esotericsoftware/reflectasm/1.11.9</bundle>
-        <bundle dependency='true'>mvn:org.objenesis/objenesis/3.3</bundle>
+        <bundle 
dependency='true'>mvn:com.esotericsoftware/kryo/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.esotericsoftware/minlog/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.esotericsoftware/reflectasm/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.objenesis/objenesis/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-transport/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-resolver-dns/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-codec-dns/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-transport-classes-epoll/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-transport-classes-kqueue/${netty-version}</bundle>
-        <bundle 
dependency='true'>mvn:io.netty.incubator/netty-incubator-transport-classes-io_uring/0.0.21.Final</bundle>
-        <bundle 
dependency='true'>mvn:io.reactivex.rxjava3/rxjava/3.1.6</bundle>
+        <bundle 
dependency='true'>mvn:io.netty.incubator/netty-incubator-transport-classes-io_uring/0.0.25.Final</bundle>
+        <bundle 
dependency='true'>mvn:io.reactivex.rxjava3/rxjava/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.reactivestreams/reactive-streams/${reactive-streams-version}</bundle>
         <bundle 
dependency='true'>mvn:javax.cache/cache-api/${jcache-version}</bundle>
-        <bundle dependency='true'>wrap:mvn:org.jodd/jodd-bean/5.1.6</bundle>
         <bundle 
dependency='true'>mvn:net.bytebuddy/byte-buddy/${bytebuddy-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jboss.marshalling/jboss-marshalling/2.0.11.Final</bundle>
         <bundle 
dependency='true'>mvn:io.projectreactor/reactor-core/${reactor-version}</bundle>
         <bundle 
dependency='true'>mvn:org.yaml/snakeyaml/${snakeyaml-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-redis/${project.version}</bundle>
@@ -2081,7 +2084,7 @@
     </feature>
     <feature name='camel-rss' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-atom</feature>
-        <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/2.0.6.1_1</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${auto-detect-version:alias=org.jdom/jdom2}_1</bundle>
         <bundle 
dependency="true">mvn:com.rometools/rome/${rome-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-rss/${project.version}</bundle>
     </feature>
@@ -2115,7 +2118,7 @@
         <bundle 
dependency='true'>mvn:org.cometd.java/cometd-java-common/${cometd-java-client-version}</bundle>
         <bundle 
dependency='true'>mvn:org.eclipse.jetty/jetty-alpn-client/${jetty-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.eclipse.jetty/jetty-client/${jetty-version}$overwrite=merge&amp;Export-Package=org*;version=${jetty-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:tech.allegro.schema.json2avro/converter/0.2.15</bundle>
+        <bundle 
dependency='true'>wrap:mvn:tech.allegro.schema.json2avro/converter/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-salesforce/${project.version}</bundle>
     </feature>   
     <feature name='camel-sap-netweaver' version='${project.version}' 
start-level='50'>
@@ -2126,7 +2129,7 @@
     <feature name='camel-saxon' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <bundle 
dependency="true">wrap:mvn:net.sf.saxon/Saxon-HE/${saxon-version}</bundle>
-        <bundle 
dependency="true">wrap:mvn:org.xmlresolver/xmlresolver/5.2.2</bundle>
+        <bundle 
dependency="true">wrap:mvn:org.xmlresolver/xmlresolver/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-saxon/${project.version}</bundle>
     </feature>
     <feature name='camel-schematron' version='${project.version}' 
start-level='50'>
@@ -2146,7 +2149,7 @@
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.datatype/jackson-datatype-jdk8/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-base/${jackson2-version}</bundle>
         <bundle 
dependency='true'>mvn:com.fasterxml.jackson.jakarta.rs/jackson-jakarta-rs-json-provider/${jackson2-version}</bundle>
-        <bundle 
dependency='true'>mvn:org.apache.ws.xmlschema/xmlschema-core/2.3.1</bundle>
+        <bundle 
dependency='true'>mvn:org.apache.ws.xmlschema/xmlschema-core/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.cxf/cxf-core/${cxf-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.cxf/cxf-rt-rs-client/${cxf-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.cxf/cxf-rt-rs-security-oauth2/${cxf-version}</bundle>
@@ -2177,7 +2180,7 @@
         <bundle 
dependency='true'>mvn:org.apache.shiro/shiro-crypto-core/${shiro-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.shiro/shiro-crypto-cipher/${shiro-version}</bundle>
         <bundle 
dependency='true'>mvn:org.apache.shiro/shiro-crypto-hash/${shiro-version}</bundle>
-        <bundle 
dependency='true'>mvn:jakarta.annotation/jakarta.annotation-api/1.3.5</bundle>
+        <bundle 
dependency='true'>mvn:jakarta.annotation/jakarta.annotation-api/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-beanutils/commons-beanutils/${commons-beanutils-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-collections/commons-collections/${commons-collections-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.apache.shiro/shiro-jakarta-ee/${shiro-version}</bundle>
@@ -2237,7 +2240,7 @@
         <bundle 
dependency='true'>mvn:commons-validator/commons-validator/${commons-validator-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-beanutils/commons-beanutils/${commons-beanutils-version}</bundle>
         <bundle 
dependency='true'>mvn:commons-collections/commons-collections/${commons-collections-version}</bundle>
-        <bundle 
dependency='true'>mvn:commons-digester/commons-digester/2.1</bundle>
+        <bundle 
dependency='true'>mvn:commons-digester/commons-digester/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-splunk-hec/${project.version}</bundle>
     </feature>
     <feature name='camel-spring-batch' version='${project.version}' 
start-level='50'>
@@ -2265,8 +2268,8 @@
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='${camel.osgi.spring.version}'>spring-tx</feature>
         <feature 
version='${camel.osgi.spring.version}'>spring-messaging</feature>
-        <bundle 
dependency='true'>wrap:mvn:org.springframework.retry/spring-retry/2.0.5</bundle>
-        <bundle dependency='true'>mvn:com.rabbitmq/amqp-client/5.19.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.springframework.retry/spring-retry/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:com.rabbitmq/amqp-client/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.micrometer/micrometer-commons/${micrometer-version}$overwrite=merge&amp;Import-Package=*;resolution:=optional</bundle>
         <bundle 
dependency='true'>mvn:io.micrometer/micrometer-observation/${micrometer-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:io.micrometer/micrometer-core/${micrometer-version}$overwrite=merge&amp;Import-Package=*;resolution:=optional</bundle>
@@ -2336,11 +2339,11 @@
             required by 
mvn:org.fusesource.stompjms/stompjms-client/${stompjms-version} bundle. The 
wrap protocol is used because
             it is not a valid OSGI bundle.
         -->
-        <bundle 
dependency='true'>wrap:mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/1.1</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.apache.geronimo.specs/geronimo-jms_1.1_spec/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>mvn:org.fusesource.stompjms/stompjms-client/${stompjms-version}</bundle>
-        <bundle 
dependency='true'>mvn:org.fusesource.hawtbuf/hawtbuf/1.9</bundle>
-        <bundle 
dependency='true'>mvn:org.fusesource.hawtdispatch/hawtdispatch/1.20</bundle>
-        <bundle 
dependency='true'>mvn:org.fusesource.hawtdispatch/hawtdispatch-transport/1.20</bundle>
+        <bundle 
dependency='true'>mvn:org.fusesource.hawtbuf/hawtbuf/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.fusesource.hawtdispatch/hawtdispatch/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.fusesource.hawtdispatch/hawtdispatch-transport/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-stomp/${project.version}</bundle>
     </feature>    
     <feature name='camel-stream' version='${project.version}' start-level='50'>
@@ -2359,7 +2362,7 @@
     </feature>
     <feature name='camel-swift' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency='true'>wrap:mvn:com.prowidesoftware/pw-swift-core/SRU2023-10.1.13</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.prowidesoftware/pw-swift-core/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.prowidesoftware/pw-iso20022/${prowide-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-swift/${project.version}</bundle>
     </feature>
@@ -2378,16 +2381,16 @@
     </feature>
     <feature name='camel-test' version='${project.version}' start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
-        <bundle 
dependency='true'>mvn:org.junit.platform/junit-platform-commons/1.10.2</bundle>
-        <bundle 
dependency='true'>mvn:org.junit.platform/junit-platform-engine/1.10.2</bundle>
-        <bundle 
dependency='true'>mvn:org.junit.platform/junit-platform-launcher/1.10.2</bundle>
+        <bundle 
dependency='true'>mvn:org.junit.platform/junit-platform-commons/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.junit.platform/junit-platform-engine/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.junit.platform/junit-platform-launcher/${auto-detect-version:alias=org.junit.platform/junit-platform-engine}</bundle>
         <bundle 
dependency='true'>mvn:org.junit.jupiter/junit-jupiter-params/${junit-jupiter-version}</bundle>
         <bundle 
dependency='true'>mvn:org.junit.jupiter/junit-jupiter-engine/${junit-jupiter-version}</bundle>
         <bundle 
dependency='true'>mvn:org.mockito/mockito-core/${mockito-version}</bundle>
         <bundle 
dependency='true'>mvn:net.bytebuddy/byte-buddy/${bytebuddy-version}</bundle>
         <bundle 
dependency='true'>mvn:net.bytebuddy/byte-buddy-agent/${bytebuddy-version}</bundle>
-        <bundle dependency='true'>mvn:org.objenesis/objenesis/3.3</bundle>
-        <bundle dependency='true'>mvn:org.opentest4j/opentest4j/1.3.0</bundle>
+        <bundle 
dependency='true'>mvn:org.objenesis/objenesis/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.opentest4j/opentest4j/${auto-detect-version}</bundle>
         <bundle dependency='true'> 
mvn:org.junit.jupiter/junit-jupiter-api/${junit-jupiter-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-test-junit5/${project.version}</bundle>
     </feature>
@@ -2442,11 +2445,11 @@
         <feature version="[6,7)">jakarta-servlet</feature>
         <bundle 
dependency='true'>mvn:io.undertow/undertow-core/${undertow-version}</bundle>
         <bundle 
dependency='true'>mvn:io.undertow/undertow-servlet/${undertow-version}</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.wildfly.common/wildfly-common/1.5.4.Final$Export-Package=*;version=1.5.4.Final</bundle>
-        <bundle 
dependency='true'>mvn:org.jboss.xnio/xnio-api/3.8.9.Final</bundle>
-        <bundle 
dependency='true'>mvn:org.jboss.xnio/xnio-nio/3.8.9.Final</bundle>
-        <bundle 
dependency='true'>wrap:mvn:org.jboss.threads/jboss-threads/3.5.0.Final</bundle>
-        <bundle 
dependency='true'>mvn:org.wildfly.client/wildfly-client-config/1.0.1.Final</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.wildfly.common/wildfly-common/${auto-detect-version}$Export-Package=*;version=${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.jboss.xnio/xnio-api/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.jboss.xnio/xnio-nio/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>wrap:mvn:org.jboss.threads/jboss-threads/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.wildfly.client/wildfly-client-config/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-attachments/${project.version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-http-base/${project.version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-undertow/${project.version}</bundle>
@@ -2544,7 +2547,7 @@
         <feature version='${camel.osgi.jackson2.version}'>jackson</feature>
         <bundle 
dependency='true'>wrap:mvn:org.knowm.xchange/xchange-core/${xchange-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.knowm.xchange/xchange-binance/${xchange-version}</bundle>
-        <bundle dependency='true'>wrap:mvn:com.github.mmazi/rescu/3.0</bundle>
+        <bundle 
dependency='true'>wrap:mvn:com.github.mmazi/rescu/${auto-detect-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-xchange/${project.version}</bundle>
     </feature>
     <feature name='camel-xj' version='${project.version}' start-level='50'>
@@ -2563,9 +2566,9 @@
         <bundle 
dependency='true'>mvn:org.igniterealtime.smack/smack-extensions/${smack-version}</bundle>
         <bundle 
dependency='true'>mvn:org.igniterealtime.smack/smack-tcp/${smack-version}</bundle>
         <bundle 
dependency='true'>mvn:org.igniterealtime.smack/smack-im/${smack-version}</bundle>
-        <bundle dependency='true'>mvn:org.jxmpp/jxmpp-jid/0.6.4</bundle>
-        <bundle dependency='true'>mvn:org.jxmpp/jxmpp-core/0.6.4</bundle>
-        <bundle dependency='true'>mvn:org.jxmpp/jxmpp-util-cache/0.6.4</bundle>
+        <bundle 
dependency='true'>mvn:org.jxmpp/jxmpp-jid/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.jxmpp/jxmpp-core/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.jxmpp/jxmpp-util-cache/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:org.minidns/minidns-core/${minidns-version}</bundle>
         <bundle dependency='true'>wrap:mvn:xpp3/xpp3/${xpp3-version}</bundle>
         
<bundle>mvn:org.apache.camel.karaf/camel-xmpp/${project.version}</bundle>
@@ -2592,8 +2595,8 @@
     <feature name='camel-zendesk' version='${project.version}' 
start-level='50'>
         <feature version='${camel.osgi.version.range}'>camel-core</feature>
         <feature version='[4.1,5)'>netty</feature>
-        <bundle 
dependency='true'>mvn:org.asynchttpclient/async-http-client/2.12.3</bundle>
-        <bundle 
dependency='true'>mvn:org.asynchttpclient/async-http-client-netty-utils/2.12.3</bundle>
+        <bundle 
dependency='true'>mvn:org.asynchttpclient/async-http-client/${auto-detect-version}</bundle>
+        <bundle 
dependency='true'>mvn:org.asynchttpclient/async-http-client-netty-utils/${auto-detect-version}</bundle>
         <bundle 
dependency='true'>wrap:mvn:com.cloudbees.thirdparty/zendesk-java-client/${zendesk-client-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-handler-proxy/${netty-version}</bundle>
         <bundle 
dependency='true'>mvn:io.netty/netty-codec-http/${netty-version}</bundle>
diff --git a/pom.xml b/pom.xml
index 42ca01d4..6ecbf252 100644
--- a/pom.xml
+++ b/pom.xml
@@ -637,6 +637,10 @@
                     <groupId>org.apache.maven.plugins</groupId>
                     <artifactId>maven-shade-plugin</artifactId>
                     <version>${maven-shade-plugin-version}</version>
+                    <configuration>
+                        <!-- Need to keep the original pom file to be able to 
auto-detect the version of the dependencies -->
+                        
<createDependencyReducedPom>false</createDependencyReducedPom>
+                    </configuration>
                 </plugin>
             </plugins>
         </pluginManagement>
diff --git a/tests/camel-test-blueprint/route.xml 
b/tests/camel-test-blueprint/route.xml
deleted file mode 100644
index 79928335..00000000
--- a/tests/camel-test-blueprint/route.xml
+++ /dev/null
@@ -1,12 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<blueprint xmlns="http://www.osgi.org/xmlns/blueprint/v1.0.0";>
-
-    <camelContext xmlns="http://camel.apache.org/schema/blueprint";>
-        <route>
-            <from uri="timer:fire?period=2000"/>
-            <setBody><constant>Hello World</constant></setBody>
-            <to uri="log:test"/>
-        </route>
-    </camelContext>
-
-</blueprint>
\ No newline at end of file
diff --git 
a/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/AutoDetectVersionMojo.java
 
b/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/AutoDetectVersionMojo.java
new file mode 100644
index 00000000..e299d554
--- /dev/null
+++ 
b/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/AutoDetectVersionMojo.java
@@ -0,0 +1,290 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.camel.karaf.feature.maven;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+import java.util.stream.Collectors;
+
+import org.apache.karaf.features.internal.model.Bundle;
+import org.apache.karaf.features.internal.model.Feature;
+import org.apache.maven.plugins.annotations.Component;
+import org.apache.maven.plugins.annotations.LifecyclePhase;
+import org.apache.maven.plugins.annotations.Mojo;
+import org.apache.maven.plugins.annotations.Parameter;
+import org.eclipse.aether.RepositorySystem;
+import org.eclipse.aether.RepositorySystemSession;
+import org.eclipse.aether.artifact.Artifact;
+import org.eclipse.aether.artifact.DefaultArtifact;
+import org.eclipse.aether.collection.CollectRequest;
+import org.eclipse.aether.graph.Dependency;
+import org.eclipse.aether.repository.RemoteRepository;
+import org.eclipse.aether.resolution.ArtifactResult;
+import org.eclipse.aether.resolution.DependencyRequest;
+import org.osgi.framework.Version;
+
+@Mojo(name = "auto-detect-version", defaultPhase = 
LifecyclePhase.PROCESS_RESOURCES)
+public class AutoDetectVersionMojo extends AbstractFeaturesMojo {
+
+    private static final String AUTO_DETECT_PLACEHOLDER_PREFIX = 
"${auto-detect-version";
+    private static final Pattern AUTO_DETECT_PLACEHOLDER = 
Pattern.compile("\\$\\{auto-detect-version(:alias=([^/]+)/([^}]+))?}");
+
+    private static final Pattern MVN_BASED_PROTOCOL = 
Pattern.compile("(wrap:)?mvn:([^/]+)/([^/]+)/([^$]+|\\$\\{auto-detect-version(:[^}]+)?}[^$]*)(\\$.*)?");
+
+    @Component
+    private RepositorySystem repoSystem;
+
+    @Parameter(defaultValue = "${repositorySystemSession}", readonly = true, 
required = true)
+    private RepositorySystemSession repoSession;
+
+    @Parameter(defaultValue = "${project.remoteProjectRepositories}", readonly 
= true, required = true)
+    private List<RemoteRepository> repositories;
+
+    @Override
+    protected void processFeature(Feature feature) {
+        List<Bundle> bundlesToProcess = new ArrayList<>();
+        List<Bundle> roots = new ArrayList<>();
+        for (Bundle bundle : feature.getBundle()) {
+            if (containsPlaceholder(bundle)) {
+                bundlesToProcess.add(bundle);
+            } else {
+                roots.add(bundle);
+            }
+        }
+        if (bundlesToProcess.isEmpty()) {
+            if (getLog().isDebugEnabled()) {
+                getLog().debug("No bundles found in the feature %s with the 
auto-detect version placeholder".formatted(feature.getName()));
+            }
+            return;
+        }
+        if (roots.isEmpty()) {
+            getLog().error("No root bundles found in the feature 
%s".formatted(feature.getName()));
+            return;
+        }
+        autoDetectVersion(feature, roots, bundlesToProcess);
+    }
+
+    /**
+     * Auto-detect the version of the bundles to process according to the 
dependencies of the given root.
+     *
+     * @param feature the feature that contains the bundles
+     * @param roots the root bundles from which the dependencies are resolved
+     * @param bundlesToProcess the bundles for which the version should be 
auto-detected
+     */
+    private void autoDetectVersion(Feature feature, List<Bundle> roots, 
List<Bundle> bundlesToProcess) {
+        Map<String, BundleVersion> dependencies = resolveDependencies(roots);
+        if (dependencies.isEmpty()) {
+            getLog().error("No dependencies found for the root bundles in the 
feature %s".formatted(feature.getName()));
+            return;
+        }
+        for (Bundle bundle : bundlesToProcess) {
+            autoDetectVersion(feature, bundle, dependencies);
+        }
+    }
+
+    /**
+     * Auto-detect the version of the given bundle according to the provided 
dependencies.
+     *
+     * @param feature the feature that contains the bundle
+     * @param bundle the bundle for which the version should be auto-detected
+     * @param dependencies the dependencies to use for the auto-detection 
where the key is the group id / artifact id
+     *                     and the value is the version
+     */
+    private void autoDetectVersion(Feature feature, Bundle bundle, Map<String, 
BundleVersion> dependencies) {
+        String location = bundle.getLocation();
+        Matcher matcher = MVN_BASED_PROTOCOL.matcher(location);
+        if (!matcher.matches()) {
+            getLog().warn("Bundle location %s does not match with a maven 
based protocol in the feature %s".formatted(location, feature.getName()));
+            return;
+        }
+        final String groupId;
+        final String artifactId;
+        Matcher aliasMatcher = 
AUTO_DETECT_PLACEHOLDER.matcher(matcher.group(4));
+        if (!aliasMatcher.find()) {
+            getLog().warn("Bundle location %s does not match with a 
placeholder syntax in the feature %s".formatted(location, feature.getName()));
+            return;
+        }
+        if (aliasMatcher.group(2) != null && aliasMatcher.group(3) != null) {
+            groupId = aliasMatcher.group(2);
+            artifactId = aliasMatcher.group(3);
+            if (getLog().isDebugEnabled()) {
+                getLog().debug("Alias %s/%s detected for the artifact %s in 
the feature %s".formatted(groupId, artifactId, location, feature.getName()));
+            }
+        } else {
+            groupId = matcher.group(2);
+            artifactId = matcher.group(3);
+        }
+        BundleVersion version = dependencies.get("%s/%s".formatted(groupId, 
artifactId));
+        if (version == null) {
+            getLog().error("Version of the artifact %s/%s could not be 
auto-detected in the feature %s".formatted(groupId, artifactId, 
feature.getName()));
+            return;
+        }
+        if (getLog().isDebugEnabled()) {
+            getLog().debug("Version %s detected for the artifact %s/%s in the 
feature %s".formatted(version, groupId, artifactId, feature.getName()));
+        }
+        
bundle.setLocation(AUTO_DETECT_PLACEHOLDER.matcher(location).replaceAll(version.toString()));
+    }
+
+    /**
+     * Resolve the dependencies of the given root bundles. In case of 
conflicts, the highest version is kept.
+     *
+     * @param roots the root bundles from which the dependencies are resolved
+     * @return the dependencies of the given root bundles where the key is the 
group id / artifact id and the value is
+     * the version
+     */
+    private Map<String, BundleVersion> resolveDependencies(List<Bundle> roots) 
{
+        Map<String, BundleVersion> dependencies = new HashMap<>();
+        for (Bundle root : roots) {
+            putAllDependencies(dependencies, resolveDependencies(root));
+        }
+        return dependencies;
+    }
+
+    /**
+     * Put all the dependencies in the given map. In case of conflicts, the 
highest version is kept.
+     *
+     * @param all the map to fill with the dependencies
+     * @param dependencies the dependencies to put in the map
+     */
+    private void putAllDependencies(Map<String, BundleVersion> all, 
Map<String, BundleVersion> dependencies) {
+        for (Map.Entry<String, BundleVersion> entry : dependencies.entrySet()) 
{
+            all.compute(entry.getKey(), (k, v) -> v == null || 
v.compareTo(entry.getValue()) < 0 ? entry.getValue() : v);
+        }
+    }
+
+    /**
+     * Resolve the dependencies of the given root bundle. In case of 
conflicts, the highest version is kept.
+     *
+     * @param root the root bundle from which the dependencies are resolved
+     * @return the dependencies of the given root bundle where the key is the 
group id / artifact id and the value is
+     * the version
+     */
+    private Map<String, BundleVersion> resolveDependencies(Bundle root) {
+        String location = root.getLocation();
+        if (location == null) {
+            getLog().warn("Root bundle location is null");
+            return Map.of();
+        }
+        Matcher matcher = MVN_BASED_PROTOCOL.matcher(location);
+        if (!matcher.matches()) {
+            getLog().warn("Root bundle location %s is not a Maven 
location".formatted(location));
+            return Map.of();
+        }
+        List<Artifact> artifacts = resolveDependencies(matcher.group(2), 
matcher.group(3), matcher.group(4));
+        if (artifacts.isEmpty()) {
+            return Map.of();
+        }
+        Map<String, BundleVersion> dependencies = new HashMap<>();
+        for (Artifact artifact : artifacts) {
+            putArtifact(dependencies, artifact);
+        }
+        return dependencies;
+    }
+
+    /**
+     * Put the artifact in the given map. In case of conflicts, the highest 
version is kept.
+     *
+     * @param dependencies the map to fill with the artifact
+     * @param artifact the artifact to put in the map
+     */
+    private static void putArtifact(Map<String, BundleVersion> dependencies, 
Artifact artifact) {
+        dependencies.compute("%s/%s".formatted(artifact.getGroupId(), 
artifact.getArtifactId()),
+            (k, v) -> {
+                BundleVersion v2 = 
BundleVersion.parseVersion(artifact.getVersion());
+                if (v == null) {
+                    return v2;
+                }
+                return v.compareTo(v2) >= 0 ? v : v2;
+        });
+    }
+
+    /**
+     * Resolve the dependencies of the given maven coordinates.
+     *
+     * @param groupId the group id of the artifact for which the dependencies 
should be resolved
+     * @param artifactId the artifact id of the artifact for which the 
dependencies should be resolved
+     * @param version the version of the artifact for which the dependencies 
should be resolved
+     * @return the dependencies of the artifact corresponding to the given 
maven coordinates
+     */
+    private List<Artifact> resolveDependencies(String groupId, String 
artifactId, String version) {
+        if (getLog().isDebugEnabled()) {
+            getLog().debug("Resolving the dependencies of the artifact 
%s/%s/%s".formatted(groupId, artifactId, version));
+        }
+        DependencyRequest req = new DependencyRequest()
+                .setCollectRequest(new CollectRequest()
+                        .setRoot(new Dependency(new DefaultArtifact(groupId, 
artifactId, "jar", version), "runtime"))
+                        .setRepositories(this.repositories));
+        try {
+            return this.repoSystem.resolveDependencies(this.repoSession, req)
+                    .getArtifactResults()
+                    .stream()
+                    .map(ArtifactResult::getArtifact)
+                    .collect(Collectors.toList());
+        } catch (Exception e) {
+            if (getLog().isDebugEnabled()) {
+                getLog().warn("Dependencies of the artifact %s could not be 
resolved".formatted(artifactId), e);
+            } else {
+                getLog().warn("Dependencies of the artifact %s could not be 
resolved: %s".formatted(artifactId, e.getMessage()));
+            }
+        }
+        return List.of();
+    }
+
+    /**
+     * Indicates whether the given bundle contains the auto-detect version 
placeholder.
+     *
+     * @param bundle the bundle to check
+     * @return {@code true} if the given bundle contains the auto-detect 
version placeholder, {@code false} otherwise
+     */
+    private static boolean containsPlaceholder(Bundle bundle) {
+        String location = bundle.getLocation();
+        return location != null && 
location.contains(AUTO_DETECT_PLACEHOLDER_PREFIX);
+    }
+
+    /**
+     * Represents a bundle version that can be compared even if the version is 
not a valid OSGi version.
+     */
+    private record BundleVersion(String originalVersion, Version version) 
implements Comparable<BundleVersion> {
+
+        static BundleVersion parseVersion(String version) {
+            try {
+                return new BundleVersion(version, 
Version.parseVersion(version));
+            } catch (IllegalArgumentException e) {
+                // The version is not a valid OSGi version
+                return new BundleVersion(version, null);
+            }
+        }
+
+        @Override
+        public int compareTo(BundleVersion other) {
+            if (this.version == null || other.version == null) {
+                return this.originalVersion.compareTo(other.originalVersion);
+            }
+            return this.version.compareTo(other.version);
+        }
+
+        @Override
+        public String toString() {
+            return originalVersion;
+        }
+    }
+}
diff --git 
a/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/WrappedBundle.java
 
b/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/WrappedBundle.java
index efa33007..3c4f9934 100644
--- 
a/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/WrappedBundle.java
+++ 
b/tooling/camel-karaf-feature-maven-plugin/src/main/java/org/apache/camel/karaf/feature/maven/WrappedBundle.java
@@ -24,7 +24,7 @@ import org.apache.karaf.features.internal.model.Bundle;
 
 public class WrappedBundle {
 
-    private static final Pattern WRAP_PROTOCOL = 
Pattern.compile("wrap:mvn:([^/]+)/([^/]+)/([^$]+|\\$\\{[^}]+})(\\$([^=]+=[^&]+|\\$\\{[^}]+}=[^&]|\\$\\{[^}]+})(&([^=]+=[^&]+|\\$\\{[^}]+}=[^&]|\\$\\{[^}]+}))*)?");
+    private static final Pattern WRAP_PROTOCOL = 
Pattern.compile("wrap:mvn:([^/]+)/([^/]+)/([^$]+|\\$\\{[^}]+})(\\$.*)?");
 
     /**
      * The group id of the bundle
diff --git 
a/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/pom.xml
 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/pom.xml
new file mode 100644
index 00000000..2fbcaae5
--- /dev/null
+++ 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/pom.xml
@@ -0,0 +1,51 @@
+<?xml version="1.0" encoding="UTF-8"?>
+
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"; 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance";
+         xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 
http://maven.apache.org/xsd/maven-4.0.0.xsd";>
+    <modelVersion>4.0.0</modelVersion>
+
+    <groupId>org.apache.camel.karaf</groupId>
+    
<artifactId>camel-karaf-feature-maven-plugin-auto-detect-version-test</artifactId>
+    <version>1.0-SNAPSHOT</version>
+    <packaging>pom</packaging>
+
+    <build>
+        <plugins>
+            <plugin>
+                <groupId>org.apache.camel.karaf</groupId>
+                <artifactId>camel-karaf-feature-maven-plugin</artifactId>
+                <version>@project.version@</version>
+                <executions>
+                    <execution>
+                        <goals>
+                            <goal>auto-detect-version</goal>
+                        </goals>
+                        <configuration>
+                            
<featuresFilePath>file:${project.basedir}/src/main/feature/features.xml</featuresFilePath>
+                            
<featuresFileResultPath>file:${project.build.directory}/feature/result.xml</featuresFileResultPath>
+                        </configuration>
+                    </execution>
+                </executions>
+            </plugin>
+        </plugins>
+    </build>
+</project>
diff --git 
a/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/src/main/feature/expected.xml
 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/src/main/feature/expected.xml
new file mode 100644
index 00000000..e1682538
--- /dev/null
+++ 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/src/main/feature/expected.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<features name="test-configure-spi" 
xmlns="http://karaf.apache.org/xmlns/features/v1.6.0";>
+    <feature name="no-placeholder" version="1.0.0">
+        <feature>jackson</feature>
+        <feature version="[4.1,5)">netty</feature>
+        <bundle 
dependency="true">mvn:com.datastax.oss/native-protocol/1.5.1</bundle>
+        <bundle 
dependency="true">mvn:com.typesafe/config/${typesafe-config-version}</bundle>
+    </feature>
+    <feature name="with-placeholders-but-no-root" version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.ethlo.time/itu/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.yaml/snakeyaml/${auto-detect-version}</bundle>
+    </feature>
+    <feature name="with-placeholders" version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt/json-schema-validator/1.4.0</bundle>
+        <bundle dependency="true">mvn:com.ethlo.time/itu/1.8.0</bundle>
+        <bundle 
dependency="true">mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.16.2</bundle>
+        <bundle dependency="true">mvn:org.yaml/snakeyaml/2.2</bundle>
+        <bundle 
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/2.0.6.1_1</bundle>
+        <bundle dependency="true">mvn:com.rometools/rome/2.1.0</bundle>
+        <bundle>mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+    </feature>
+    <feature name="with-placeholders-on-wrapped-bundles" version="1.0.0">
+        <bundle 
dependency="true">wrap:mvn:com.networknt/json-schema-validator/1.4.0</bundle>
+        <bundle dependency="true">wrap:mvn:com.ethlo.time/itu/1.8.0</bundle>
+        <bundle 
dependency="true">wrap:mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.16.2$Export-Package=*;version=2.16.2</bundle>
+        <bundle dependency="true">wrap:mvn:org.yaml/snakeyaml/2.2</bundle>
+        <bundle 
dependency="true">wrap:mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+    </feature>
+    <feature name="with-placeholders-on-non-existing-dependencies" 
version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt.foo/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.yaml/snakeyaml-foo/${auto-detect-version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+    </feature>
+    <feature name="with-placeholders-with-multiple-versions" version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt/json-schema-validator/1.4.0</bundle>
+        <bundle dependency="true">mvn:com.ethlo.time/itu/1.8.0</bundle>
+        <bundle 
dependency="true">mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/2.16.2</bundle>
+        <bundle dependency="true">mvn:org.yaml/snakeyaml/2.2</bundle>
+        <bundle 
dependency="true">mvn:org.apache.camel/camel-json-validator/4.2.0</bundle>
+        <bundle 
dependency="true">mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+        <bundle 
dependency="true">mvn:org.apache.camel/camel-json-validator/4.4.0</bundle>
+    </feature>
+</features>
diff --git 
a/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/src/main/feature/features.xml
 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/src/main/feature/features.xml
new file mode 100644
index 00000000..fcc60cbd
--- /dev/null
+++ 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/src/main/feature/features.xml
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+
+    Licensed to the Apache Software Foundation (ASF) under one or more
+    contributor license agreements.  See the NOTICE file distributed with
+    this work for additional information regarding copyright ownership.
+    The ASF licenses this file to You under the Apache License, Version 2.0
+    (the "License"); you may not use this file except in compliance with
+    the License.  You may obtain a copy of the License at
+
+         http://www.apache.org/licenses/LICENSE-2.0
+
+    Unless required by applicable law or agreed to in writing, software
+    distributed under the License is distributed on an "AS IS" BASIS,
+    WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+    See the License for the specific language governing permissions and
+    limitations under the License.
+
+-->
+<features name="test-configure-spi" 
xmlns="http://karaf.apache.org/xmlns/features/v1.6.0";>
+    <feature name="no-placeholder" version="1.0.0">
+        <feature>jackson</feature>
+        <feature version="[4.1,5)">netty</feature>
+        <bundle 
dependency="true">mvn:com.datastax.oss/native-protocol/1.5.1</bundle>
+        <bundle 
dependency="true">mvn:com.typesafe/config/${typesafe-config-version}</bundle>
+    </feature>
+    <feature name="with-placeholders-but-no-root" version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.ethlo.time/itu/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.yaml/snakeyaml/${auto-detect-version}</bundle>
+    </feature>
+    <feature name="with-placeholders" version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.ethlo.time/itu/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.yaml/snakeyaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.apache.servicemix.bundles/org.apache.servicemix.bundles.jdom/${auto-detect-version:alias=org.jdom/jdom2}_1</bundle>
+        <bundle dependency="true">mvn:com.rometools/rome/2.1.0</bundle>
+        <bundle>mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+    </feature>
+    <feature name="with-placeholders-on-wrapped-bundles" version="1.0.0">
+        <bundle 
dependency="true">wrap:mvn:com.networknt/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">wrap:mvn:com.ethlo.time/itu/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">wrap:mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${auto-detect-version}$Export-Package=*;version=${auto-detect-version}</bundle>
+        <bundle 
dependency="true">wrap:mvn:org.yaml/snakeyaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">wrap:mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+    </feature>
+    <feature name="with-placeholders-on-non-existing-dependencies" 
version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt.foo/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.yaml/snakeyaml-foo/${auto-detect-version}</bundle>
+        <bundle>mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+    </feature>
+    <feature name="with-placeholders-with-multiple-versions" version="1.0.0">
+        <bundle 
dependency="true">mvn:com.networknt/json-schema-validator/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.ethlo.time/itu/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:com.fasterxml.jackson.dataformat/jackson-dataformat-yaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.yaml/snakeyaml/${auto-detect-version}</bundle>
+        <bundle 
dependency="true">mvn:org.apache.camel/camel-json-validator/4.2.0</bundle>
+        <bundle 
dependency="true">mvn:org.apache.camel/camel-json-validator/4.6.0</bundle>
+        <bundle 
dependency="true">mvn:org.apache.camel/camel-json-validator/4.4.0</bundle>
+    </feature>
+</features>
diff --git 
a/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/verify.groovy
 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/verify.groovy
new file mode 100644
index 00000000..9b50f8d1
--- /dev/null
+++ 
b/tooling/camel-karaf-maven-plugin-integration-test/src/it/auto-detect-version/verify.groovy
@@ -0,0 +1,58 @@
+/**
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ * <p>
+ * http://www.apache.org/licenses/LICENSE-2.0
+ * <p>
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+import java.nio.file.Files;
+import java.nio.file.Paths;
+import java.nio.file.Path;
+
+Path actual = Paths.get(basedir.getAbsolutePath(), 
"target/feature/result.xml");
+
+if (!Files.exists(actual)) {
+    throw new FileNotFoundException("Could not find generated file: $actual");
+}
+
+Path expected = Paths.get(basedir.getAbsolutePath(), 
"src/main/feature/expected.xml");
+
+if (!Files.exists(actual)) {
+    throw new FileNotFoundException("Could not find expected file: $expected");
+}
+
+String actualContent = Files.readString(actual);
+String expectedContent = Files.readString(expected);
+
+if (actualContent != expectedContent) {
+    throw new Exception("Expected and actual features files are not equal");
+}
+
+Path log = Paths.get(basedir.getAbsolutePath(), "build.log");
+
+if (!Files.exists(log)) {
+    throw new FileNotFoundException("Could not find the log file: $log");
+}
+
+String logContent = Files.readString(log);
+
+if (!logContent.contains("[ERROR] No root bundles found")) {
+    throw new Exception("Could not find the expected error message in the log 
file for the feature with-placeholders-but-no-root");
+}
+
+if (!logContent.contains("[ERROR] Version of the artifact 
com.networknt.foo/json-schema-validator could not be auto-detected")
+    || !logContent.contains("[ERROR] Version of the artifact 
org.yaml/snakeyaml-foo could not be auto-detected")) {
+    throw new Exception("Could not find the expected error message in the log 
file for the feature with-placeholders-on-non-existing-dependencies");
+}
+
+return true;
\ No newline at end of file

Reply via email to