Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Submit feedback
Sign in / Register
Toggle navigation
S
spring-boot
Project
Project
Details
Activity
Releases
Cycle Analytics
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Charts
Issues
0
Issues
0
List
Board
Labels
Milestones
Merge Requests
0
Merge Requests
0
CI / CD
CI / CD
Pipelines
Jobs
Schedules
Charts
Wiki
Wiki
Snippets
Snippets
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Charts
Create a new issue
Jobs
Commits
Issue Boards
Open sidebar
DEMO
spring-boot
Commits
1ce6e796
Commit
1ce6e796
authored
Mar 04, 2021
by
Andy Wilkinson
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Polish "Allow the project to be built with Java 16"
See gh-25171
parent
1ccd8dae
Changes
4
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
43 additions
and
86 deletions
+43
-86
ToolchainExtension.java
...ingframework/boot/build/toolchain/ToolchainExtension.java
+10
-30
ToolchainPlugin.java
...springframework/boot/build/toolchain/ToolchainPlugin.java
+31
-54
build.gradle
spring-boot-project/spring-boot-cli/build.gradle
+1
-1
build.gradle
.../spring-boot-tools/spring-boot-gradle-plugin/build.gradle
+1
-1
No files found.
buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainExtension.java
View file @
1ce6e796
...
@@ -16,9 +16,8 @@
...
@@ -16,9 +16,8 @@
package
org
.
springframework
.
boot
.
build
.
toolchain
;
package
org
.
springframework
.
boot
.
build
.
toolchain
;
import
java.util.Optional
;
import
org.gradle.api.Project
;
import
org.gradle.api.Project
;
import
org.gradle.api.provider.Property
;
import
org.gradle.jvm.toolchain.JavaLanguageVersion
;
import
org.gradle.jvm.toolchain.JavaLanguageVersion
;
/**
/**
...
@@ -28,41 +27,22 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion;
...
@@ -28,41 +27,22 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion;
*/
*/
public
class
ToolchainExtension
{
public
class
ToolchainExtension
{
private
final
Pro
ject
project
;
private
final
Pro
perty
<
JavaLanguageVersion
>
maximumCompatibleJavaVersion
;
private
int
maximumCompatibleJ
avaVersion
;
private
final
JavaLanguageVersion
j
avaVersion
;
public
ToolchainExtension
(
Project
project
)
{
public
ToolchainExtension
(
Project
project
)
{
this
.
project
=
project
;
this
.
maximumCompatibleJavaVersion
=
project
.
getObjects
().
property
(
JavaLanguageVersion
.
class
);
}
String
toolchainVersion
=
(
String
)
project
.
findProperty
(
"toolchainVersion"
);
this
.
javaVersion
=
(
toolchainVersion
!=
null
)
?
JavaLanguageVersion
.
of
(
toolchainVersion
)
:
null
;
public
void
setMaximumCompatibleJavaVersion
(
int
maximumVersion
)
{
this
.
maximumCompatibleJavaVersion
=
maximumVersion
;
}
public
Optional
<
JavaLanguageVersion
>
getToolchainVersion
()
{
String
toolchainVersion
=
(
String
)
this
.
project
.
findProperty
(
"toolchainVersion"
);
if
(
toolchainVersion
==
null
)
{
return
Optional
.
empty
();
}
int
version
=
Integer
.
parseInt
(
toolchainVersion
);
return
getJavaLanguageVersion
(
version
);
}
}
public
boolean
isJavaVersionSupported
()
{
public
Property
<
JavaLanguageVersion
>
getMaximumCompatibleJavaVersion
()
{
Optional
<
JavaLanguageVersion
>
maximumVersion
=
getJavaLanguageVersion
(
this
.
maximumCompatibleJavaVersion
);
return
this
.
maximumCompatibleJavaVersion
;
if
(!
maximumVersion
.
isPresent
())
{
return
true
;
}
Optional
<
JavaLanguageVersion
>
toolchainVersion
=
getToolchainVersion
();
return
toolchainVersion
.
isPresent
()
&&
maximumVersion
.
get
().
canCompileOrRun
(
toolchainVersion
.
get
());
}
}
private
Optional
<
JavaLanguageVersion
>
getJavaLanguageVersion
(
int
version
)
{
JavaLanguageVersion
getJavaVersion
()
{
if
(
version
>=
8
)
{
return
this
.
javaVersion
;
return
Optional
.
of
(
JavaLanguageVersion
.
of
(
version
));
}
return
Optional
.
empty
();
}
}
}
}
buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainPlugin.java
View file @
1ce6e796
...
@@ -18,16 +18,14 @@ package org.springframework.boot.build.toolchain;
...
@@ -18,16 +18,14 @@ package org.springframework.boot.build.toolchain;
import
java.util.Arrays
;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.List
;
import
java.util.Optional
;
import
org.gradle.api.Action
;
import
org.gradle.api.Plugin
;
import
org.gradle.api.Plugin
;
import
org.gradle.api.Project
;
import
org.gradle.api.Project
;
import
org.gradle.api.plugins.JavaPluginExtension
;
import
org.gradle.api.tasks.compile.JavaCompile
;
import
org.gradle.api.tasks.compile.JavaCompile
;
import
org.gradle.api.tasks.javadoc.Javadoc
;
import
org.gradle.api.tasks.javadoc.Javadoc
;
import
org.gradle.api.tasks.testing.Test
;
import
org.gradle.api.tasks.testing.Test
;
import
org.gradle.jvm.toolchain.JavaLanguageVersion
;
import
org.gradle.jvm.toolchain.JavaLanguageVersion
;
import
org.gradle.jvm.toolchain.JavaToolchainService
;
import
org.gradle.jvm.toolchain.JavaToolchainSpec
;
import
org.gradle.jvm.toolchain.JavaToolchainSpec
;
/**
/**
...
@@ -44,19 +42,28 @@ public class ToolchainPlugin implements Plugin<Project> {
...
@@ -44,19 +42,28 @@ public class ToolchainPlugin implements Plugin<Project> {
private
void
configureToolchain
(
Project
project
)
{
private
void
configureToolchain
(
Project
project
)
{
ToolchainExtension
toolchain
=
project
.
getExtensions
().
create
(
"toolchain"
,
ToolchainExtension
.
class
,
project
);
ToolchainExtension
toolchain
=
project
.
getExtensions
().
create
(
"toolchain"
,
ToolchainExtension
.
class
,
project
);
project
.
afterEvaluate
((
evaluated
)
->
{
JavaLanguageVersion
toolchainVersion
=
toolchain
.
getJavaVersion
();
Optional
<
JavaLanguageVersion
>
toolchainVersion
=
toolchain
.
getToolchainVersion
();
if
(
toolchainVersion
!=
null
)
{
if
(
toolchainVersion
.
isPresent
())
{
project
.
afterEvaluate
((
evaluated
)
->
configure
(
evaluated
,
toolchain
));
if
(!
toolchain
.
isJavaVersionSupported
())
{
}
disableToolchainTasks
(
project
);
}
}
else
{
private
void
configure
(
Project
project
,
ToolchainExtension
toolchain
)
{
configureJavaCompileToolchain
(
project
,
toolchain
);
if
(!
isJavaVersionSupported
(
toolchain
,
toolchain
.
getJavaVersion
()))
{
configureJavadocToolchain
(
project
,
toolchain
);
disableToolchainTasks
(
project
);
configureTestToolchain
(
project
,
toolchain
);
}
}
else
{
}
JavaToolchainSpec
toolchainSpec
=
project
.
getExtensions
().
getByType
(
JavaPluginExtension
.
class
)
});
.
getToolchain
();
toolchainSpec
.
getLanguageVersion
().
set
(
toolchain
.
getJavaVersion
());
configureJavaCompileToolchain
(
project
,
toolchain
);
configureTestToolchain
(
project
,
toolchain
);
}
}
public
boolean
isJavaVersionSupported
(
ToolchainExtension
toolchain
,
JavaLanguageVersion
toolchainVersion
)
{
return
toolchain
.
getMaximumCompatibleJavaVersion
().
map
((
version
)
->
version
.
canCompileOrRun
(
toolchainVersion
))
.
getOrElse
(
true
);
}
}
private
void
disableToolchainTasks
(
Project
project
)
{
private
void
disableToolchainTasks
(
Project
project
)
{
...
@@ -67,50 +74,20 @@ public class ToolchainPlugin implements Plugin<Project> {
...
@@ -67,50 +74,20 @@ public class ToolchainPlugin implements Plugin<Project> {
private
void
configureJavaCompileToolchain
(
Project
project
,
ToolchainExtension
toolchain
)
{
private
void
configureJavaCompileToolchain
(
Project
project
,
ToolchainExtension
toolchain
)
{
project
.
getTasks
().
withType
(
JavaCompile
.
class
,
(
compile
)
->
{
project
.
getTasks
().
withType
(
JavaCompile
.
class
,
(
compile
)
->
{
withOptionalJavaToolchain
(
toolchain
).
ifPresent
((
action
)
->
{
compile
.
getOptions
().
setFork
(
true
);
JavaToolchainService
service
=
getJavaToolchainService
(
project
);
// See https://github.com/gradle/gradle/issues/15538
compile
.
getJavaCompiler
().
set
(
service
.
compilerFor
(
action
));
List
<
String
>
forkArgs
=
Arrays
.
asList
(
"--add-opens"
,
"jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"
);
compile
.
getOptions
().
setFork
(
true
);
compile
.
getOptions
().
getForkOptions
().
getJvmArgs
().
addAll
(
forkArgs
);
// See https://github.com/gradle/gradle/issues/15538
List
<
String
>
forkArgs
=
Arrays
.
asList
(
"--add-opens"
,
"jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"
);
compile
.
getOptions
().
getForkOptions
().
getJvmArgs
().
addAll
(
forkArgs
);
});
});
}
private
void
configureJavadocToolchain
(
Project
project
,
ToolchainExtension
toolchain
)
{
project
.
getTasks
().
withType
(
Javadoc
.
class
,
(
javadoc
)
->
{
withOptionalJavaToolchain
(
toolchain
).
ifPresent
((
action
)
->
{
JavaToolchainService
service
=
getJavaToolchainService
(
project
);
javadoc
.
getJavadocTool
().
set
(
service
.
javadocToolFor
(
action
));
});
});
});
}
}
private
void
configureTestToolchain
(
Project
project
,
ToolchainExtension
toolchain
)
{
private
void
configureTestToolchain
(
Project
project
,
ToolchainExtension
toolchain
)
{
project
.
getTasks
().
withType
(
Test
.
class
,
(
test
)
->
{
project
.
getTasks
().
withType
(
Test
.
class
,
(
test
)
->
{
withOptionalJavaToolchain
(
toolchain
).
ifPresent
((
action
)
->
{
// See https://github.com/spring-projects/spring-ldap/issues/570
JavaToolchainService
service
=
getJavaToolchainService
(
project
);
List
<
String
>
arguments
=
Arrays
.
asList
(
"--add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED"
,
test
.
getJavaLauncher
().
set
(
service
.
launcherFor
(
action
));
"--illegal-access=warn"
);
// See https://github.com/spring-projects/spring-ldap/issues/570
test
.
jvmArgs
(
arguments
);
List
<
String
>
arguments
=
Arrays
.
asList
(
"--add-exports=java.naming/com.sun.jndi.ldap=ALL-UNNAMED"
,
"--illegal-access=warn"
);
test
.
jvmArgs
(
arguments
);
});
});
});
}
}
private
JavaToolchainService
getJavaToolchainService
(
Project
project
)
{
return
project
.
getExtensions
().
getByType
(
JavaToolchainService
.
class
);
}
private
Optional
<
Action
<
JavaToolchainSpec
>>
withOptionalJavaToolchain
(
ToolchainExtension
toolchain
)
{
return
toolchain
.
getToolchainVersion
().
map
((
toolchainVersion
)
->
{
Action
<
JavaToolchainSpec
>
action
=
(
javaToolchainSpec
)
->
javaToolchainSpec
.
getLanguageVersion
()
.
convention
(
toolchainVersion
);
return
Optional
.
of
(
action
);
}).
orElse
(
Optional
.
empty
());
}
}
}
spring-boot-project/spring-boot-cli/build.gradle
View file @
1ce6e796
...
@@ -8,7 +8,7 @@ plugins {
...
@@ -8,7 +8,7 @@ plugins {
description
=
"Spring Boot CLI"
description
=
"Spring Boot CLI"
toolchain
{
toolchain
{
maximumCompatibleJavaVersion
=
15
maximumCompatibleJavaVersion
=
JavaLanguageVersion
.
of
(
15
)
}
}
configurations
{
configurations
{
...
...
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle
View file @
1ce6e796
...
@@ -11,7 +11,7 @@ plugins {
...
@@ -11,7 +11,7 @@ plugins {
description
=
"Spring Boot Gradle Plugin"
description
=
"Spring Boot Gradle Plugin"
toolchain
{
toolchain
{
maximumCompatibleJavaVersion
=
15
maximumCompatibleJavaVersion
=
JavaLanguageVersion
.
of
(
15
)
}
}
configurations
{
configurations
{
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment