This is an automated email from the ASF dual-hosted git repository.
davsclaus pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/camel.git
The following commit(s) were added to refs/heads/main by this push:
new 8c61aecc433e CAMEL-23643: Add service version to test-infra metadata
(#23633)
8c61aecc433e is described below
commit 8c61aecc433e87f71a93475b02a9f1050cac945f
Author: Claus Ibsen <[email protected]>
AuthorDate: Fri May 29 15:59:50 2026 +0200
CAMEL-23643: Add service version to test-infra metadata (#23633)
* CAMEL-23643: Add service version to test-infra metadata
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* CAMEL-23643: camel-jbang - Write serviceVersion to infra runtime JSON and
show in TUI
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* CAMEL-23643: Update catalog test-infra metadata.json with serviceVersion
Co-Authored-By: Claude Opus 4.6 <[email protected]>
* CAMEL-23643: camel-jbang - TUI do not show host/port for infra services
Co-Authored-By: Claude Opus 4.6 <[email protected]>
---------
Co-authored-by: Claude Opus 4.6 <[email protected]>
---
.../apache/camel/catalog/test-infra/metadata.json | 204 +++++++++++------
.../apache/camel/spi/annotations/InfraService.java | 12 +
.../core/commands/infra/InfraBaseCommand.java | 3 +-
.../dsl/jbang/core/commands/infra/InfraRun.java | 4 +
.../dsl/jbang/core/commands/tui/CamelMonitor.java | 19 +-
.../dsl/jbang/core/commands/tui/InfraInfo.java | 1 +
.../src/generated/resources/META-INF/metadata.json | 204 +++++++++++------
.../resources/META-INF/infra-service.properties | 20 ++
.../resources/META-INF/infra-service.properties | 18 ++
.../resources/META-INF/infra-service.properties | 18 ++
test-infra/camel-test-infra-smb/pom.xml | 6 +
.../resources/META-INF/infra-service.properties | 18 ++
.../CamelTestInfraGenerateMetadataMojo.java | 247 ++++++++++++++++++++-
.../apache/camel/spi/annotations/InfraService.java | 12 +
14 files changed, 632 insertions(+), 154 deletions(-)
diff --git
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json
index 89b23bd5118e..a6b9dac6dc04 100644
---
a/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json
+++
b/catalog/camel-catalog/src/generated/resources/org/apache/camel/catalog/test-infra/metadata.json
@@ -6,7 +6,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-milvus",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v2.6.17"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -15,7 +16,8 @@
"aliasImplementation" : [ "kinesis" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -24,7 +26,8 @@
"aliasImplementation" : [ "transcribe" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -33,7 +36,8 @@
"aliasImplementation" : [ "cloud-watch" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" : "org.apache.camel.test.infra.iggy.services.IggyInfraService",
"description" : "Iggy is a persistent message streaming platform",
@@ -42,7 +46,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-iggy",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.7.0"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -51,7 +56,8 @@
"aliasImplementation" : [ "sqs" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.zookeeper.services.ZooKeeperInfraService",
"description" : "Zookeeper is a server for highly reliable distributed
coordination of cloud applications",
@@ -60,7 +66,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-zookeeper",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.9.5"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -69,7 +76,8 @@
"aliasImplementation" : [ "sts" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" : "org.apache.camel.test.infra.redis.services.RedisInfraService",
"description" : "Redis is an open source in-memory data store",
@@ -78,7 +86,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-redis",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "7.4.9-alpine"
}, {
"service" :
"org.apache.camel.test.infra.elasticsearch.services.ElasticSearchInfraService",
"description" : "Elasticsearch is a distributed search and analytics engine",
@@ -87,7 +96,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-elasticsearch",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "9.1.0"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -96,7 +106,8 @@
"aliasImplementation" : [ "strimzi" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.51.0-kafka-4.2.0"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -105,7 +116,8 @@
"aliasImplementation" : [ "confluent" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "8.2.1"
}, {
"service" : "org.apache.camel.test.infra.nats.services.NatsInfraService",
"description" : "NATS is a high-performance messaging system for cloud
native applications",
@@ -114,7 +126,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-nats",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.12.6"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -123,7 +136,8 @@
"aliasImplementation" : [ "kms" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.postgres.services.PostgresInfraService",
"description" : "PostgreSQL is an open source object-relational database",
@@ -132,7 +146,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-postgres",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "17.10-alpine"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -141,7 +156,8 @@
"aliasImplementation" : [ "redpanda" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v26.1.9"
}, {
"service" :
"org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultInfraService",
"description" : "HashiCorp Vault is a tool for securely accessing secrets",
@@ -150,7 +166,8 @@
"aliasImplementation" : [ "vault" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hashicorp-vault",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.0.1"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -159,7 +176,8 @@
"aliasImplementation" : [ "sns" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.artemis.services.ArtemisInfraService",
"description" : "Apache Artemis is an open source message broker",
@@ -168,7 +186,8 @@
"aliasImplementation" : [ "amqp" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-artemis",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "latest"
}, {
"service" : "org.apache.camel.test.infra.solr.services.SolrInfraService",
"description" : "Apache Solr is an open source search platform",
@@ -177,7 +196,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-solr",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "9.10.1-slim"
}, {
"service" :
"org.apache.camel.test.infra.couchbase.services.CouchbaseInfraService",
"description" : "Couchbase is a distributed NoSQL cloud database",
@@ -186,7 +206,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-couchbase",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "8.0.0"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -195,7 +216,8 @@
"aliasImplementation" : [ "dynamodb", "dynamo-db" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.couchdb.services.CouchDbInfraService",
"description" : "Apache CouchDB is an open source NoSQL document database",
@@ -204,7 +226,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-couchdb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.5.1"
}, {
"service" :
"org.apache.camel.test.infra.keycloak.services.KeycloakInfraService",
"description" : "Keycloak is an open source identity and access management
solution",
@@ -213,7 +236,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-keycloak",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "26.6.2"
}, {
"service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService",
"description" : "HiveMQ is an MQTT-based messaging platform for IoT",
@@ -222,7 +246,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hivemq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2025.5"
}, {
"service" : "org.apache.camel.test.infra.ibmmq.services.IbmMQInfraService",
"description" : "IBM MQ is enterprise messaging middleware for reliable
communication",
@@ -231,7 +256,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ibmmq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "9.4.5.0-r2"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -240,7 +266,8 @@
"aliasImplementation" : [ "s3" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.smb.services.SmbLocalContainerInfraService",
"description" : "Samba provides file sharing services using the SMB
protocol",
@@ -249,7 +276,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-smb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.14.0"
}, {
"service" :
"org.apache.camel.test.infra.openldap.services.OpenldapInfraService",
"description" : "OpenLDAP is an implementation of the Lightweight Directory
Access Protocol",
@@ -258,7 +286,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-openldap",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.0"
}, {
"service" : "org.apache.camel.test.infra.xmpp.services.XmppInfraService",
"description" : "XMPP is an open communication protocol for messaging",
@@ -267,7 +296,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-xmpp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.3"
}, {
"service" : "org.apache.camel.test.infra.pulsar.services.PulsarInfraService",
"description" : "Apache Pulsar is a distributed messaging and streaming
platform",
@@ -276,7 +306,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-pulsar",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "4.2.1"
}, {
"service" :
"org.apache.camel.test.infra.artemis.services.ArtemisInfraService",
"description" : "Apache Artemis is an open source message broker",
@@ -285,7 +316,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-artemis",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "latest"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -294,7 +326,8 @@
"aliasImplementation" : [ "ssm" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -303,7 +336,8 @@
"aliasImplementation" : [ "lambda" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.google.pubsub.services.GooglePubSubInfraService",
"description" : "Google Cloud Pub/Sub is a messaging service for
event-driven systems",
@@ -312,7 +346,8 @@
"aliasImplementation" : [ "pub-sub" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-google-pubsub",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "emulators"
}, {
"service" :
"org.apache.camel.test.infra.chatscript.services.ChatScriptInfraService",
"description" : "ChatScript is an open source chatbot engine",
@@ -321,7 +356,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-chatscript",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "latest"
}, {
"service" :
"org.apache.camel.test.infra.arangodb.services.ArangoDBInfraService",
"description" : "ArangoDB is a multi-model database for high-performance
applications.",
@@ -330,7 +366,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-arangodb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.12.5.2"
}, {
"service" : "org.apache.camel.test.infra.ignite.services.IgniteInfraService",
"description" : "Apache Ignite is a distributed database for
high-performance computing",
@@ -339,7 +376,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ignite",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.18.0"
}, {
"service" :
"org.apache.camel.test.infra.rabbitmq.services.RabbitMQInfraService",
"description" : "RabbitMQ is an open source message and streaming broker",
@@ -348,7 +386,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-rabbitmq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "4.2.5-management"
}, {
"service" :
"org.apache.camel.test.infra.mosquitto.services.MosquittoInfraService",
"description" : "Mosquitto is a message broker that implements MQTT
protocol",
@@ -357,7 +396,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-mosquitto",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.0.22"
}, {
"service" : "org.apache.camel.test.infra.neo4j.services.Neo4jInfraService",
"description" : "Neo4j is a graph database management system",
@@ -366,7 +406,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-neo4j",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2026.04-community-ubi10"
}, {
"service" :
"org.apache.camel.test.infra.rocketmq.services.RocketMQInfraService",
"description" : "Apache RocketMQ is a distributed messaging and streaming
platform",
@@ -375,7 +416,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-rocketmq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.3.3"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -384,7 +426,8 @@
"aliasImplementation" : [ "config" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -393,7 +436,8 @@
"aliasImplementation" : [ "event-bridge" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -402,7 +446,8 @@
"aliasImplementation" : [ "secrets-manager" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.cassandra.services.CassandraInfraService",
"description" : "Apache Cassandra is a distributed NoSQL database",
@@ -411,7 +456,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-cassandra",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.0.8"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -420,7 +466,8 @@
"aliasImplementation" : [ "ec2" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.hazelcast.services.HazelcastInfraService",
"description" : "Hazelcast is a distributed in-memory computing platform",
@@ -429,7 +476,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hazelcast",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.4.0"
}, {
"service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService",
"description" : "HiveMQ is an MQTT-based messaging platform for IoT",
@@ -438,7 +486,8 @@
"aliasImplementation" : [ "sparkplug" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hivemq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "camel"
}, {
"service" :
"org.apache.camel.test.infra.postgres.services.PostgresInfraService",
"description" : "PostgreSQL with pgvector extension for vector similarity
search",
@@ -447,7 +496,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-postgres",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "pg18"
}, {
"service" :
"org.apache.camel.test.infra.microprofile.lra.services.MicroprofileLRAInfraService",
"description" : "Transaction Manager for microservices that is based on the
SAGA pattern for distributed transaction.",
@@ -456,7 +506,8 @@
"aliasImplementation" : [ "lra" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-microprofile-lra",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.13.1.Final-2.16.6.Final"
}, {
"service" : "org.apache.camel.test.infra.minio.services.MinioInfraService",
"description" : "MinIO is a high-performance S3 compatible object storage",
@@ -465,7 +516,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-minio",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "RELEASE.2025-09-07T16-13-09Z-cpuv1"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -474,7 +526,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "4.3.0"
}, {
"service" :
"org.apache.camel.test.infra.azure.common.services.AzureInfraService",
"description" : "Local Azure services with Azurite",
@@ -483,7 +536,8 @@
"aliasImplementation" : [ "storage-queue" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-azure-storage-queue",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.35.0"
}, {
"service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService",
"description" : "Embedded SFTP Server",
@@ -492,7 +546,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ftp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.18.0"
}, {
"service" :
"org.apache.camel.test.infra.infinispan.services.InfinispanInfraService",
"description" : "Infinispan is a distributed in-memory key/value data store",
@@ -501,7 +556,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-infinispan",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "16.2"
}, {
"service" :
"org.apache.camel.test.infra.weaviate.services.WeaviateInfraService",
"description" : "Weaviate is an open source vector database",
@@ -510,7 +566,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-weaviate",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.37.4"
}, {
"service" : "org.apache.camel.test.infra.consul.services.ConsulInfraService",
"description" : "Consul is a service networking solution",
@@ -519,7 +576,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-consul",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.0.0"
}, {
"service" : "org.apache.camel.test.infra.qdrant.services.QdrantInfraService",
"description" : "Qdrant is a vector similarity search engine and database",
@@ -528,7 +586,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-qdrant",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v1.18.0-unprivileged"
}, {
"service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService",
"description" : "Embedded FTPS Server",
@@ -537,7 +596,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ftp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.2.1"
}, {
"service" : "org.apache.camel.test.infra.ollama.services.OllamaInfraService",
"description" : "Ollama is a tool for running large language models locally",
@@ -546,7 +606,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ollama",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.12.5"
}, {
"service" :
"org.apache.camel.test.infra.azure.common.services.AzureInfraService",
"description" : "Local Azure services with Azurite",
@@ -555,7 +616,8 @@
"aliasImplementation" : [ "storage-blob" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-azure-storage-blob",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.35.0"
}, {
"service" :
"org.apache.camel.test.infra.docling.services.DoclingInfraService",
"description" : "Docling is a document processing and conversion toolkit",
@@ -564,7 +626,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-docling",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v1.18.0"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -573,7 +636,8 @@
"aliasImplementation" : [ "iam" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" : "org.apache.camel.test.infra.fhir.services.FhirInfraService",
"description" : "HAPI FHIR RESTful test server",
@@ -582,7 +646,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-fhir",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v8.10.0-1"
}, {
"service" :
"org.apache.camel.test.infra.pinecone.services.PineconeInfraService",
"description" : "Pinecone is a vector database for machine learning
applications",
@@ -591,7 +656,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-pinecone",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v1.0.0.rc0"
}, {
"service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService",
"description" : "Embedded FTP Server",
@@ -600,7 +666,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ftp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.2.1"
}, {
"service" :
"org.apache.camel.test.infra.mongodb.services.MongoDBInfraService",
"description" : "MongoDB is a document-oriented NoSQL database",
@@ -609,5 +676,6 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-mongodb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "7.0.31-jammy"
} ]
\ No newline at end of file
diff --git
a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
index 83fc356ab321..1f3655a64f1e 100644
---
a/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
+++
b/core/camel-api/src/generated/java/org/apache/camel/spi/annotations/InfraService.java
@@ -69,4 +69,16 @@ public @interface InfraService {
* @return
*/
String[] serviceImplementationAlias() default {};
+
+ /**
+ * The version of the infrastructure service (e.g., "7.4.9" for Redis,
"2.54.0" for Artemis).
+ *
+ * For container-based services, the version is auto-detected from the
container image tag in container.properties
+ * at build time and does not need to be set here.
+ *
+ * For embedded services (no container), set this to the library version
manually.
+ *
+ * @return
+ */
+ String serviceVersion() default "";
}
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
index 48e63d7a43bb..45f5e08759d5 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraBaseCommand.java
@@ -245,7 +245,8 @@ public abstract class InfraBaseCommand extends CamelCommand
{
List<String> aliasImplementation,
String groupId,
String artifactId,
- String version) {
+ String version,
+ String serviceVersion) {
}
record Row(String pid, String alias, String aliasImplementation, String
description, String serviceData) {
diff --git
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
index c748cc67f80c..d8af5208feb7 100644
---
a/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
+++
b/dsl/camel-jbang/camel-jbang-core/src/main/java/org/apache/camel/dsl/jbang/core/commands/infra/InfraRun.java
@@ -205,6 +205,10 @@ public class InfraRun extends InfraBaseCommand {
}
}
+ if (testInfraService.serviceVersion() != null &&
!testInfraService.serviceVersion().isEmpty()) {
+ properties.put("serviceVersion",
testInfraService.serviceVersion());
+ }
+
String jsonProperties =
jsonMapper.writerWithDefaultPrettyPrinter().writeValueAsString(properties);
printer().println(jsonProperties);
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
index 76841a3e03f0..f728deed7dd6 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/CamelMonitor.java
@@ -1253,24 +1253,12 @@ public class CamelMonitor extends CamelCommand {
} else {
Style statusStyle = info.alive ? Style.EMPTY.fg(Color.GREEN) :
Style.EMPTY.fg(Color.LIGHT_RED);
String statusText = info.alive ? "Running" : "Stopped";
- String port = objToString(info.properties.get("getPort"));
- String host = objToString(info.properties.get("getHost"));
- if (host.isEmpty()) {
- host = objToString(info.properties.get("getHostname"));
- }
- String portHost = "";
- if (!port.isEmpty() && !host.isEmpty()) {
- portHost = host + ":" + port;
- } else if (!port.isEmpty()) {
- portHost = ":" + port;
- } else if (!host.isEmpty()) {
- portHost = host;
- }
String infraAlias = "🔧 " + info.alias;
+ String version = info.serviceVersion != null ?
info.serviceVersion : "";
rows.add(Row.from(
Cell.from(info.pid),
Cell.from(Span.styled(infraAlias,
Style.EMPTY.fg(Color.MAGENTA))),
- Cell.from(""),
+ Cell.from(version),
Cell.from(""),
Cell.from(Span.styled(statusText, statusStyle)),
Cell.from(""),
@@ -1279,7 +1267,7 @@ public class CamelMonitor extends CamelCommand {
Cell.from(""),
Cell.from(""),
Cell.from(""),
- Cell.from(portHost)));
+ Cell.from("")));
}
}
@@ -2240,6 +2228,7 @@ public class CamelMonitor extends CamelCommand {
} catch (Exception e) {
// ignore parse errors
}
+ info.serviceVersion =
objToString(info.properties.get("serviceVersion"));
infraInfos.add(info);
}
}
diff --git
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/InfraInfo.java
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/InfraInfo.java
index cb89dc5a4838..eb063c2f37c7 100644
---
a/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/InfraInfo.java
+++
b/dsl/camel-jbang/camel-jbang-plugin-tui/src/main/java/org/apache/camel/dsl/jbang/core/commands/tui/InfraInfo.java
@@ -23,6 +23,7 @@ class InfraInfo {
String pid;
String alias;
String description;
+ String serviceVersion;
Map<String, Object> properties = new TreeMap<>();
boolean alive;
boolean vanishing;
diff --git
a/test-infra/camel-test-infra-all/src/generated/resources/META-INF/metadata.json
b/test-infra/camel-test-infra-all/src/generated/resources/META-INF/metadata.json
index 89b23bd5118e..a6b9dac6dc04 100644
---
a/test-infra/camel-test-infra-all/src/generated/resources/META-INF/metadata.json
+++
b/test-infra/camel-test-infra-all/src/generated/resources/META-INF/metadata.json
@@ -6,7 +6,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-milvus",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v2.6.17"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -15,7 +16,8 @@
"aliasImplementation" : [ "kinesis" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -24,7 +26,8 @@
"aliasImplementation" : [ "transcribe" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -33,7 +36,8 @@
"aliasImplementation" : [ "cloud-watch" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" : "org.apache.camel.test.infra.iggy.services.IggyInfraService",
"description" : "Iggy is a persistent message streaming platform",
@@ -42,7 +46,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-iggy",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.7.0"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -51,7 +56,8 @@
"aliasImplementation" : [ "sqs" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.zookeeper.services.ZooKeeperInfraService",
"description" : "Zookeeper is a server for highly reliable distributed
coordination of cloud applications",
@@ -60,7 +66,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-zookeeper",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.9.5"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -69,7 +76,8 @@
"aliasImplementation" : [ "sts" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" : "org.apache.camel.test.infra.redis.services.RedisInfraService",
"description" : "Redis is an open source in-memory data store",
@@ -78,7 +86,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-redis",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "7.4.9-alpine"
}, {
"service" :
"org.apache.camel.test.infra.elasticsearch.services.ElasticSearchInfraService",
"description" : "Elasticsearch is a distributed search and analytics engine",
@@ -87,7 +96,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-elasticsearch",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "9.1.0"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -96,7 +106,8 @@
"aliasImplementation" : [ "strimzi" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.51.0-kafka-4.2.0"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -105,7 +116,8 @@
"aliasImplementation" : [ "confluent" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "8.2.1"
}, {
"service" : "org.apache.camel.test.infra.nats.services.NatsInfraService",
"description" : "NATS is a high-performance messaging system for cloud
native applications",
@@ -114,7 +126,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-nats",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.12.6"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -123,7 +136,8 @@
"aliasImplementation" : [ "kms" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.postgres.services.PostgresInfraService",
"description" : "PostgreSQL is an open source object-relational database",
@@ -132,7 +146,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-postgres",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "17.10-alpine"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -141,7 +156,8 @@
"aliasImplementation" : [ "redpanda" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v26.1.9"
}, {
"service" :
"org.apache.camel.test.infra.hashicorp.vault.services.HashicorpVaultInfraService",
"description" : "HashiCorp Vault is a tool for securely accessing secrets",
@@ -150,7 +166,8 @@
"aliasImplementation" : [ "vault" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hashicorp-vault",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.0.1"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -159,7 +176,8 @@
"aliasImplementation" : [ "sns" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.artemis.services.ArtemisInfraService",
"description" : "Apache Artemis is an open source message broker",
@@ -168,7 +186,8 @@
"aliasImplementation" : [ "amqp" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-artemis",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "latest"
}, {
"service" : "org.apache.camel.test.infra.solr.services.SolrInfraService",
"description" : "Apache Solr is an open source search platform",
@@ -177,7 +196,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-solr",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "9.10.1-slim"
}, {
"service" :
"org.apache.camel.test.infra.couchbase.services.CouchbaseInfraService",
"description" : "Couchbase is a distributed NoSQL cloud database",
@@ -186,7 +206,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-couchbase",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "8.0.0"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -195,7 +216,8 @@
"aliasImplementation" : [ "dynamodb", "dynamo-db" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.couchdb.services.CouchDbInfraService",
"description" : "Apache CouchDB is an open source NoSQL document database",
@@ -204,7 +226,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-couchdb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.5.1"
}, {
"service" :
"org.apache.camel.test.infra.keycloak.services.KeycloakInfraService",
"description" : "Keycloak is an open source identity and access management
solution",
@@ -213,7 +236,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-keycloak",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "26.6.2"
}, {
"service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService",
"description" : "HiveMQ is an MQTT-based messaging platform for IoT",
@@ -222,7 +246,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hivemq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2025.5"
}, {
"service" : "org.apache.camel.test.infra.ibmmq.services.IbmMQInfraService",
"description" : "IBM MQ is enterprise messaging middleware for reliable
communication",
@@ -231,7 +256,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ibmmq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "9.4.5.0-r2"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -240,7 +266,8 @@
"aliasImplementation" : [ "s3" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.smb.services.SmbLocalContainerInfraService",
"description" : "Samba provides file sharing services using the SMB
protocol",
@@ -249,7 +276,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-smb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.14.0"
}, {
"service" :
"org.apache.camel.test.infra.openldap.services.OpenldapInfraService",
"description" : "OpenLDAP is an implementation of the Lightweight Directory
Access Protocol",
@@ -258,7 +286,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-openldap",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.0"
}, {
"service" : "org.apache.camel.test.infra.xmpp.services.XmppInfraService",
"description" : "XMPP is an open communication protocol for messaging",
@@ -267,7 +296,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-xmpp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.3"
}, {
"service" : "org.apache.camel.test.infra.pulsar.services.PulsarInfraService",
"description" : "Apache Pulsar is a distributed messaging and streaming
platform",
@@ -276,7 +306,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-pulsar",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "4.2.1"
}, {
"service" :
"org.apache.camel.test.infra.artemis.services.ArtemisInfraService",
"description" : "Apache Artemis is an open source message broker",
@@ -285,7 +316,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-artemis",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "latest"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -294,7 +326,8 @@
"aliasImplementation" : [ "ssm" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -303,7 +336,8 @@
"aliasImplementation" : [ "lambda" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.google.pubsub.services.GooglePubSubInfraService",
"description" : "Google Cloud Pub/Sub is a messaging service for
event-driven systems",
@@ -312,7 +346,8 @@
"aliasImplementation" : [ "pub-sub" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-google-pubsub",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "emulators"
}, {
"service" :
"org.apache.camel.test.infra.chatscript.services.ChatScriptInfraService",
"description" : "ChatScript is an open source chatbot engine",
@@ -321,7 +356,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-chatscript",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "latest"
}, {
"service" :
"org.apache.camel.test.infra.arangodb.services.ArangoDBInfraService",
"description" : "ArangoDB is a multi-model database for high-performance
applications.",
@@ -330,7 +366,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-arangodb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.12.5.2"
}, {
"service" : "org.apache.camel.test.infra.ignite.services.IgniteInfraService",
"description" : "Apache Ignite is a distributed database for
high-performance computing",
@@ -339,7 +376,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ignite",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.18.0"
}, {
"service" :
"org.apache.camel.test.infra.rabbitmq.services.RabbitMQInfraService",
"description" : "RabbitMQ is an open source message and streaming broker",
@@ -348,7 +386,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-rabbitmq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "4.2.5-management"
}, {
"service" :
"org.apache.camel.test.infra.mosquitto.services.MosquittoInfraService",
"description" : "Mosquitto is a message broker that implements MQTT
protocol",
@@ -357,7 +396,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-mosquitto",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.0.22"
}, {
"service" : "org.apache.camel.test.infra.neo4j.services.Neo4jInfraService",
"description" : "Neo4j is a graph database management system",
@@ -366,7 +406,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-neo4j",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2026.04-community-ubi10"
}, {
"service" :
"org.apache.camel.test.infra.rocketmq.services.RocketMQInfraService",
"description" : "Apache RocketMQ is a distributed messaging and streaming
platform",
@@ -375,7 +416,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-rocketmq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.3.3"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -384,7 +426,8 @@
"aliasImplementation" : [ "config" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -393,7 +436,8 @@
"aliasImplementation" : [ "event-bridge" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -402,7 +446,8 @@
"aliasImplementation" : [ "secrets-manager" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.cassandra.services.CassandraInfraService",
"description" : "Apache Cassandra is a distributed NoSQL database",
@@ -411,7 +456,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-cassandra",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.0.8"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -420,7 +466,8 @@
"aliasImplementation" : [ "ec2" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" :
"org.apache.camel.test.infra.hazelcast.services.HazelcastInfraService",
"description" : "Hazelcast is a distributed in-memory computing platform",
@@ -429,7 +476,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hazelcast",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.4.0"
}, {
"service" : "org.apache.camel.test.infra.hivemq.services.HiveMQInfraService",
"description" : "HiveMQ is an MQTT-based messaging platform for IoT",
@@ -438,7 +486,8 @@
"aliasImplementation" : [ "sparkplug" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-hivemq",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "camel"
}, {
"service" :
"org.apache.camel.test.infra.postgres.services.PostgresInfraService",
"description" : "PostgreSQL with pgvector extension for vector similarity
search",
@@ -447,7 +496,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-postgres",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "pg18"
}, {
"service" :
"org.apache.camel.test.infra.microprofile.lra.services.MicroprofileLRAInfraService",
"description" : "Transaction Manager for microservices that is based on the
SAGA pattern for distributed transaction.",
@@ -456,7 +506,8 @@
"aliasImplementation" : [ "lra" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-microprofile-lra",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "5.13.1.Final-2.16.6.Final"
}, {
"service" : "org.apache.camel.test.infra.minio.services.MinioInfraService",
"description" : "MinIO is a high-performance S3 compatible object storage",
@@ -465,7 +516,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-minio",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "RELEASE.2025-09-07T16-13-09Z-cpuv1"
}, {
"service" : "org.apache.camel.test.infra.kafka.services.KafkaInfraService",
"description" : "Apache Kafka, Distributed event streaming platform",
@@ -474,7 +526,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-kafka",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "4.3.0"
}, {
"service" :
"org.apache.camel.test.infra.azure.common.services.AzureInfraService",
"description" : "Local Azure services with Azurite",
@@ -483,7 +536,8 @@
"aliasImplementation" : [ "storage-queue" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-azure-storage-queue",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.35.0"
}, {
"service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService",
"description" : "Embedded SFTP Server",
@@ -492,7 +546,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ftp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.18.0"
}, {
"service" :
"org.apache.camel.test.infra.infinispan.services.InfinispanInfraService",
"description" : "Infinispan is a distributed in-memory key/value data store",
@@ -501,7 +556,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-infinispan",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "16.2"
}, {
"service" :
"org.apache.camel.test.infra.weaviate.services.WeaviateInfraService",
"description" : "Weaviate is an open source vector database",
@@ -510,7 +566,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-weaviate",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.37.4"
}, {
"service" : "org.apache.camel.test.infra.consul.services.ConsulInfraService",
"description" : "Consul is a service networking solution",
@@ -519,7 +576,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-consul",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "2.0.0"
}, {
"service" : "org.apache.camel.test.infra.qdrant.services.QdrantInfraService",
"description" : "Qdrant is a vector similarity search engine and database",
@@ -528,7 +586,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-qdrant",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v1.18.0-unprivileged"
}, {
"service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService",
"description" : "Embedded FTPS Server",
@@ -537,7 +596,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ftp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.2.1"
}, {
"service" : "org.apache.camel.test.infra.ollama.services.OllamaInfraService",
"description" : "Ollama is a tool for running large language models locally",
@@ -546,7 +606,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ollama",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "0.12.5"
}, {
"service" :
"org.apache.camel.test.infra.azure.common.services.AzureInfraService",
"description" : "Local Azure services with Azurite",
@@ -555,7 +616,8 @@
"aliasImplementation" : [ "storage-blob" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-azure-storage-blob",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "3.35.0"
}, {
"service" :
"org.apache.camel.test.infra.docling.services.DoclingInfraService",
"description" : "Docling is a document processing and conversion toolkit",
@@ -564,7 +626,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-docling",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v1.18.0"
}, {
"service" :
"org.apache.camel.test.infra.aws.common.services.AWSInfraService",
"description" : "Local AWS Services with LocalStack",
@@ -573,7 +636,8 @@
"aliasImplementation" : [ "iam" ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-aws-v2",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.5.18"
}, {
"service" : "org.apache.camel.test.infra.fhir.services.FhirInfraService",
"description" : "HAPI FHIR RESTful test server",
@@ -582,7 +646,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-fhir",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v8.10.0-1"
}, {
"service" :
"org.apache.camel.test.infra.pinecone.services.PineconeInfraService",
"description" : "Pinecone is a vector database for machine learning
applications",
@@ -591,7 +656,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-pinecone",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "v1.0.0.rc0"
}, {
"service" : "org.apache.camel.test.infra.ftp.services.FtpInfraService",
"description" : "Embedded FTP Server",
@@ -600,7 +666,8 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-ftp",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "1.2.1"
}, {
"service" :
"org.apache.camel.test.infra.mongodb.services.MongoDBInfraService",
"description" : "MongoDB is a document-oriented NoSQL database",
@@ -609,5 +676,6 @@
"aliasImplementation" : [ ],
"groupId" : "org.apache.camel",
"artifactId" : "camel-test-infra-mongodb",
- "version" : "4.21.0-SNAPSHOT"
+ "version" : "4.21.0-SNAPSHOT",
+ "serviceVersion" : "7.0.31-jammy"
} ]
\ No newline at end of file
diff --git
a/test-infra/camel-test-infra-ftp/src/main/resources/META-INF/infra-service.properties
b/test-infra/camel-test-infra-ftp/src/main/resources/META-INF/infra-service.properties
new file mode 100644
index 000000000000..a2cbeb1888b6
--- /dev/null
+++
b/test-infra/camel-test-infra-ftp/src/main/resources/META-INF/infra-service.properties
@@ -0,0 +1,20 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+# Maps service alias to Maven groupId:artifactId for automatic version
detection
+ftp=org.apache.ftpserver:ftpserver-core
+ftps=org.apache.ftpserver:ftpserver-core
+sftp=org.apache.sshd:sshd-sftp
diff --git
a/test-infra/camel-test-infra-hazelcast/src/main/resources/META-INF/infra-service.properties
b/test-infra/camel-test-infra-hazelcast/src/main/resources/META-INF/infra-service.properties
new file mode 100644
index 000000000000..2a0a94b1c88e
--- /dev/null
+++
b/test-infra/camel-test-infra-hazelcast/src/main/resources/META-INF/infra-service.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+# Maps service alias to Maven groupId:artifactId for automatic version
detection
+hazelcast=com.hazelcast:hazelcast
diff --git
a/test-infra/camel-test-infra-ignite/src/main/resources/META-INF/infra-service.properties
b/test-infra/camel-test-infra-ignite/src/main/resources/META-INF/infra-service.properties
new file mode 100644
index 000000000000..ebfcfa49509d
--- /dev/null
+++
b/test-infra/camel-test-infra-ignite/src/main/resources/META-INF/infra-service.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+# Maps service alias to Maven groupId:artifactId for automatic version
detection
+ignite=org.apache.ignite:ignite-core
diff --git a/test-infra/camel-test-infra-smb/pom.xml
b/test-infra/camel-test-infra-smb/pom.xml
index 3a41cd5c58cb..da0bb9f53931 100644
--- a/test-infra/camel-test-infra-smb/pom.xml
+++ b/test-infra/camel-test-infra-smb/pom.xml
@@ -45,6 +45,12 @@
<groupId>org.apache.camel</groupId>
<artifactId>camel-test-junit6</artifactId>
</dependency>
+
+ <dependency>
+ <groupId>com.hierynomus</groupId>
+ <artifactId>smbj</artifactId>
+ <version>${smbj-version}</version>
+ </dependency>
</dependencies>
</project>
\ No newline at end of file
diff --git
a/test-infra/camel-test-infra-smb/src/main/resources/META-INF/infra-service.properties
b/test-infra/camel-test-infra-smb/src/main/resources/META-INF/infra-service.properties
new file mode 100644
index 000000000000..ab37d00caacb
--- /dev/null
+++
b/test-infra/camel-test-infra-smb/src/main/resources/META-INF/infra-service.properties
@@ -0,0 +1,18 @@
+## ---------------------------------------------------------------------------
+## 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.
+## ---------------------------------------------------------------------------
+# Maps service alias to Maven groupId:artifactId for automatic version
detection
+smb=com.hierynomus:smbj
diff --git
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
index bd285f9e2cb7..c7bf0d75ca66 100644
---
a/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
+++
b/tooling/maven/camel-package-maven-plugin/src/main/java/org/apache/camel/maven/packaging/CamelTestInfraGenerateMetadataMojo.java
@@ -18,11 +18,15 @@ package org.apache.camel.maven.packaging;
import java.io.File;
import java.io.IOException;
+import java.io.InputStream;
import java.util.ArrayList;
import java.util.Arrays;
+import java.util.Enumeration;
import java.util.LinkedHashSet;
import java.util.List;
+import java.util.Properties;
import java.util.Set;
+import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import javax.inject.Inject;
@@ -71,6 +75,9 @@ public class CamelTestInfraGenerateMetadataMojo extends
AbstractGeneratorMojo {
public void execute() throws MojoExecutionException, MojoFailureException {
Set<InfrastructureServiceModel> models = new LinkedHashSet<>();
+ // Collect infra-service.properties from all dependency JARs once (for
embedded service GA hints)
+ Properties infraServiceProps = collectInfraServiceProperties();
+
for (AnnotationInstance ai :
PackagePluginUtils.readJandexIndexQuietly(project).getAnnotations(INFRA_SERVICE))
{
InfrastructureServiceModel infrastructureServiceModel = new
InfrastructureServiceModel();
@@ -93,15 +100,41 @@ public class CamelTestInfraGenerateMetadataMojo extends
AbstractGeneratorMojo {
throw new RuntimeException("Error reading jar file", e);
}
+ String annotationServiceVersion = null;
+ List<String> serviceAliases = new ArrayList<>();
+ List<String> implAliases = new ArrayList<>();
+
for (AnnotationValue av : ai.values()) {
if (av.name().equals("service")) {
infrastructureServiceModel.setService(av.asString());
} else if (av.name().equals("serviceAlias")) {
-
infrastructureServiceModel.setAlias(Arrays.asList(av.asStringArray()));
+ List<String> aliases = Arrays.asList(av.asStringArray());
+ infrastructureServiceModel.setAlias(aliases);
+ serviceAliases.addAll(aliases);
} else if (av.name().equals("serviceImplementationAlias")) {
-
infrastructureServiceModel.getAliasImplementation().addAll(Arrays.asList(av.asStringArray()));
+ List<String> aliases = Arrays.asList(av.asStringArray());
+
infrastructureServiceModel.getAliasImplementation().addAll(aliases);
+ implAliases.addAll(aliases);
} else if (av.name().equals("description")) {
infrastructureServiceModel.setDescription(av.asString());
+ } else if (av.name().equals("serviceVersion")) {
+ annotationServiceVersion = av.asString();
+ }
+ }
+
+ // Resolve service version: annotation > container.properties >
infra-service.properties GA hint
+ if (annotationServiceVersion != null &&
!annotationServiceVersion.isEmpty()) {
+
infrastructureServiceModel.setServiceVersion(annotationServiceVersion);
+ } else {
+ String detectedVersion = detectServiceVersionFromContainer(
+ targetClass, infrastructureServiceModel, implAliases,
serviceAliases);
+ if (detectedVersion != null) {
+
infrastructureServiceModel.setServiceVersion(detectedVersion);
+ } else {
+ String infraVersion =
resolveVersionFromGAHint(infraServiceProps, implAliases, serviceAliases);
+ if (infraVersion != null) {
+
infrastructureServiceModel.setServiceVersion(infraVersion);
+ }
}
}
@@ -125,6 +158,207 @@ public class CamelTestInfraGenerateMetadataMojo extends
AbstractGeneratorMojo {
}
}
+ private String detectServiceVersionFromContainer(
+ String targetClass, InfrastructureServiceModel model,
+ List<String> implAliases, List<String> serviceAliases) {
+
+ // Collect container.properties from all dependency JARs to handle
+ // cross-module cases (e.g., Azure storage-queue using azure-common's
properties)
+ Properties allProps = new Properties();
+
+ for (Artifact artifact : project.getArtifacts()) {
+ File file = artifact.getFile();
+ if (file == null || !file.exists()) {
+ continue;
+ }
+
+ if (file.isDirectory()) {
+ collectContainerPropertiesFromDirectory(file, file, allProps);
+ } else {
+ collectContainerPropertiesFromJar(file, allProps);
+ }
+ }
+
+ if (allProps.isEmpty()) {
+ return null;
+ }
+
+ return extractVersionFromProperties(allProps, implAliases,
serviceAliases);
+ }
+
+ private void collectContainerPropertiesFromDirectory(File root, File dir,
Properties target) {
+ File[] files = dir.listFiles();
+ if (files == null) {
+ return;
+ }
+ for (File f : files) {
+ if (f.isDirectory()) {
+ collectContainerPropertiesFromDirectory(root, f, target);
+ } else if (f.getName().equals("container.properties")) {
+ try (InputStream is =
java.nio.file.Files.newInputStream(f.toPath())) {
+ target.load(is);
+ } catch (IOException e) {
+ // skip
+ }
+ }
+ }
+ }
+
+ private void collectContainerPropertiesFromJar(File jarPath, Properties
target) {
+ try (JarFile jarFile = new JarFile(jarPath)) {
+ Enumeration<JarEntry> entries = jarFile.entries();
+ while (entries.hasMoreElements()) {
+ JarEntry entry = entries.nextElement();
+ if (entry.getName().endsWith("/container.properties")) {
+ try (InputStream is = jarFile.getInputStream(entry)) {
+ target.load(is);
+ }
+ }
+ }
+ } catch (IOException e) {
+ // skip
+ }
+ }
+
+ private String extractVersionFromProperties(
+ Properties props, List<String> implAliases, List<String>
serviceAliases) {
+
+ // Determine which alias to match against property keys
+ // Prefer implementation alias (e.g., "redpanda" for Kafka Redpanda)
+ List<String> aliasesToMatch = new ArrayList<>();
+ if (!implAliases.isEmpty()) {
+ aliasesToMatch.addAll(implAliases);
+ }
+ aliasesToMatch.addAll(serviceAliases);
+
+ for (String alias : aliasesToMatch) {
+ String normalizedAlias = normalizeForMatching(alias);
+
+ for (String key : props.stringPropertyNames()) {
+ String lowerKey = key.toLowerCase();
+
+ // Skip platform-specific keys
+ if (lowerKey.endsWith(".ppc64le") ||
lowerKey.endsWith(".s390x")
+ || lowerKey.endsWith(".aarch64") ||
lowerKey.endsWith(".amd64")) {
+ continue;
+ }
+ // Skip version metadata keys
+ if (lowerKey.contains(".version.exclude") ||
lowerKey.contains(".version.include")
+ || lowerKey.contains(".version.freeze")) {
+ continue;
+ }
+ // Must reference a container
+ if (!lowerKey.contains("container")) {
+ continue;
+ }
+ // Skip keys ending with .version (handled separately for
RocketMQ pattern)
+ if (lowerKey.endsWith(".version")) {
+ continue;
+ }
+
+ // Extract prefix before first ".container" occurrence
+ int containerIdx = lowerKey.indexOf(".container");
+ if (containerIdx <= 0) {
+ continue;
+ }
+ String prefix = lowerKey.substring(0, containerIdx);
+ String normalizedPrefix = normalizeForMatching(prefix);
+
+ // Match: normalized prefix must equal the normalized alias,
+ // or end with the normalized alias (for compound names like
hivemq.sparkplug)
+ if (!normalizedPrefix.equals(normalizedAlias)
+ && !normalizedPrefix.endsWith(normalizedAlias)) {
+ continue;
+ }
+
+ String imageRef = props.getProperty(key);
+ if (imageRef == null || imageRef.isEmpty()) {
+ continue;
+ }
+
+ // Value must look like a container image reference (contains
'/')
+ if (!imageRef.contains("/")) {
+ continue;
+ }
+
+ // Extract version from image tag (after last ':')
+ int colonIdx = imageRef.lastIndexOf(':');
+ if (colonIdx > 0 && colonIdx < imageRef.length() - 1) {
+ return imageRef.substring(colonIdx + 1);
+ }
+
+ // No tag in image reference — check for a separate .version
property (RocketMQ pattern)
+ String versionKey = key + ".version";
+ String separateVersion = props.getProperty(versionKey);
+ if (separateVersion != null && !separateVersion.isEmpty()) {
+ return separateVersion;
+ }
+ }
+ }
+ return null;
+ }
+
+ private Properties collectInfraServiceProperties() {
+ Properties allProps = new Properties();
+ for (Artifact artifact : project.getArtifacts()) {
+ File file = artifact.getFile();
+ if (file == null || !file.exists()) {
+ continue;
+ }
+ if (file.isDirectory()) {
+ File propsFile = new File(file,
"META-INF/infra-service.properties");
+ if (propsFile.exists()) {
+ try (InputStream is =
java.nio.file.Files.newInputStream(propsFile.toPath())) {
+ allProps.load(is);
+ } catch (IOException e) {
+ // skip
+ }
+ }
+ } else {
+ try (JarFile jarFile = new JarFile(file)) {
+ JarEntry entry =
jarFile.getJarEntry("META-INF/infra-service.properties");
+ if (entry != null) {
+ try (InputStream is = jarFile.getInputStream(entry)) {
+ allProps.load(is);
+ }
+ }
+ } catch (IOException e) {
+ // skip
+ }
+ }
+ }
+ return allProps;
+ }
+
+ private String resolveVersionFromGAHint(
+ Properties infraProps, List<String> implAliases, List<String>
serviceAliases) {
+
+ List<String> aliasesToTry = new ArrayList<>();
+ aliasesToTry.addAll(implAliases);
+ aliasesToTry.addAll(serviceAliases);
+
+ for (String alias : aliasesToTry) {
+ String ga = infraProps.getProperty(alias);
+ if (ga == null || ga.isEmpty()) {
+ continue;
+ }
+ String[] parts = ga.split(":");
+ if (parts.length != 2) {
+ continue;
+ }
+ for (Artifact artifact : project.getArtifacts()) {
+ if (parts[0].equals(artifact.getGroupId()) &&
parts[1].equals(artifact.getArtifactId())) {
+ return artifact.getVersion();
+ }
+ }
+ }
+ return null;
+ }
+
+ private static String normalizeForMatching(String s) {
+ return s.replace("-", "").replace(".", "").toLowerCase();
+ }
+
private boolean classExistsInDependency(String classPath, File dependency)
throws IOException {
if (dependency.isDirectory()) {
return new File(dependency, classPath).exists();
@@ -143,6 +377,7 @@ public class CamelTestInfraGenerateMetadataMojo extends
AbstractGeneratorMojo {
private String groupId;
private String artifactId;
private String version;
+ private String serviceVersion;
public String getService() {
return service;
@@ -207,5 +442,13 @@ public class CamelTestInfraGenerateMetadataMojo extends
AbstractGeneratorMojo {
public void setVersion(String version) {
this.version = version;
}
+
+ public String getServiceVersion() {
+ return serviceVersion;
+ }
+
+ public void setServiceVersion(String serviceVersion) {
+ this.serviceVersion = serviceVersion;
+ }
}
}
diff --git
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
index 83fc356ab321..1f3655a64f1e 100644
---
a/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
+++
b/tooling/spi-annotations/src/main/java/org/apache/camel/spi/annotations/InfraService.java
@@ -69,4 +69,16 @@ public @interface InfraService {
* @return
*/
String[] serviceImplementationAlias() default {};
+
+ /**
+ * The version of the infrastructure service (e.g., "7.4.9" for Redis,
"2.54.0" for Artemis).
+ *
+ * For container-based services, the version is auto-detected from the
container image tag in container.properties
+ * at build time and does not need to be set here.
+ *
+ * For embedded services (no container), set this to the library version
manually.
+ *
+ * @return
+ */
+ String serviceVersion() default "";
}