buildscript { repositories { mavenCentral() gradlePluginPortal() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } } dependencies { classpath 'io.spring.gradle:dependency-management-plugin:1.1.5' classpath "org.springframework.boot:spring-boot-gradle-plugin:$springBootVersion" classpath 'org.gretty:gretty:4.0.3' } } description = 'Spring Integration Samples' apply plugin: 'base' apply plugin: 'idea' ext { linkHomepage = 'https://projects.spring.io/spring-integration' linkCi = 'https://build.spring.io/browse/INTSAMPLES' linkIssue = 'https://github.com/spring-projects/spring-integration-samples/issues' linkScmUrl = 'https://github.com/spring-projects/spring-integration-samples' linkScmConnection = 'scm:git:git://github.com/spring-projects/spring-integration-samples.git' linkScmDevConnection = 'scm:git:ssh://git@github.com:spring-projects/spring-integration-samples.git' } allprojects { group = 'org.springframework.integration.samples' repositories { mavenLocal() mavenCentral() maven { url 'https://repo.spring.io/milestone' } maven { url 'https://repo.spring.io/snapshot' } // maven { url 'https://repo.spring.io/libs-staging-local' } } } subprojects { subproject -> apply plugin: 'eclipse' apply plugin: 'idea' eclipse { project { natures += 'org.springframework.ide.eclipse.core.springnature' } } if (!(subproject.name in ['advanced', 'applications', 'basic', 'intermediate', 'dsl', 'cafe'])) { apply plugin: 'java-library' apply plugin: 'io.spring.dependency-management' apply plugin: 'maven-publish' tasks.withType(GenerateModuleMetadata) { enabled = false } model { tasks.generatePomFileForMavenJavaPublication { destination = file('pom.xml') } } task generatePom(dependsOn: 'generatePomFileForMavenJavaPublication') publishing { publications { mavenJava(MavenPublication) { suppressAllPomMetadataWarnings() from components.java pom { name = project.description description = project.description url = linkScmUrl organization { name = 'Spring IO' url = 'https://spring.io/projects/spring-integration' } licenses { license { name = 'Apache License, Version 2.0' url = 'https://www.apache.org/licenses/LICENSE-2.0.txt' distribution = 'repo' } } scm { url = linkScmUrl connection = 'scm:git:' + linkScmConnection developerConnection = 'scm:git:' + linkScmDevConnection } developers { developer { id = 'artembilan' name = 'Artem Bilan' email = 'artem.bilan@broadcom.com' roles = ['project lead'] } developer { id = 'garyrussell' name = 'Gary Russell' email = 'github@gprussell.net' roles = ['project lead emeritus'] } developer { id = 'markfisher' name = 'Mark Fisher' email = 'mark.ryan.fisher@gmail.com' roles = ['project founder and lead emeritus'] } } issueManagement { system = 'GitHub' url = linkIssue } withXml { asNode().appendNode('properties')appendNode('java.version', java.sourceCompatibility) if (subproject.plugins.hasPlugin('org.akhikhl.gretty')) { asNode().appendNode('packaging', 'war') def plugins = asNode().build?.find()?.plugins?.find() if (!plugins) { plugins = asNode().appendNode('build').appendNode('plugins') } plugins.appendNode('plugin') .with { appendNode('groupId', 'org.mortbay.jetty') appendNode('artifactId', 'jetty-maven-plugin') appendNode('version', '8.1.14.v20131031') appendNode('configuration') .appendNode('webAppConfig') .appendNode('contextPath', '/' + subproject.name) } } if (subproject.plugins.hasPlugin('org.springframework.boot')) { asNode().get('packaging').first().value = 'jar' def plugins = asNode().build?.find()?.plugins?.find() if (!plugins) { plugins = asNode().appendNode('build').appendNode('plugins') } plugins.appendNode('plugin') .with { appendNode('groupId', 'org.springframework.boot') appendNode('artifactId', 'spring-boot-maven-plugin') } asNode().appendNode('parent').with { appendNode('groupId', 'org.springframework.boot') appendNode('artifactId', 'spring-boot-starter-parent') appendNode('version', property('springBootVersion')) } } if (subproject.plugins.hasPlugin('java-library')) { def repositories = asNode().appendNode('repositories') repositories.appendNode('repository') .with { appendNode('id', 'repo.spring.io.milestone') appendNode('name', 'Spring Framework Maven Milestone Repository') appendNode('url', 'https://repo.spring.io/milestone') } repositories.appendNode('repository') .with { appendNode('id', 'repo.spring.io.snapshot') appendNode('name', 'Spring Framework Maven Snapshot Repository') appendNode('url', 'https://repo.spring.io/snapshot') } } def pomDeps = asNode().dependencies.find() if (!pomDeps) { pomDeps = asNode().appendNode('dependencies') } subproject.configurations.testImplementation.dependencies.each { dep -> pomDeps.appendNode('dependency').with { appendNode('groupId', dep.group) appendNode('artifactId', dep.name) if (dep.version) { appendNode('version', dep.version) } appendNode('scope', 'test') } } subproject.configurations.testRuntimeOnly.dependencies.each { dep -> pomDeps.appendNode('dependency').with { appendNode('groupId', dep.group) appendNode('artifactId', dep.name) if (dep.version) { appendNode('version', dep.version) } appendNode('scope', 'runtime') } } } } } } } compileJava { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 } compileTestJava { sourceCompatibility = JavaVersion.VERSION_17 targetCompatibility = JavaVersion.VERSION_17 options.encoding = 'UTF-8' } ext { artemisVersion = '2.33.0' aspectjVersion = '1.9.22.1' commonsDigesterVersion = '2.1' commonsDbcpVersion = '2.12.0' commonsFileUploadVersion = '1.5' commonsIoVersion = '2.16.1' commonsLangVersion = '3.12.0' commonsPoolVersion = '2.11.1' c3p0Version = '0.9.5.5' derbyVersion = '10.16.1.1' hamcrestVersion = '2.2' hibernateVersion = '6.5.2.Final' hibernateValidatorVersion = '8.0.0.Final' ftpServerVersion = '1.2.0' flexjsonVersion = '2.0' graalvmVersion = '24.0.2' groovyVersion = '4.0.23' hsqldbVersion = '2.7.3' h2Version = '2.2.224' jacksonVersion = '2.18.0' jaxbVersion = '4.0.5' jodaTimeVersion = '1.6' jtaVersion = '2.0.0' jtdsVersion = '1.2.6' jmsApiVersion = '3.1.0' jrubyVersion = '9.4.7.0' jpaApiVersion = '3.1.0' jstlVersion = '1.2' junitVersion = '4.13.2' junitJupiterVersion = '5.11.1' log4jVersion = '2.23.1' mailVersion = '2.0.3' mockitoVersion = '5.12.0' mongoDriverVersion = '5.1.1' openJpaVersion = '2.4.0' oracleDriverVersion = '23.3.0.23.09' postgresVersion = '42.7.3' slf4jVersion = '1.7.30' springCloudVersion = '2024.0.0' springIntegrationVersion = '6.5.0-SNAPSHOT' set('spring-integration.version', "$springIntegrationVersion") springIntegrationSocialTwiterVersion = '1.0.1.BUILD-SNAPSHOT' springIntegrationSplunkVersion = '1.2.0.BUILD-SNAPSHOT' springVersion = '6.2.1' springSecurityVersion = '6.5.0-SNAPSHOT' springWebFlowVersion = '3.0.0' testcontainersVersion = '1.19.8' tilesJspVersion = '2.2.1' } sourceSets.each { it.resources.srcDirs = ["src/${it.name}/resources", "src/${it.name}/java"] } dependencyManagement { imports { mavenBom "org.springframework.integration:spring-integration-bom:$springIntegrationVersion" mavenBom "org.springframework:spring-framework-bom:$springVersion" mavenBom "com.fasterxml.jackson:jackson-bom:$jacksonVersion" mavenBom "org.junit:junit-bom:$junitJupiterVersion" } } // dependencies that are common across all java projects dependencies { testImplementation("junit:junit:$junitVersion") { exclude group: 'org.hamcrest' } testImplementation "org.hamcrest:hamcrest-library:$hamcrestVersion" testImplementation("org.mockito:mockito-core:$mockitoVersion") { exclude group: 'org.hamcrest' } testImplementation 'org.junit.jupiter:junit-jupiter-api' testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine' testRuntimeOnly 'org.junit.platform:junit-platform-launcher' // To support JUnit 4 tests testRuntimeOnly 'org.junit.vintage:junit-vintage-engine' testImplementation 'org.springframework.integration:spring-integration-test' } // enable all compiler warnings; individual projects may customize further ext.xLintArg = '-Xlint:all,-options,-processing' [compileJava, compileTestJava]*.options*.compilerArgs = [xLintArg] test { useJUnitPlatform() // suppress all console output during testing unless running `gradle -i` logging.captureStandardOutput(LogLevel.INFO) } } task cleanTarget(type: Delete) { delete 'target' } clean.dependsOn cleanTarget } project('advanced-testing-examples') { description = 'Advanced Testing Examples' dependencies { api "jakarta.jms:jakarta.jms-api:$jmsApiVersion" api 'org.springframework.integration:spring-integration-jms' api 'org.springframework.integration:spring-integration-groovy' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('dynamic-ftp') { description = 'Dynamic FTP Demo' dependencies { api 'org.springframework.integration:spring-integration-ftp' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('cafe-si') { description = 'Cafe - Pure Spring Integration' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.cafe.xml.CafeDemoApp' dependencies { api 'org.springframework.integration:spring-integration-stream' api 'com.fasterxml.jackson.core:jackson-databind' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('cafe-amqp') { description = 'Cafe - With AMQP Message Broker' dependencies { api project(':cafe-si') api 'org.springframework.integration:spring-integration-amqp' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('cafe-jms') { description = 'Cafe - With JMS Message Broker' dependencies { api project(':cafe-si') api("org.apache.activemq:artemis-server:$artemisVersion") { exclude group: 'org.jboss.logmanager' } api "org.apache.activemq:artemis-jakarta-client:$artemisVersion" api 'org.springframework.integration:spring-integration-jms' api "jakarta.jms:jakarta.jms-api:$jmsApiVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('cafe-scripted') { description = 'Cafe Sample (Scripted Implementation)' dependencies { api 'org.springframework.integration:spring-integration-stream' api 'org.springframework.integration:spring-integration-groovy' api 'org.springframework.integration:spring-integration-jmx' api 'org.springframework.integration:spring-integration-rsocket' api "org.jruby:jruby-complete:$jrubyVersion" api "org.graalvm.sdk:graal-sdk:$graalvmVersion" api "org.graalvm.polyglot:python:$graalvmVersion" api "org.apache.groovy:groovy-jsr223:$groovyVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } task runCafeDemoApp(type: JavaExec) { main 'org.springframework.integration.samples.cafe.demo.CafeDemoApp' args project.hasProperty('lang') ? project.lang : '' classpath = sourceSets.main.runtimeClasspath } task runControlBus(type: JavaExec) { main 'org.springframework.integration.samples.cafe.demo.ControlBusMain' classpath = sourceSets.main.runtimeClasspath } } project('loan-broker') { description = 'Loan Broker Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.loanbroker.demo.LoanBrokerDemo' dependencies { api 'org.springframework.integration:spring-integration-ip' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } task runLoanBrokerSharkDetectorDemo(type: JavaExec) { main 'org.springframework.integration.samples.loanbroker.demo.LoanBrokerSharkDetectorDemo' classpath = sourceSets.main.runtimeClasspath } } project('loanshark') { description = 'Loan Shark Sample' apply plugin: 'war' apply plugin: 'org.gretty' apply plugin: 'eclipse-wtp' dependencies { api 'org.springframework.integration:spring-integration-ip' api 'org.springframework:spring-webmvc' api 'org.springframework:spring-orm' api 'org.springframework:spring-aop' api 'org.springframework:spring-aspects' api "org.aspectj:aspectjtools:$aspectjVersion" api 'org.springframework:spring-jdbc' api 'org.springframework:spring-tx' api 'org.springframework:spring-context' api "commons-fileupload:commons-fileupload:$commonsFileUploadVersion" api "org.apache.commons:commons-dbcp2:$commonsDbcpVersion" api "commons-digester:commons-digester:$commonsDigesterVersion" api "org.apache.commons:commons-pool2:$commonsPoolVersion" api "org.apache.tiles:tiles-jsp:$tilesJspVersion" api "joda-time:joda-time:$jodaTimeVersion" api "jakarta.transaction:jakarta.transaction-api:$jtaVersion" api "org.hsqldb:hsqldb:$hsqldbVersion" api "net.sf.flexjson:flexjson:$flexjsonVersion" api "org.hibernate:hibernate-validator:$hibernateValidatorVersion" api "jakarta.persistence:jakarta.persistence-api:$jpaApiVersion" api "org.hibernate.orm:hibernate-core:$hibernateVersion" api "org.springframework.webflow:spring-js-resources:$springWebFlowVersion" api "org.slf4j:slf4j-api:$slf4jVersion" runtimeOnly "org.apache.logging.log4j:log4j-core:$log4jVersion" runtimeOnly "org.slf4j:slf4j-log4j12:$slf4jVersion" runtimeOnly "org.slf4j:jcl-over-slf4j:$slf4jVersion" } } project('amqp') { description = 'AMQP Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-stream' api 'org.springframework.integration:spring-integration-amqp' api "org.apache.logging.log4j:log4j-core:$log4jVersion" runtimeOnly "org.slf4j:slf4j-jcl:$slf4jVersion" } task runSimple(type: JavaExec) { main 'org.springframework.integration.samples.amqp.SampleSimple' classpath = sourceSets.main.runtimeClasspath standardInput = System.in // useful for debugging the GradleWorkerMain // jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000" } task runPubConfirmsReturns(type: JavaExec) { main 'org.springframework.integration.samples.amqp.SamplePubConfirmsReturns' classpath = sourceSets.main.runtimeClasspath standardInput = System.in // useful for debugging the GradleWorkerMain // jvmArgs "-agentlib:jdwp=transport=dt_socket,server=y,suspend=y,address=8000" } } project('barrier') { description = 'Barrier Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-web' api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.boot:spring-boot-starter-amqp' api 'org.springframework.integration:spring-integration-amqp' api 'org.springframework.integration:spring-integration-http' testImplementation 'org.springframework.amqp:spring-rabbit-junit' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.barrier.Application' } task run(type: JavaExec) { main 'org.springframework.integration.samples.barrier.Application' classpath = sourceSets.main.runtimeClasspath } } project('control-bus') { description = 'Control Bus Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('enricher') { description = 'Enricher Basic Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.enricher.Main' dependencies { api 'org.springframework.integration:spring-integration-core' api "com.h2database:h2:$h2Version" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('feed') { description = 'Feed (RSS/ATOM) Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-feed' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('file') { description = 'File Copy Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-file' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('ftp') { description = 'FTP Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-ftp' api "commons-io:commons-io:$commonsIoVersion" api "org.apache.ftpserver:ftpserver-core:$ftpServerVersion" api "org.slf4j:slf4j-api:$slf4jVersion" runtimeOnly "org.slf4j:slf4j-log4j12:$slf4jVersion" testImplementation "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.integration:spring-integration-test' } test { include '**/TestSuite*' } } project('helloworld') { description = 'Hello World Sample' dependencies { api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } task runHelloWorldApp(type: JavaExec) { main 'org.springframework.integration.samples.helloworld.HelloWorldApp' classpath = sourceSets.main.runtimeClasspath } task runPollerApp(type: JavaExec) { main 'org.springframework.integration.samples.helloworld.PollerApp' classpath = sourceSets.main.runtimeClasspath } } project('http') { description = 'HTTP Sample' apply plugin: 'war' apply plugin: 'application' apply plugin: 'org.gretty' apply plugin: 'eclipse-wtp' mainClassName = 'org.springframework.integration.samples.http.HttpClientDemo' dependencies { api 'org.springframework.integration:spring-integration-http' api 'org.springframework.integration:spring-integration-mail' api 'org.springframework:spring-webmvc' api "commons-fileupload:commons-fileupload:$commonsFileUploadVersion" api "commons-io:commons-io:$commonsIoVersion" api "org.eclipse.angus:jakarta.mail:$mailVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } /*project('splunk') { description = 'Splunk Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-core' api "org.springframework.integration:spring-integration-splunk:$springIntegrationSplunkVersion" testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.splunk.Application' } task run(type: JavaExec) { main 'org.springframework.integration.samples.splunk.Application' classpath = sourceSets.main.runtimeClasspath } }*/ project('kafka') { description = 'Apache Kafka Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api('org.springframework.integration:spring-integration-kafka') { exclude group: 'org.slf4j' } api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.kafka.Application' } task run(type: JavaExec) { main 'org.springframework.integration.samples.kafka.Application' classpath = sourceSets.main.runtimeClasspath } } project('mqtt') { description = 'MQTT Basic Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-stream' api 'org.springframework.integration:spring-integration-mqtt' api 'org.eclipse.paho:org.eclipse.paho.client.mqttv3:1.2.5' testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation "org.springframework.integration:spring-integration-test" } springBoot { mainClass = 'org.springframework.integration.samples.mqtt.Application' } task run(type: JavaExec) { main 'org.springframework.integration.samples.mqtt.Application' classpath = sourceSets.main.runtimeClasspath } tasks.withType(JavaExec) { standardInput = System.in } } project('si4demo') { description = 'Java Configuration/DSL Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-web' api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-mail' api "org.springframework.integration:spring-integration-social-twitter:$springIntegrationSocialTwiterVersion" api 'org.springframework.integration:spring-integration-http' api 'org.springframework.integration:spring-integration-ip' api "org.eclipse.angus:jakarta.mail:$mailVersion" api 'com.rometools:rome:2.1.0' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.si4demo.dsl.Application' } tasks.withType(JavaExec) { standardInput = System.in } } project('cafe-dsl') { description = 'Java DSL Cafe Sample' apply plugin: 'org.springframework.boot' dependencies { api project(":cafe-si") api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-core' api 'org.springframework.integration:spring-integration-stream' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.dsl.cafe.lambda.Application' } tasks.withType(JavaExec) { standardInput = System.in } } project('jdbc') { description = 'JDBC Basic Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.jdbc.Main' dependencies { api 'org.springframework.integration:spring-integration-jdbc' api "com.h2database:h2:$h2Version" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('jms') { description = 'JMS Basic Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.jms.Main' dependencies { api "jakarta.jms:jakarta.jms-api:$jmsApiVersion" api 'org.springframework.integration:spring-integration-jms' api 'org.springframework.integration:spring-integration-stream' api("org.apache.activemq:artemis-server:$artemisVersion") { exclude group: 'org.jboss.logmanager' } api "org.apache.activemq:artemis-jakarta-client:$artemisVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.integration:spring-integration-test' } } project('jmx') { description = 'JMX Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-jmx' api 'org.springframework.integration:spring-integration-stream' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('jpa') { description = 'JPA Basic Sample' apply plugin: 'application' apply plugin: 'org.springframework.boot' mainClassName = 'org.springframework.integration.samples.jpa.Main' dependencies { api 'org.springframework.boot:spring-boot-starter-data-jpa' api 'org.springframework.integration:spring-integration-jpa' api "com.h2database:h2:$h2Version" runtimeOnly 'org.springframework:spring-instrument' runtimeOnly "jakarta.persistence:jakarta.persistence-api:$jpaApiVersion" testImplementation 'org.springframework.boot:spring-boot-starter-test' } tasks.withType(JavaExec) { standardInput = System.in } } project('mail') { description = 'Mail (IMAP + POP3) Sample' dependencies { api 'org.springframework.integration:spring-integration-mail' api 'org.springframework:spring-context' api "org.eclipse.angus:jakarta.mail:$mailVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } task runGmailInboundPop3AdapterTestApp(type: JavaExec) { main 'org.springframework.integration.samples.mail.imapidle.GmailInboundPop3AdapterTestApp' classpath = sourceSets.main.runtimeClasspath } task runGmailInboundImapIdleAdapterTestApp(type: JavaExec) { main 'org.springframework.integration.samples.mail.imapidle.GmailInboundImapIdleAdapterTestApp' classpath = sourceSets.main.runtimeClasspath } } project('mongodb') { description = 'MongoDb Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-mongodb' api "org.apache.logging.log4j:log4j-core:$log4jVersion" api "org.mongodb:mongodb-driver-sync:$mongoDriverVersion" } task runMongoDbInboundAdapterDemo(type: JavaExec) { main 'org.springframework.integration.samples.mongodb.inbound.MongoDbInboundAdapterDemo' classpath = sourceSets.main.runtimeClasspath } task runMongoDbOutboundAdapterDemo(type: JavaExec) { main 'org.springframework.integration.samples.mongodb.inbound.MongoDbOutboundAdapterDemo' classpath = sourceSets.main.runtimeClasspath } } project('oddeven') { description = 'Odd-Even Sample' dependencies { api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } task runCronOddEvenDemo(type: JavaExec) { main 'org.springframework.integration.samples.oddeven.CronOddEvenDemo' classpath = sourceSets.main.runtimeClasspath } task runIntervalOddEvenDemoTestApp(type: JavaExec) { main 'org.springframework.integration.samples.oddeven.IntervalOddEvenDemoTestApp' classpath = sourceSets.main.runtimeClasspath } } project('quote') { description = 'Quote Sample' dependencies { api 'org.springframework.integration:spring-integration-stream' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('sftp') { description = 'SFTP Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-sftp' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('tcp-amqp') { description = 'TCP-AMQP Basic Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.tcpamqp.Main' dependencies { api 'org.springframework.integration:spring-integration-amqp' api 'org.springframework.integration:spring-integration-ip' api "org.slf4j:slf4j-api:$slf4jVersion" runtimeOnly "org.apache.logging.log4j:log4j-core:$log4jVersion" runtimeOnly "org.slf4j:slf4j-log4j12:$slf4jVersion" } } project('tcp-broadcast') { description = 'TCP Client Broadcast Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-web' api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-ip' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.tcpbroadcast.TcpBroadcastApplication' } task run(type: JavaExec) { main 'org.springframework.integration.samples.tcpbroadcast.TcpBroadcastApplication' classpath = sourceSets.main.runtimeClasspath } } project('tcp-client-server') { description = 'TCP Client Server Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.tcpclientserver.Main' dependencies { api 'org.springframework.integration:spring-integration-ip' api "org.apache.commons:commons-lang3:$commonsLangVersion" api 'org.springframework.integration:spring-integration-test' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('testcontainers-rabbitmq') { description = 'Testcontainers RabbitMQ Sample' apply plugin: 'org.springframework.boot' springBoot { mainClass = 'org.springframework.integration.samples.testcontainersrabbitmq.TestcontainersRabbitmqApplication' } dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-amqp' api 'org.springframework.boot:spring-boot-starter-json' testImplementation('org.springframework.boot:spring-boot-starter-test') { exclude group: 'org.junit.vintage', module: 'junit-vintage-engine' } testImplementation 'org.springframework.integration:spring-integration-test' testImplementation 'org.springframework.amqp:spring-rabbit-test' testImplementation 'org.springframework.cloud:spring-cloud-starter' testImplementation "org.testcontainers:junit-jupiter:$testcontainersVersion" testImplementation 'com.playtika.testcontainers:embedded-rabbitmq:2.0.19' } dependencyManagement { imports { mavenBom "org.springframework.cloud:spring-cloud-dependencies:$springCloudVersion" } } } project('testing-examples') { description = 'Testing Examples' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.testing.externalgateway.Main' dependencies { api 'org.springframework.integration:spring-integration-file' api 'org.springframework.integration:spring-integration-http' api 'org.springframework.integration:spring-integration-ws' api 'org.springframework:spring-webmvc' api "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.integration:spring-integration-test' } } project('twitter') { description = 'Twitter Basic Sample' dependencies { api "org.springframework.integration:spring-integration-social-twitter:$springIntegrationSocialTwiterVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } test { exclude '**/*Sample*' } } project('ws-inbound-gateway') { description = 'WS Inbound Gateway Sample' apply plugin: 'war' apply plugin: 'org.gretty' apply plugin: 'eclipse-wtp' dependencies { api 'org.springframework.integration:spring-integration-xml' api 'org.springframework.integration:spring-integration-ws' api 'org.springframework:spring-webmvc' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } test { exclude '**/InContainerTests*' } } project('ws-outbound-gateway') { description = 'WS Outbound Gateway Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.ws.WebServiceDemoTestApp' dependencies { api 'org.springframework.integration:spring-integration-stream' api 'org.springframework.integration:spring-integration-ws' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('xml') { description = 'XML Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.xml.BookOrderProcessingTestApp' dependencies { api 'org.springframework.integration:spring-integration-xml' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('xmpp') { description = 'XMPP Basic Sample' dependencies { api 'org.springframework.integration:spring-integration-xmpp' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } test { exclude '**/*Sample*' } } project('async-gateway') { description = 'Async Gateway Sample' dependencies { api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('dynamic-poller') { description = 'Dynamic Poller Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.poller.Main' dependencies { api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('errorhandling') { description = 'Error Handling Sample' dependencies { api 'org.springframework.integration:spring-integration-stream' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('file-processing') { description = 'File Processing Sample' dependencies { api 'org.springframework.integration:spring-integration-file' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('mail-attachments') { description = 'Mail Attachment Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.mailattachments.Main' dependencies { api 'org.springframework.integration:spring-integration-mail' api 'org.springframework.integration:spring-integration-file' api "org.eclipse.angus:jakarta.mail:$mailVersion" api "commons-io:commons-io:$commonsIoVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.integration:spring-integration-test' } } project('monitoring') { description = 'Monitoring Application' apply plugin: 'war' apply plugin: 'org.gretty' apply plugin: 'application' apply plugin: 'eclipse-wtp' mainClassName = 'org.springintegration.SpringIntegrationTest' dependencies { api 'org.springframework.integration:spring-integration-jmx' api "org.springframework.integration:spring-integration-social-twitter:$springIntegrationSocialTwiterVersion" api 'org.springframework.integration:spring-integration-groovy' api 'org.springframework:spring-webmvc' api "javax.servlet:jstl:$jstlVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('multipart-http') { description = 'HTTP Multipart Demo' apply plugin: 'war' apply plugin: 'org.gretty' apply plugin: 'eclipse-wtp' dependencies { api 'org.springframework.integration:spring-integration-http' api 'org.springframework:spring-webmvc' api 'com.fasterxml.jackson.core:jackson-databind' api "commons-fileupload:commons-fileupload:$commonsFileUploadVersion" api "commons-io:commons-io:$commonsIoVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('rest-http') { description = 'Spring Integration Rest HTTP Path Usage Demo' apply plugin: 'war' apply plugin: 'org.gretty' apply plugin: 'eclipse-wtp' dependencies { api 'org.springframework.integration:spring-integration-http' api 'org.springframework:spring-webmvc' api 'org.springframework:spring-oxm' api 'org.springframework:spring-tx' api 'org.springframework:spring-jdbc' api 'org.springframework:spring-context' api 'org.springframework:spring-aop' api 'com.fasterxml.jackson.core:jackson-databind' api "org.springframework.security:spring-security-web:$springSecurityVersion" api "org.springframework.security:spring-security-config:$springSecurityVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" api "com.sun.xml.bind:jaxb-impl:$jaxbVersion" } test { exclude '**/RestHttpClientTest*' } } project('retry-and-more') { description = 'Retry and More Sample' dependencies { api 'org.springframework.integration:spring-integration-stream' api 'org.springframework.integration:spring-integration-amqp' api 'org.springframework.integration:spring-integration-ftp' api 'org.springframework.integration:spring-integration-file' api("org.mockito:mockito-core:$mockitoVersion") { exclude group: 'org.hamcrest' } api "org.hamcrest:hamcrest-library:$hamcrestVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } task runCircuitBreakerDemo(type: JavaExec) { main 'org.springframework.integration.samples.advice.CircuitBreakerDemo' classpath = sourceSets.main.runtimeClasspath } task runFileTransferDeleteAfterSuccessDemo(type: JavaExec) { main 'org.springframework.integration.samples.advice.FileTransferDeleteAfterSuccessDemo' classpath = sourceSets.main.runtimeClasspath } task runFileTransferRenameAfterFailureDemo(type: JavaExec) { main 'org.springframework.integration.samples.advice.FileTransferRenameAfterFailureDemo' classpath = sourceSets.main.runtimeClasspath } task runStatefulRetryDemo(type: JavaExec) { main 'org.springframework.integration.samples.advice.StatefulRetryDemo' classpath = sourceSets.main.runtimeClasspath } task runStatelessRetryDemo(type: JavaExec) { main 'org.springframework.integration.samples.advice.StatelessRetryDemo' classpath = sourceSets.main.runtimeClasspath } } project('splitter-aggregator-reaper') { description = 'Splitter-Aggregator-Reaper Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.splitteraggregator.Main' dependencies { api 'org.springframework.integration:spring-integration-core' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('stored-procedures-derby') { description = 'Derby Stored Procedures Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.storedprocedure.Main' dependencies { api 'org.springframework.integration:spring-integration-jdbc' api "org.apache.derby:derby:$derbyVersion" api "org.apache.derby:derbytools:$derbyVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('stored-procedures-oracle') { description = 'Oracle Stored Procedures Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.storedprocedure.Main' dependencies { api 'org.springframework.integration:spring-integration-jdbc' api "com.oracle.database.jdbc:ojdbc11:$oracleDriverVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } test { exclude '**/StringConversionServiceTest*' } } project('stored-procedures-ms') { description = 'MS SQLServer Stored Procedures Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.storedprocedure.Main' dependencies { api 'org.springframework.integration:spring-integration-jdbc' api "net.sourceforge.jtds:jtds:$jtdsVersion" api "com.mchange:c3p0:$c3p0Version" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } test { exclude '**/StringConversionServiceTest*' } } project('stored-procedures-postgresql') { description = 'PostgreSQL Stored Procedures Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.storedprocedure.Main' dependencies { api 'org.springframework.integration:spring-integration-jdbc' api "org.postgresql:postgresql:$postgresVersion" api "org.apache.commons:commons-dbcp2:$commonsDbcpVersion" api "org.apache.commons:commons-pool2:$commonsPoolVersion" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('tcp-async-bi-directional') { description = 'Bi-Directional TCP Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api "org.springframework.integration:spring-integration-ip" testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation "org.springframework.integration:spring-integration-test" } springBoot { mainClass = 'org.springframework.integration.samples.tcpasyncbi.TcpAsyncBiDirectionalApplication' } task run(type: JavaExec) { main 'org.springframework.integration.samples.tcpasyncbi.TcpAsyncBiDirectionalApplication' classpath = sourceSets.main.runtimeClasspath } } project('tcp-client-server-multiplex') { description = 'TCP Client Server Multiplexing Sample' dependencies { api 'org.springframework.integration:spring-integration-ip' api "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.integration:spring-integration-test' } } project('travel') { description = 'Travel Services Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.travel.Main' dependencies { api 'org.springframework.integration:spring-integration-ws' api 'org.springframework.integration:spring-integration-http' api 'org.springframework:spring-web' api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('tx-synch') { description = 'Transaction Synchronization Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.advice.TransactionSynchronizationDemo' dependencies { api 'org.springframework.integration:spring-integration-jdbc' api 'org.springframework.integration:spring-integration-file' api "com.h2database:h2:$h2Version" api "org.apache.logging.log4j:log4j-core:$log4jVersion" } } project('web-sockets') { description = 'Web Sockets Basic Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-websocket' api "org.springframework.integration:spring-integration-websocket" testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.websocket.standard.server.Application' } tasks.withType(JavaExec) { standardInput = System.in } } project('stomp-chat') { description = 'Web Sockets Stomp Chat Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-websocket' api 'org.springframework.integration:spring-integration-websocket' api 'org.springframework.integration:spring-integration-event' api 'org.springframework.integration:spring-integration-groovy' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.chat.stomp.server.Application' } tasks.withType(JavaExec) { standardInput = System.in } } project('kafka-dsl') { description = 'Java DSL Kafka Sample' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-core' api 'org.springframework.integration:spring-integration-kafka' api "org.apache.logging.log4j:log4j-core:$log4jVersion" testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.dsl.kafka.Application' } task run(type: JavaExec) { main 'org.springframework.integration.samples.dsl.kafka.Application' classpath = sourceSets.main.runtimeClasspath } tasks.withType(JavaExec) { standardInput = System.in } } project('file-split-ftp') { description = 'File Split FTP' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-web' api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-ftp' api 'org.springframework.integration:spring-integration-http' api 'org.springframework.integration:spring-integration-mail' api "org.eclipse.angus:jakarta.mail:$mailVersion" testImplementation 'org.springframework.boot:spring-boot-starter-test' testImplementation 'org.springframework.integration:spring-integration-test' testImplementation ('com.icegreen:greenmail:2.1.0-alpha-3') { exclude group: 'com.sun.mail' exclude group: 'jakarta.activation' } } springBoot { mainClass = 'org.springframework.integration.samples.filesplit.Application' } task run(type: JavaExec) { main 'org.springframework.integration.samples.filesplit.Application' classpath = sourceSets.main.runtimeClasspath } } project('dynamic-tcp-client') { description = 'Dynamic TCP Client' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-ip' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.dynamictcp.DynamicTcpClientApplication' } task run(type: JavaExec) { main 'org.springframework.integration.samples.dynamictcp.DynamicTcpClientApplication' classpath = sourceSets.main.runtimeClasspath } } project('tcp-with-headers') { description = 'TCP Send/Receive with headers' apply plugin: 'org.springframework.boot' dependencies { api 'org.springframework.boot:spring-boot-starter-integration' api 'org.springframework.integration:spring-integration-ip' api 'com.fasterxml.jackson.core:jackson-databind' testImplementation 'org.springframework.boot:spring-boot-starter-test' } springBoot { mainClass = 'org.springframework.integration.samples.tcpheaders.TcpWithHeadersApplication' } task run(type: JavaExec) { main 'org.springframework.integration.samples.tcpheaders.TcpWithHeadersApplication' classpath = sourceSets.main.runtimeClasspath } tasks.withType(JavaExec) { standardInput = System.in } } project('zip') { description = 'Zip Channel Adapters Sample' apply plugin: 'application' mainClassName = 'org.springframework.integration.samples.zip.Main' dependencies { api 'org.springframework.integration:spring-integration-zip' api "org.apache.logging.log4j:log4j-slf4j2-impl:$log4jVersion" } tasks.withType(JavaExec) { standardInput = System.in } }