Skip to content

Commit 43c7002

Browse files
artembilanspring-builds
authored andcommitted
Revert back to registerFeature('optional')
With a `components.java.addVariantsFromConfiguration(configurations.optional)` and `io.spring.dependency-management` combination the version is not published for `optional` dependencies. Does not look like there is an easy way to extract that version somehow. So, revert back to the `registerFeature('optional')` for time being. Even if it is reported as deprecated in Gradle (cherry picked from commit f49dcc0)
1 parent 4ec8d93 commit 43c7002

File tree

1 file changed

+34
-40
lines changed

1 file changed

+34
-40
lines changed

build.gradle

Lines changed: 34 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -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

484478
project('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') {
869863
project('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') {
915909
project('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

Comments
 (0)