Skip to content

Commit 35d1038

Browse files
committed
Externalize java-toolchain configuration
We should not use subprojects to perform configuration becaause it does not allow for lazy loading and it can cause ordering problems. In this case, the toolchain was not being used but instead it was using the JAVA_HOME. By splitting the configuration into a plugin and applying it to each project it fixes the toolchain configuration
1 parent 8746ef7 commit 35d1038

File tree

6 files changed

+42
-33
lines changed

6 files changed

+42
-33
lines changed

build.gradle

Lines changed: 0 additions & 31 deletions
Original file line numberDiff line numberDiff line change
@@ -48,37 +48,6 @@ springRelease {
4848
replaceSnapshotVersionInReferenceDocUrl = true
4949
}
5050

51-
def toolchainVersion() {
52-
if (project.hasProperty('testToolchain')) {
53-
return project.property('testToolchain').toString().toInteger()
54-
}
55-
return 25
56-
}
57-
58-
subprojects {
59-
java {
60-
toolchain {
61-
languageVersion = JavaLanguageVersion.of(toolchainVersion())
62-
}
63-
}
64-
kotlin {
65-
jvmToolchain {
66-
languageVersion = JavaLanguageVersion.of(toolchainVersion())
67-
}
68-
}
69-
tasks.withType(JavaCompile).configureEach {
70-
options.encoding = "UTF-8"
71-
options.compilerArgs.add("-parameters")
72-
options.release.set(17)
73-
}
74-
tasks.withType(KotlinCompile).configureEach {
75-
compilerOptions {
76-
javaParameters = true
77-
jvmTarget.set(JvmTarget.JVM_17)
78-
}
79-
}
80-
}
81-
8251
allprojects {
8352
if (!['spring-security-bom', 'spring-security-docs'].contains(project.name)) {
8453
apply plugin: 'io.spring.javaformat'

buildSrc/src/main/groovy/io/spring/gradle/convention/SpringModulePlugin.groovy

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ class SpringModulePlugin extends AbstractSpringJavaPlugin {
3535
pluginManager.apply(SpringMavenPlugin.class);
3636
pluginManager.apply(CheckClasspathForProhibitedDependenciesPlugin.class);
3737
pluginManager.apply("io.spring.convention.jacoco");
38+
pluginManager.apply("java-toolchain");
3839

3940
def deployArtifacts = project.task("deployArtifacts")
4041
deployArtifacts.group = 'Deploy tasks'
Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,36 @@
1+
import org.jetbrains.kotlin.gradle.dsl.JvmTarget
2+
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
3+
4+
def toolchainVersion() {
5+
if (project.hasProperty('testToolchain')) {
6+
return project.property('testToolchain').toString().toInteger()
7+
}
8+
return 25
9+
}
10+
11+
java {
12+
toolchain {
13+
languageVersion = JavaLanguageVersion.of(toolchainVersion())
14+
}
15+
}
16+
17+
tasks.withType(JavaCompile).configureEach {
18+
options.encoding = "UTF-8"
19+
options.compilerArgs.add("-parameters")
20+
options.release = 17
21+
}
22+
23+
pluginManager.withPlugin("org.jetbrains.kotlin.jvm") {
24+
kotlin {
25+
jvmToolchain {
26+
languageVersion = JavaLanguageVersion.of(toolchainVersion())
27+
}
28+
}
29+
30+
tasks.withType(KotlinCompile).configureEach {
31+
compilerOptions {
32+
javaParameters = true
33+
jvmTarget.set(JvmTarget.JVM_17)
34+
}
35+
}
36+
}

docs/spring-security-docs.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@ plugins {
33
id 'io.spring.antora.generate-antora-yml' version '0.0.1'
44
id 'io.spring.convention.repository'
55
id 'security-kotlin'
6+
id 'java-toolchain'
7+
id 'test-compile-target-jdk25'
68
}
79

810
apply plugin: 'io.spring.convention.docs'

itest/context/spring-security-itest-context.gradle

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,6 @@
11
apply plugin: 'io.spring.convention.spring-test'
2+
apply plugin: 'java-toolchain'
3+
apply plugin: 'test-compile-target-jdk25'
24

35
dependencies {
46
implementation platform(project(":spring-security-dependencies"))

web/spring-security-web.gradle

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,10 @@
11
plugins {
2+
id 'io.spring.convention.spring-module'
23
id 'security-nullability'
34
id 'javadoc-warnings-error'
45
id 'test-compile-target-jdk25'
56
}
67

7-
apply plugin: 'io.spring.convention.spring-module'
8-
98
configurations {
109
javascript {
1110
canBeConsumed = false

0 commit comments

Comments
 (0)