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&Import-Package=com.google.common*;version="[33,34)",*&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&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&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&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&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&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&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&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&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&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&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&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&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&Import-Package=*;resolution:=optional&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&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&Import-Package=*;resolution:=optional&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&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&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&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&Export-Package=com.github.fge*;version=${json-patch-version}&Import-Package=com.fasterxml*,com.github*;javax*</bundle> - <bundle dependency='true'>wrap:mvn:com.github.java-json-tools/jackson-coreutils/2.0$overwrite=merge&Export-Package=com.github.fge*;version=2.0&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&Export-Package=com.github.fge*;version=${auto-detect-version}&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&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&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&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&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&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&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&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&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&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&Export-Package=com.github.fge*;version=${json-patch-version}&Import-Package=com.fasterxml*,com.github*;javax*</bundle> - <bundle dependency='true'>wrap:mvn:com.github.java-json-tools/jackson-coreutils/2.0$overwrite=merge&Export-Package=com.github.fge*;version=2.0&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&Export-Package=com.github.fge*;version=${auto-detect-version}&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&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&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&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&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&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&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