@@ -208,27 +208,18 @@ configure(javaProjects) { subproject ->
208208 def scopeAttribute = Attribute . of(' dependency.scope' , String )
209209
210210 configurations {
211- optional {
212- attributes {
213- attribute(scopeAttribute, ' optional' )
214- }
215- }
216211 provided {
217212 attributes {
218213 attribute(scopeAttribute, ' provided' )
219214 }
220215 }
221216
222217 [compileClasspath, testCompileClasspath, testRuntimeClasspath]. each {
223- it. extendsFrom(optional)
224218 it. extendsFrom(provided)
225219 }
226220 }
227221
228222 components. java. with {
229- it. addVariantsFromConfiguration(configurations. optional) {
230- mapToOptional()
231- }
232223 it. addVariantsFromConfiguration(configurations. provided) {
233224 mapToMavenScope(' compile' ) // This is temporary. Gradle doesn't natively support the provided scope
234225 }
@@ -245,6 +236,9 @@ configure(javaProjects) { subproject ->
245236 java {
246237 withJavadocJar()
247238 withSourcesJar()
239+ registerFeature(' optional' ) {
240+ usingSourceSet(sourceSets. main)
241+ }
248242 }
249243
250244 compileJava {
@@ -473,19 +467,19 @@ project('spring-integration-test-support') {
473467 api ' org.springframework:spring-context'
474468 api ' org.springframework:spring-messaging'
475469 api ' org.springframework:spring-test'
476- optional (" junit:junit:$junit4Version " ) {
470+ optionalApi (" junit:junit:$junit4Version " ) {
477471 exclude group : ' org.hamcrest'
478472 }
479- optional ' org.junit.jupiter:junit-jupiter-api'
480- optional ' org.apache.logging.log4j:log4j-core'
473+ optionalApi ' org.junit.jupiter:junit-jupiter-api'
474+ optionalApi ' org.apache.logging.log4j:log4j-core'
481475 }
482476}
483477
484478project(' spring-integration-amqp' ) {
485479 description = ' Spring Integration AMQP Support'
486480 dependencies {
487481 api ' org.springframework.amqp:spring-rabbit'
488- optional ' org.springframework.amqp:spring-rabbit-stream'
482+ optionalApi ' org.springframework.amqp:spring-rabbit-stream'
489483
490484 testImplementation ' org.springframework.amqp:spring-rabbit-junit'
491485 testImplementation project(' :spring-integration-stream' )
@@ -536,23 +530,23 @@ project('spring-integration-core') {
536530 api ' io.projectreactor:reactor-core'
537531 api ' io.micrometer:micrometer-observation'
538532
539- optional ' com.fasterxml.jackson.core:jackson-databind'
540- optional ' com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
541- optional ' com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
542- optional ' com.fasterxml.jackson.datatype:jackson-datatype-joda'
543- optional (' com.fasterxml.jackson.module:jackson-module-kotlin' ) {
533+ optionalApi ' com.fasterxml.jackson.core:jackson-databind'
534+ optionalApi ' com.fasterxml.jackson.datatype:jackson-datatype-jdk8'
535+ optionalApi ' com.fasterxml.jackson.datatype:jackson-datatype-jsr310'
536+ optionalApi ' com.fasterxml.jackson.datatype:jackson-datatype-joda'
537+ optionalApi (' com.fasterxml.jackson.module:jackson-module-kotlin' ) {
544538 exclude group : ' org.jetbrains.kotlin'
545539 }
546- optional " com.google.protobuf:protobuf-java:$protobufVersion "
547- optional " com.jayway.jsonpath:json-path:$jsonpathVersion "
548- optional " com.esotericsoftware:kryo:$kryoVersion "
549- optional ' io.micrometer:micrometer-core'
550- optional (' io.micrometer:micrometer-tracing' ) {
540+ optionalApi " com.google.protobuf:protobuf-java:$protobufVersion "
541+ optionalApi " com.jayway.jsonpath:json-path:$jsonpathVersion "
542+ optionalApi " com.esotericsoftware:kryo:$kryoVersion "
543+ optionalApi ' io.micrometer:micrometer-core'
544+ optionalApi (' io.micrometer:micrometer-tracing' ) {
551545 exclude group : ' aopalliance'
552546 }
553- optional " io.github.resilience4j:resilience4j-ratelimiter:$resilience4jVersion "
554- optional " org.apache.avro:avro:$avroVersion "
555- optional ' org.jetbrains.kotlinx:kotlinx-coroutines-reactor'
547+ optionalApi " io.github.resilience4j:resilience4j-ratelimiter:$resilience4jVersion "
548+ optionalApi " org.apache.avro:avro:$avroVersion "
549+ optionalApi ' org.jetbrains.kotlinx:kotlinx-coroutines-reactor'
556550
557551 testImplementation " com.google.protobuf:protobuf-java-util:$protobufVersion "
558552 testImplementation " org.aspectj:aspectjweaver:$aspectjVersion "
@@ -640,7 +634,7 @@ project('spring-integration-ftp') {
640634 api project(' :spring-integration-file' )
641635 api " commons-net:commons-net:$commonsNetVersion "
642636 api ' org.springframework:spring-context-support'
643- optional " org.apache.ftpserver:ftpserver-core:$ftpServerVersion "
637+ optionalApi " org.apache.ftpserver:ftpserver-core:$ftpServerVersion "
644638
645639 testImplementation project(' :spring-integration-file' ). sourceSets. test. output
646640 }
@@ -700,8 +694,8 @@ project('spring-integration-http') {
700694 dependencies {
701695 api ' org.springframework:spring-webmvc'
702696 provided " jakarta.servlet:jakarta.servlet-api:$servletApiVersion "
703- optional " com.rometools:rome:$romeToolsVersion "
704- optional ' org.springframework:spring-webflux'
697+ optionalApi " com.rometools:rome:$romeToolsVersion "
698+ optionalApi ' org.springframework:spring-webflux'
705699
706700 testImplementation " org.hamcrest:hamcrest-core:$hamcrestVersion "
707701 testImplementation ' org.springframework.security:spring-security-messaging'
@@ -733,7 +727,7 @@ project('spring-integration-jdbc') {
733727 description = ' Spring Integration JDBC Support'
734728 dependencies {
735729 api ' org.springframework:spring-jdbc'
736- optional " org.postgresql:postgresql:$postgresVersion "
730+ optionalApi " org.postgresql:postgresql:$postgresVersion "
737731
738732 testImplementation " com.h2database:h2:$h2Version "
739733 testImplementation " org.hsqldb:hsqldb:$hsqldbVersion "
@@ -781,7 +775,7 @@ project('spring-integration-jpa') {
781775 description = ' Spring Integration JPA Support'
782776 dependencies {
783777 api ' org.springframework:spring-orm'
784- optional " jakarta.persistence:jakarta.persistence-api:$jpaApiVersion "
778+ optionalApi " jakarta.persistence:jakarta.persistence-api:$jpaApiVersion "
785779
786780 testImplementation ' org.springframework.data:spring-data-jpa'
787781 testImplementation " com.h2database:h2:$h2Version "
@@ -817,8 +811,8 @@ project('spring-integration-mongodb') {
817811 dependencies {
818812 api ' org.springframework.data:spring-data-mongodb'
819813
820- optional " org.mongodb:mongodb-driver-sync:$mongoDriverVersion "
821- optional " org.mongodb:mongodb-driver-reactivestreams:$mongoDriverVersion "
814+ optionalApi " org.mongodb:mongodb-driver-sync:$mongoDriverVersion "
815+ optionalApi " org.mongodb:mongodb-driver-reactivestreams:$mongoDriverVersion "
822816
823817 testImplementation ' org.testcontainers:mongodb'
824818 }
@@ -839,7 +833,7 @@ project('spring-integration-mqtt') {
839833 dependencies {
840834 api " org.eclipse.paho:org.eclipse.paho.client.mqttv3:$pahoMqttClientVersion "
841835
842- optional " org.eclipse.paho:org.eclipse.paho.mqttv5.client:$pahoMqttClientVersion "
836+ optionalApi " org.eclipse.paho:org.eclipse.paho.mqttv5.client:$pahoMqttClientVersion "
843837
844838 testImplementation project(' :spring-integration-jmx' )
845839 testImplementation ' com.fasterxml.jackson.core:jackson-databind'
@@ -869,7 +863,7 @@ project('spring-integration-rsocket') {
869863project(' spring-integration-scripting' ) {
870864 description = ' Spring Integration Scripting Support'
871865 dependencies {
872- optional ' org.jetbrains.kotlin:kotlin-scripting-jsr223'
866+ optionalApi ' org.jetbrains.kotlin:kotlin-scripting-jsr223'
873867 provided " org.graalvm.sdk:graal-sdk:$graalvmVersion "
874868 provided " org.graalvm.polyglot:js:$graalvmVersion "
875869
@@ -915,7 +909,7 @@ project('spring-integration-smb') {
915909project(' spring-integration-stomp' ) {
916910 description = ' Spring Integration STOMP Support'
917911 dependencies {
918- optional ' org.springframework:spring-websocket'
912+ optionalApi ' org.springframework:spring-websocket'
919913
920914 testImplementation project(' :spring-integration-websocket' )
921915 testImplementation project(' :spring-integration-websocket' ). sourceSets. test. output
@@ -967,7 +961,7 @@ project('spring-integration-webflux') {
967961 exclude group : ' org.springframework' , module : ' spring-webmvc'
968962 }
969963 api ' org.springframework:spring-webflux'
970- optional ' io.projectreactor.netty:reactor-netty-http'
964+ optionalApi ' io.projectreactor.netty:reactor-netty-http'
971965
972966 testImplementation " jakarta.servlet:jakarta.servlet-api:$servletApiVersion "
973967 testImplementation " org.hamcrest:hamcrest-core:$hamcrestVersion "
@@ -990,7 +984,7 @@ project('spring-integration-websocket') {
990984 description = ' Spring Integration WebSockets Support'
991985 dependencies {
992986 api ' org.springframework:spring-websocket'
993- optional ' org.springframework:spring-webmvc'
987+ optionalApi ' org.springframework:spring-webmvc'
994988 provided " jakarta.servlet:jakarta.servlet-api:$servletApiVersion "
995989
996990 testImplementation project(' :spring-integration-event' )
@@ -1037,7 +1031,7 @@ project('spring-integration-xml') {
10371031 api(' org.springframework.ws:spring-xml' ) {
10381032 exclude group : ' org.springframework'
10391033 }
1040- optional (' org.springframework.ws:spring-ws-core' ) {
1034+ optionalApi (' org.springframework.ws:spring-ws-core' ) {
10411035 exclude group : ' org.springframework'
10421036 }
10431037
@@ -1067,7 +1061,7 @@ project('spring-integration-zeromq') {
10671061 dependencies {
10681062 api " org.zeromq:jeromq:$jeroMqVersion "
10691063
1070- optional ' com.fasterxml.jackson.core:jackson-databind'
1064+ optionalApi ' com.fasterxml.jackson.core:jackson-databind'
10711065 }
10721066}
10731067
0 commit comments