/* * Copyright 2023 Conductor authors *
* Licensed 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. */ plugins { id 'org.springframework.boot' } dependencies { implementation project(':conductor-core') implementation project(':conductor-rest') implementation project(':conductor-grpc-server') implementation project(':conductor-ai') // Embedded AgentSpan runtime (REST controllers, agent services); activated only when // conductor.integrations.ai.enabled=true. implementation project(':conductor-agentspan-server') //Event Systems implementation project(':conductor-amqp') implementation project(':conductor-nats') implementation project(':conductor-nats-streaming') implementation project(':conductor-awssqs-event-queue') implementation project(':conductor-kafka-event-queue') //External Payload Storage implementation project(':conductor-azureblob-storage') implementation project(':conductor-postgres-external-storage') implementation project(':conductor-awss3-storage') implementation project(':conductor-local-file-storage') implementation project(':conductor-gcs-storage') //Persistence implementation project(':conductor-redis-configuration') implementation project(':conductor-redis-persistence') implementation project(':conductor-cassandra-persistence') implementation project(':conductor-postgres-persistence') implementation project(':conductor-mysql-persistence') implementation project(':conductor-sqlite-persistence') // Indexing backend selection (build-time) to avoid Lucene conflicts between ES and OS def indexingBackend = project.findProperty('indexingBackend') ?: 'elasticsearch' if (indexingBackend == 'opensearch3' || indexingBackend == 'os3') { implementation project(':conductor-os-persistence-v3') } else if (indexingBackend == 'opensearch' || indexingBackend == 'os') { implementation project(':conductor-os-persistence') implementation project(':conductor-os-persistence-v2') } else if (indexingBackend == 'elasticsearch8' || indexingBackend == 'es8') { implementation project(':conductor-es8-persistence') } else if (indexingBackend == 'elasticsearch7' || indexingBackend == 'es7' || indexingBackend == 'elasticsearch') { implementation project(':conductor-es7-persistence') } else { implementation project(':conductor-es7-persistence') } implementation project(':conductor-redis-lock') implementation project(':conductor-redis-concurrency-limit') //System Tasks implementation project(':conductor-http-task') implementation project(':conductor-json-jq-task') implementation project(':conductor-kafka') //Scheduler implementation project(':conductor-scheduler-core') implementation project(':conductor-scheduler-postgres-persistence') implementation project(':conductor-scheduler-mysql-persistence') implementation project(':conductor-scheduler-cassandra-persistence') implementation project(':conductor-scheduler-redis-persistence') implementation project(':conductor-scheduler-sqlite-persistence') //Metrics implementation "io.micrometer:micrometer-registry-cloudwatch2:${revMicrometer}" implementation "io.micrometer:micrometer-registry-azure-monitor:${revMicrometer}" implementation "io.micrometer:micrometer-registry-prometheus:${revMicrometer}" //Event Listener implementation project(':conductor-workflow-event-listener') implementation 'org.springframework.boot:spring-boot-starter' implementation 'org.springframework.boot:spring-boot-starter-validation' implementation 'org.springframework.boot:spring-boot-starter-web' implementation 'org.springframework.retry:spring-retry' implementation 'org.springframework.boot:spring-boot-starter-log4j2' implementation 'org.apache.logging.log4j:log4j-web' implementation "redis.clients:jedis:${revJedis}" implementation "org.postgresql:postgresql:${revPostgres}" implementation 'org.springframework.boot:spring-boot-starter-actuator' implementation "io.orkes.queues:orkes-conductor-queues:${revOrkesQueues}" implementation "org.springdoc:springdoc-openapi-starter-webmvc-ui:${revSpringDoc}" runtimeOnly "org.glassfish.jaxb:jaxb-runtime:${revJAXB}" testImplementation project(':conductor-rest') testImplementation project(':conductor-common') testImplementation "io.grpc:grpc-testing:${revGrpc}" testImplementation "com.google.protobuf:protobuf-java:${revProtoBuf}" testImplementation "io.grpc:grpc-protobuf:${revGrpc}" testImplementation "io.grpc:grpc-stub:${revGrpc}" } jar { enabled = true } bootJar { mainClass = 'com.netflix.conductor.Conductor' manifest { attributes('Implementation-Title': project.name, 'Implementation-Version': project.version) } archiveClassifier = 'boot' } publishing { publications { mavenJava(MavenPublication) { artifact bootJar } } } // https://docs.spring.io/spring-boot/docs/current/gradle-plugin/reference/htmlsingle/#integrating-with-actuator.build-info // This will configure a BuildInfo task named bootBuildInfo springBoot { buildInfo() } compileJava.dependsOn bootBuildInfo