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
Show 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 @@
package
org
.
springframework
.
boot
.
build
.
toolchain
;
import
java.util.Optional
;
import
org.gradle.api.Project
;
import
org.gradle.api.provider.Property
;
import
org.gradle.jvm.toolchain.JavaLanguageVersion
;
/**
...
...
@@ -28,41 +27,22 @@ import org.gradle.jvm.toolchain.JavaLanguageVersion;
*/
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
)
{
this
.
project
=
project
;
}
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
);
this
.
maximumCompatibleJavaVersion
=
project
.
getObjects
().
property
(
JavaLanguageVersion
.
class
);
String
toolchainVersion
=
(
String
)
project
.
findProperty
(
"toolchainVersion"
);
this
.
javaVersion
=
(
toolchainVersion
!=
null
)
?
JavaLanguageVersion
.
of
(
toolchainVersion
)
:
null
;
}
public
boolean
isJavaVersionSupported
()
{
Optional
<
JavaLanguageVersion
>
maximumVersion
=
getJavaLanguageVersion
(
this
.
maximumCompatibleJavaVersion
);
if
(!
maximumVersion
.
isPresent
())
{
return
true
;
}
Optional
<
JavaLanguageVersion
>
toolchainVersion
=
getToolchainVersion
();
return
toolchainVersion
.
isPresent
()
&&
maximumVersion
.
get
().
canCompileOrRun
(
toolchainVersion
.
get
());
public
Property
<
JavaLanguageVersion
>
getMaximumCompatibleJavaVersion
()
{
return
this
.
maximumCompatibleJavaVersion
;
}
private
Optional
<
JavaLanguageVersion
>
getJavaLanguageVersion
(
int
version
)
{
if
(
version
>=
8
)
{
return
Optional
.
of
(
JavaLanguageVersion
.
of
(
version
));
}
return
Optional
.
empty
();
JavaLanguageVersion
getJavaVersion
()
{
return
this
.
javaVersion
;
}
}
buildSrc/src/main/java/org/springframework/boot/build/toolchain/ToolchainPlugin.java
View file @
1ce6e796
...
...
@@ -18,16 +18,14 @@ package org.springframework.boot.build.toolchain;
import
java.util.Arrays
;
import
java.util.List
;
import
java.util.Optional
;
import
org.gradle.api.Action
;
import
org.gradle.api.Plugin
;
import
org.gradle.api.Project
;
import
org.gradle.api.plugins.JavaPluginExtension
;
import
org.gradle.api.tasks.compile.JavaCompile
;
import
org.gradle.api.tasks.javadoc.Javadoc
;
import
org.gradle.api.tasks.testing.Test
;
import
org.gradle.jvm.toolchain.JavaLanguageVersion
;
import
org.gradle.jvm.toolchain.JavaToolchainService
;
import
org.gradle.jvm.toolchain.JavaToolchainSpec
;
/**
...
...
@@ -44,19 +42,28 @@ public class ToolchainPlugin implements Plugin<Project> {
private
void
configureToolchain
(
Project
project
)
{
ToolchainExtension
toolchain
=
project
.
getExtensions
().
create
(
"toolchain"
,
ToolchainExtension
.
class
,
project
);
project
.
afterEvaluate
((
evaluated
)
->
{
Optional
<
JavaLanguageVersion
>
toolchainVersion
=
toolchain
.
getToolchainVersion
();
if
(
toolchainVersion
.
isPresent
())
{
if
(!
toolchain
.
isJavaVersionSupported
())
{
JavaLanguageVersion
toolchainVersion
=
toolchain
.
getJavaVersion
();
if
(
toolchainVersion
!=
null
)
{
project
.
afterEvaluate
((
evaluated
)
->
configure
(
evaluated
,
toolchain
));
}
}
private
void
configure
(
Project
project
,
ToolchainExtension
toolchain
)
{
if
(!
isJavaVersionSupported
(
toolchain
,
toolchain
.
getJavaVersion
()))
{
disableToolchainTasks
(
project
);
}
else
{
JavaToolchainSpec
toolchainSpec
=
project
.
getExtensions
().
getByType
(
JavaPluginExtension
.
class
)
.
getToolchain
();
toolchainSpec
.
getLanguageVersion
().
set
(
toolchain
.
getJavaVersion
());
configureJavaCompileToolchain
(
project
,
toolchain
);
configureJavadocToolchain
(
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
)
{
...
...
@@ -67,50 +74,20 @@ public class ToolchainPlugin implements Plugin<Project> {
private
void
configureJavaCompileToolchain
(
Project
project
,
ToolchainExtension
toolchain
)
{
project
.
getTasks
().
withType
(
JavaCompile
.
class
,
(
compile
)
->
{
withOptionalJavaToolchain
(
toolchain
).
ifPresent
((
action
)
->
{
JavaToolchainService
service
=
getJavaToolchainService
(
project
);
compile
.
getJavaCompiler
().
set
(
service
.
compilerFor
(
action
));
compile
.
getOptions
().
setFork
(
true
);
// See https://github.com/gradle/gradle/issues/15538
List
<
String
>
forkArgs
=
Arrays
.
asList
(
"--add-opens"
,
"jdk.compiler/com.sun.tools.javac.code=ALL-UNNAMED"
);
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
)
{
project
.
getTasks
().
withType
(
Test
.
class
,
(
test
)
->
{
withOptionalJavaToolchain
(
toolchain
).
ifPresent
((
action
)
->
{
JavaToolchainService
service
=
getJavaToolchainService
(
project
);
test
.
getJavaLauncher
().
set
(
service
.
launcherFor
(
action
));
// See https://github.com/spring-projects/spring-ldap/issues/570
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 {
description
=
"Spring Boot CLI"
toolchain
{
maximumCompatibleJavaVersion
=
15
maximumCompatibleJavaVersion
=
JavaLanguageVersion
.
of
(
15
)
}
configurations
{
...
...
spring-boot-project/spring-boot-tools/spring-boot-gradle-plugin/build.gradle
View file @
1ce6e796
...
...
@@ -11,7 +11,7 @@ plugins {
description
=
"Spring Boot Gradle Plugin"
toolchain
{
maximumCompatibleJavaVersion
=
15
maximumCompatibleJavaVersion
=
JavaLanguageVersion
.
of
(
15
)
}
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