Skip to content

Commit 627b450

Browse files
committed
[Java] Add Java 16-ea to the build matrix.
1 parent 7fa530b commit 627b450

File tree

3 files changed

+49
-8
lines changed

3 files changed

+49
-8
lines changed

.github/workflows/ci.yml

Lines changed: 10 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ jobs:
1919
strategy:
2020
fail-fast: false
2121
matrix:
22-
java: [ '8', '11', '15' ]
22+
java: [ '8', '11', '15', '16-ea' ]
2323
steps:
2424
- name: Checkout code
2525
uses: actions/checkout@v2
@@ -39,8 +39,17 @@ jobs:
3939
uses: actions/setup-java@v1
4040
with:
4141
java-version: ${{ matrix.java }}
42+
- name: Setup BUILD_JAVA_HOME
43+
if: runner.os == 'Linux'
44+
run: echo "BUILD_JAVA_HOME=${JAVA_HOME}" >> $GITHUB_ENV
45+
- name: Setup java 8 to run the Gradle script
46+
uses: actions/setup-java@v1
47+
with:
48+
java-version: 8
4249
- name: Build with Gradle
4350
run: ./gradlew
51+
env:
52+
BUILD_JAVA_VERSION: ${{ matrix.java }}
4453

4554
csharp-build:
4655
name: C# ${{ matrix.dotnet }}

build.gradle

Lines changed: 37 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,25 @@ plugins {
2828

2929
defaultTasks 'clean', 'build'
3030

31+
static def getBuildJavaVersion()
32+
{
33+
def buildJavaVersion = System.getenv('BUILD_JAVA_VERSION') ?: JavaVersion.current().getMajorVersion()
34+
if (buildJavaVersion.indexOf('.') > 0)
35+
{
36+
buildJavaVersion = buildJavaVersion.substring(0, buildJavaVersion.indexOf('.'))
37+
}
38+
if (buildJavaVersion.indexOf('-') > 0)
39+
{
40+
buildJavaVersion = buildJavaVersion.substring(0, buildJavaVersion.indexOf('-'))
41+
}
42+
Integer.parseInt(buildJavaVersion)
43+
}
44+
int buildJavaVersion = getBuildJavaVersion()
45+
46+
def javaLauncher = javaToolchains.launcherFor {
47+
languageVersion = JavaLanguageVersion.of(buildJavaVersion)
48+
}
49+
3150
def checkstyleVersion = '8.37'
3251
def hamcrestVersion = '2.2'
3352
def mockitoVersion = '3.6.0'
@@ -130,6 +149,10 @@ allprojects {
130149
failOnVersionConflict()
131150
}
132151
}
152+
153+
tasks.withType(JavaExec).configureEach {
154+
executable = javaLauncher.get().executablePath
155+
}
133156
}
134157

135158
jar.enabled = false
@@ -142,6 +165,12 @@ subprojects {
142165
group = sbeGroup
143166
version = sbeVersion
144167

168+
java {
169+
toolchain {
170+
languageVersion = JavaLanguageVersion.of(buildJavaVersion)
171+
}
172+
}
173+
145174
checkstyle.toolVersion = "${checkstyleVersion}"
146175

147176
tasks.withType(Sign) {
@@ -156,7 +185,7 @@ subprojects {
156185
}
157186

158187
tasks.withType(JavaCompile) {
159-
if (JavaVersion.current().isJava9Compatible()) {
188+
if (buildJavaVersion >= 9) {
160189
options.compilerArgs.addAll(['--add-exports', 'java.base/java.lang.reflect=ALL-UNNAMED'])
161190
options.compilerArgs.addAll(['--add-exports', 'jdk.unsupported/sun.misc=ALL-UNNAMED'])
162191
}
@@ -172,18 +201,20 @@ subprojects {
172201
options.docEncoding = 'UTF-8'
173202
options.charSet = 'UTF-8'
174203
options.links("https://www.javadoc.io/doc/org.agrona/agrona/${agronaVersion}/")
175-
if (JavaVersion.current().isJava11Compatible()) {
176-
options.links("https://docs.oracle.com/en/java/javase/${JavaVersion.current().majorVersion}/docs/api/")
204+
if (buildJavaVersion >= 16) { // Work around for early access versions for which no JavaDoc is published
205+
options.links("https://docs.oracle.com/en/java/javase/15/docs/api/")
206+
} else if (buildJavaVersion >= 11) {
207+
options.links("https://docs.oracle.com/en/java/javase/${buildJavaVersion}/docs/api/")
177208
} else {
178-
options.links("https://docs.oracle.com/javase/${JavaVersion.current().majorVersion}/docs/api/")
209+
options.links("https://docs.oracle.com/javase/${buildJavaVersion}/docs/api/")
179210
}
180-
if (JavaVersion.current().isJava10Compatible()) {
211+
if (buildJavaVersion >= 10) {
181212
options.addBooleanOption 'html5', true
182213
}
183214
}
184215

185216
test {
186-
if (JavaVersion.current().isJava9Compatible()) {
217+
if (buildJavaVersion >= 9) {
187218
jvmArgs('--add-opens', 'java.base/java.lang.reflect=ALL-UNNAMED')
188219
jvmArgs('--add-exports', 'jdk.unsupported/sun.misc=ALL-UNNAMED')
189220
}

gradle.properties

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
org.gradle.daemon=true
1+
org.gradle.java.installations.auto-download=false
2+
org.gradle.java.installations.fromEnv=BUILD_JAVA_HOME
23

34
# HTTP timeouts for Gradle
45
systemProp.org.gradle.internal.http.connectionTimeout=300000

0 commit comments

Comments
 (0)