plugins { id "java-library" id "org.antora" id "org.springframework.boot.auto-configuration" id "org.springframework.boot.configuration-properties" id "org.springframework.boot.conventions" id "org.springframework.boot.deployed" id "org.springframework.boot.optional-dependencies" } description = "Spring Boot Actuator AutoConfigure" configurations { antoraContent } dependencies { api(project(":spring-boot-project:spring-boot-actuator")) api(project(":spring-boot-project:spring-boot")) api(project(":spring-boot-project:spring-boot-autoconfigure")) implementation("com.fasterxml.jackson.core:jackson-databind") implementation("com.fasterxml.jackson.datatype:jackson-datatype-jsr310") optional("ch.qos.logback:logback-classic") optional("org.apache.cassandra:java-driver-core") { exclude group: "org.slf4j", module: "jcl-over-slf4j" } optional("com.fasterxml.jackson.dataformat:jackson-dataformat-xml") optional("com.github.ben-manes.caffeine:caffeine") optional("com.hazelcast:hazelcast") optional("com.hazelcast:hazelcast-spring") optional("com.zaxxer:HikariCP") optional("io.lettuce:lettuce-core") optional("io.micrometer:micrometer-observation") optional("io.micrometer:micrometer-jakarta9") optional("io.micrometer:micrometer-tracing") optional("io.micrometer:micrometer-tracing-bridge-brave") optional("io.micrometer:micrometer-tracing-bridge-otel") optional("io.micrometer:micrometer-tracing-reporter-wavefront") optional("io.micrometer:micrometer-registry-appoptics") optional("io.micrometer:micrometer-registry-atlas") { exclude group: "javax.inject", module: "javax.inject" } optional("io.micrometer:micrometer-registry-datadog") optional("io.micrometer:micrometer-registry-dynatrace") optional("io.micrometer:micrometer-registry-elastic") optional("io.micrometer:micrometer-registry-ganglia") optional("io.micrometer:micrometer-registry-graphite") optional("io.micrometer:micrometer-registry-humio") optional("io.micrometer:micrometer-registry-influx") optional("io.micrometer:micrometer-registry-jmx") optional("io.micrometer:micrometer-registry-kairos") optional("io.micrometer:micrometer-registry-new-relic") optional("io.micrometer:micrometer-registry-otlp") optional("io.micrometer:micrometer-registry-prometheus") optional("io.micrometer:micrometer-registry-prometheus-simpleclient") optional("io.micrometer:micrometer-registry-stackdriver") { exclude group: "commons-logging", module: "commons-logging" exclude group: "javax.annotation", module: "javax.annotation-api" } optional("io.prometheus:simpleclient_pushgateway") { exclude group: "javax.xml.bind", module: "jaxb-api" } optional("io.micrometer:micrometer-registry-signalfx") optional("io.micrometer:micrometer-registry-statsd") optional("io.micrometer:micrometer-registry-wavefront") optional("io.zipkin.reporter2:zipkin-reporter-brave") optional("io.zipkin.reporter2:zipkin-sender-urlconnection") optional("io.opentelemetry:opentelemetry-exporter-zipkin") optional("io.opentelemetry:opentelemetry-exporter-otlp") optional("io.projectreactor.netty:reactor-netty-http") optional("io.r2dbc:r2dbc-pool") optional("io.r2dbc:r2dbc-proxy") optional("io.r2dbc:r2dbc-spi") optional("jakarta.jms:jakarta.jms-api") optional("jakarta.persistence:jakarta.persistence-api") optional("jakarta.servlet:jakarta.servlet-api") optional("javax.cache:cache-api") optional("org.apache.activemq:activemq-client") optional("org.apache.commons:commons-dbcp2") { exclude group: "commons-logging", module: "commons-logging" } optional("org.apache.kafka:kafka-clients") optional("org.apache.kafka:kafka-streams") optional("org.apache.logging.log4j:log4j-api") optional("org.apache.tomcat.embed:tomcat-embed-core") optional("org.apache.tomcat.embed:tomcat-embed-el") optional("org.apache.tomcat:tomcat-jdbc") optional("org.aspectj:aspectjweaver") optional("org.cache2k:cache2k-micrometer") optional("org.cache2k:cache2k-spring") optional("org.eclipse.angus:angus-mail") optional("org.eclipse.jetty:jetty-server") { exclude group: "org.eclipse.jetty.toolchain", module: "jetty-jakarta-servlet-api" } optional("org.elasticsearch.client:elasticsearch-rest-client") { exclude group: "commons-logging", module: "commons-logging" } optional("org.flywaydb:flyway-core") optional("org.glassfish.jersey.core:jersey-server") optional("org.glassfish.jersey.containers:jersey-container-servlet-core") optional("org.glassfish.jersey.ext:jersey-micrometer") optional("org.hibernate.orm:hibernate-core") optional("org.hibernate.orm:hibernate-micrometer") optional("org.hibernate.validator:hibernate-validator") optional("org.influxdb:influxdb-java") optional("org.liquibase:liquibase-core") { exclude group: "javax.xml.bind", module: "jaxb-api" } optional("org.mongodb:mongodb-driver-reactivestreams") optional("org.mongodb:mongodb-driver-sync") optional("org.neo4j.driver:neo4j-java-driver") optional("org.quartz-scheduler:quartz") optional("org.springframework:spring-jdbc") optional("org.springframework:spring-jms") optional("org.springframework:spring-messaging") optional("org.springframework:spring-webflux") optional("org.springframework:spring-webmvc") optional("org.springframework.amqp:spring-rabbit") optional("org.springframework.batch:spring-batch-core") optional("org.springframework.data:spring-data-cassandra") { exclude group: "org.slf4j", module: "jcl-over-slf4j" } optional("org.springframework.data:spring-data-couchbase") optional("org.springframework.data:spring-data-jpa") optional("org.springframework.data:spring-data-ldap") optional("org.springframework.data:spring-data-mongodb") optional("org.springframework.data:spring-data-redis") optional("org.springframework.data:spring-data-elasticsearch") { exclude group: "commons-logging", module: "commons-logging" } optional("org.springframework.graphql:spring-graphql") optional("org.springframework.integration:spring-integration-core") optional("org.springframework.kafka:spring-kafka") optional("org.springframework.security:spring-security-config") optional("org.springframework.security:spring-security-web") optional("org.springframework.session:spring-session-core") optional("redis.clients:jedis") testImplementation(project(":spring-boot-project:spring-boot-test")) testImplementation(project(":spring-boot-project:spring-boot-tools:spring-boot-test-support")) testImplementation("io.micrometer:micrometer-observation-test") testImplementation("io.projectreactor:reactor-test") testImplementation("io.prometheus:prometheus-metrics-exposition-formats") testImplementation("io.r2dbc:r2dbc-h2") testImplementation("com.squareup.okhttp3:mockwebserver") testImplementation("com.jayway.jsonpath:json-path") testImplementation("io.undertow:undertow-core") testImplementation("io.undertow:undertow-servlet") testImplementation("jakarta.xml.bind:jakarta.xml.bind-api") testImplementation("org.apache.activemq:artemis-jakarta-client") { exclude group: "commons-logging", module: "commons-logging" } testImplementation("org.apache.activemq:artemis-jakarta-server") { exclude group: "commons-logging", module: "commons-logging" } testImplementation("org.apache.logging.log4j:log4j-to-slf4j") testImplementation("org.aspectj:aspectjrt") testImplementation("org.assertj:assertj-core") testImplementation("org.awaitility:awaitility") testImplementation("org.cache2k:cache2k-api") testImplementation("org.eclipse.jetty.ee10:jetty-ee10-webapp") testImplementation("org.eclipse.jetty.http2:jetty-http2-server") testImplementation("org.glassfish.jersey.ext:jersey-spring6") testImplementation("org.glassfish.jersey.media:jersey-media-json-jackson") testImplementation("org.hamcrest:hamcrest") testImplementation("org.hsqldb:hsqldb") testImplementation("org.junit.jupiter:junit-jupiter") testImplementation("org.mockito:mockito-core") testImplementation("org.mockito:mockito-junit-jupiter") testImplementation("org.skyscreamer:jsonassert") testImplementation("org.springframework:spring-core-test") testImplementation("org.springframework:spring-orm") testImplementation("org.springframework.data:spring-data-rest-webmvc") testImplementation("org.springframework.integration:spring-integration-jmx") testImplementation("org.springframework.restdocs:spring-restdocs-mockmvc") testImplementation("org.springframework.restdocs:spring-restdocs-webtestclient") testImplementation("org.springframework.security:spring-security-test") testImplementation("org.yaml:snakeyaml") testRuntimeOnly("jakarta.management.j2ee:jakarta.management.j2ee-api") testRuntimeOnly("jakarta.transaction:jakarta.transaction-api") testRuntimeOnly("org.cache2k:cache2k-core") testRuntimeOnly("org.opensaml:opensaml-core:4.0.1") testRuntimeOnly("org.opensaml:opensaml-saml-api:4.0.1") testRuntimeOnly("org.opensaml:opensaml-saml-impl:4.0.1") testRuntimeOnly("org.springframework:spring-aspects") testRuntimeOnly("org.springframework.security:spring-security-oauth2-jose") testRuntimeOnly("org.springframework.security:spring-security-oauth2-resource-server") testRuntimeOnly("org.springframework.security:spring-security-saml2-service-provider") { exclude group: "org.opensaml", module: "opensaml-core" exclude group: "org.opensaml", module: "opensaml-saml-api" exclude group: "org.opensaml", module: "opensaml-saml-impl" } } tasks.named("test") { jvmArgs += "--add-opens=java.base/java.net=ALL-UNNAMED" filter { excludeTestsMatching("org.springframework.boot.actuate.autoconfigure.endpoint.web.documentation.*") } } def documentationTest = tasks.register("documentationTest", Test) { jvmArgs += "--add-opens=java.base/java.net=ALL-UNNAMED" filter { includeTestsMatching("org.springframework.boot.actuate.autoconfigure.endpoint.web.documentation.*") } outputs.dir("${buildDir}/generated-snippets") develocity { predictiveTestSelection { enabled = false } } } def antoraActuatorRestApiLocalAggregateContent = tasks.register("antoraActuatorRestApiLocalAggregateContent", Zip) { destinationDirectory = layout.buildDirectory.dir('generated/docs/antora-content') archiveClassifier = "actuator-rest-api-local-aggregate-content" from(tasks.getByName("generateAntoraYml")) { into "modules" } } def antoraActuatorRestApiAggregateContent = tasks.register("antoraActuatorRestApiAggregateContent", Zip) { dependsOn documentationTest inputs.dir("${buildDir}/generated-snippets") .withPathSensitivity(PathSensitivity.RELATIVE) .withPropertyName("generatedSnippets") destinationDirectory = layout.buildDirectory.dir('generated/docs/antora-content') archiveClassifier = "actuator-rest-api-aggregate-content" from("${buildDir}/generated-snippets") { into "modules/api/partials/rest/actuator" } } tasks.named("generateAntoraPlaybook") { alwaysInclude = [name: "actuator-rest-api", classifier: "local-aggregate-content"] dependsOn antoraActuatorRestApiLocalAggregateContent } tasks.named("antora") { inputs.files(antoraActuatorRestApiAggregateContent) } artifacts { antoraContent antoraActuatorRestApiAggregateContent }