""" Bazel rules for building Quarkus applications with build-time augmentation. Uses the official QuarkusBootstrap API for full Quarkus feature support. """ module( name = "rules_quarkus", version = "0.1.1", compatibility_level = 1, ) # Bazel dependencies bazel_dep(name = "rules_java", version = "8.6.2") bazel_dep(name = "rules_jvm_external", version = "6.5") # Maven dependencies for Quarkus maven = use_extension("@rules_jvm_external//:extensions.bzl", "maven") QUARKUS_VERSION = "3.20.1" maven.install( name = "maven", artifacts = [ # =========================================== # Quarkus Core # =========================================== "io.quarkus:quarkus-core:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-core-deployment:%s" % QUARKUS_VERSION, # =========================================== # Quarkus ArC (CDI) # =========================================== "io.quarkus:quarkus-arc:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-arc-deployment:%s" % QUARKUS_VERSION, "io.quarkus.arc:arc:%s" % QUARKUS_VERSION, "io.quarkus.arc:arc-processor:%s" % QUARKUS_VERSION, # =========================================== # Quarkus Bootstrap # =========================================== "io.quarkus:quarkus-bootstrap-core:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-bootstrap-app-model:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-bootstrap-runner:%s" % QUARKUS_VERSION, # =========================================== # Quarkus Builder # =========================================== "io.quarkus:quarkus-builder:%s" % QUARKUS_VERSION, # =========================================== # Quarkus REST (formerly RESTEasy Reactive) # =========================================== "io.quarkus:quarkus-rest:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-rest-jackson:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-vertx-http:%s" % QUARKUS_VERSION, # =========================================== # Quarkus Mutiny (Reactive) # =========================================== "io.quarkus:quarkus-mutiny:%s" % QUARKUS_VERSION, # =========================================== # Tier 2: Reactive Database Clients # =========================================== "io.quarkus:quarkus-reactive-oracle-client:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-reactive-mysql-client:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-redis-client:%s" % QUARKUS_VERSION, # =========================================== # Tier 3: Messaging # =========================================== "io.quarkus:quarkus-messaging-rabbitmq:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-messaging-kafka:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-grpc:%s" % QUARKUS_VERSION, # =========================================== # Tier 4: Observability # =========================================== "io.quarkus:quarkus-micrometer-registry-prometheus:%s" % QUARKUS_VERSION, "io.quarkus:quarkus-smallrye-health:%s" % QUARKUS_VERSION, # =========================================== # Tier 5: Quarkiverse Extensions # =========================================== # Unleash (feature flags) "io.quarkiverse.unleash:quarkus-unleash:1.10.0", # LangChain4j (AI/LLM) "io.quarkiverse.langchain4j:quarkus-langchain4j-core:0.26.1", "io.quarkiverse.langchain4j:quarkus-langchain4j-openai:0.26.1", "io.quarkiverse.langchain4j:quarkus-langchain4j-ollama:0.26.1", # Tika (content analysis) "io.quarkiverse.tika:quarkus-tika:2.1.0", # =========================================== # Gizmo for bytecode generation # =========================================== "io.quarkus.gizmo:gizmo:1.8.0", # =========================================== # Jandex for bytecode indexing # =========================================== "io.smallrye:jandex:3.2.3", # =========================================== # Vert.x # =========================================== "io.vertx:vertx-core:4.5.11", "io.vertx:vertx-web:4.5.11", # =========================================== # Jakarta APIs # =========================================== "jakarta.enterprise:jakarta.enterprise.cdi-api:4.1.0", "jakarta.inject:jakarta.inject-api:2.0.1", "jakarta.annotation:jakarta.annotation-api:3.0.0", "jakarta.ws.rs:jakarta.ws.rs-api:4.0.0", # =========================================== # JBoss Logging # =========================================== "org.jboss.logging:jboss-logging:3.6.1.Final", "org.jboss.logmanager:jboss-logmanager:3.0.6.Final", # =========================================== # ASM for bytecode manipulation # =========================================== "org.ow2.asm:asm:9.7", "org.ow2.asm:asm-commons:9.7", ], fail_if_repin_required = False, fetch_sources = True, generate_compat_repositories = True, repositories = [ "https://repo1.maven.org/maven2", ], ) # Add deployment artifacts with exclusions for circular dependencies maven.artifact( artifact = "quarkus-rest-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-vertx-http-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) # =========================================== # Tier 1: REST Jackson + Mutiny deployment # =========================================== maven.artifact( artifact = "quarkus-rest-jackson-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-mutiny-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) # =========================================== # Tier 2: Reactive DB Clients deployment # =========================================== maven.artifact( artifact = "quarkus-reactive-oracle-client-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-reactive-mysql-client-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-redis-client-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) # =========================================== # Tier 3: Messaging deployment # =========================================== maven.artifact( artifact = "quarkus-messaging-rabbitmq-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-messaging-kafka-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-grpc-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) # =========================================== # Tier 4: Observability deployment # =========================================== maven.artifact( artifact = "quarkus-micrometer-registry-prometheus-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) maven.artifact( artifact = "quarkus-smallrye-health-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkus", version = QUARKUS_VERSION, ) # =========================================== # Tier 5: Quarkiverse deployment # =========================================== maven.artifact( artifact = "quarkus-unleash-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkiverse.unleash", version = "1.10.0", ) maven.artifact( artifact = "quarkus-langchain4j-core-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkiverse.langchain4j", version = "0.26.1", ) maven.artifact( artifact = "quarkus-langchain4j-openai-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkiverse.langchain4j", version = "0.26.1", ) maven.artifact( artifact = "quarkus-langchain4j-ollama-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkiverse.langchain4j", version = "0.26.1", ) maven.artifact( artifact = "quarkus-tika-deployment", exclusions = [ "org.eclipse.sisu:org.eclipse.sisu.plexus", "org.apache.maven:maven-plugin-api", "org.apache.maven:maven-xml-impl", "org.codehaus.plexus:plexus-xml", ], group = "io.quarkiverse.tika", version = "2.1.0", ) use_repo(maven, "maven")