Skip to content

Commit 797dc80

Browse files
committed
chore: jdk25 support
1 parent 95bfb8c commit 797dc80

18 files changed

Lines changed: 190 additions & 120 deletions

File tree

.github/workflows/gradle.yml

Lines changed: 36 additions & 30 deletions
Original file line numberDiff line numberDiff line change
@@ -31,33 +31,35 @@ jobs:
3131
strategy:
3232
fail-fast: false
3333
matrix:
34-
jdk-version: [ 21 ]
34+
jdk-version: [ 25 ]
3535
os:
36-
- ubuntu-latest
37-
- windows-latest
38-
- macos-13 # Intel OSX
36+
- ubuntu-24.04
37+
- windows-2025
38+
- macos-15-intel # Intel OSX
3939
- macos-14 # ARM64 OSX
4040

4141
steps:
4242

43-
- uses: actions/checkout@v4
43+
- uses: actions/checkout@v5
44+
with:
45+
persist-credentials: "false"
4446

4547
- name: Set Up JDK ${{ matrix.jdk-version }}
46-
uses: actions/setup-java@v4
48+
uses: actions/setup-java@v5
4749
with:
4850
java-version: ${{ matrix.jdk-version }}
49-
distribution: 'temurin'
51+
distribution: 'zulu'
5052

5153
- name: Setup Gradle
52-
uses: gradle/actions/setup-gradle@v4
54+
uses: gradle/actions/setup-gradle@v5
5355
with:
5456
add-job-summary: 'on-failure'
5557

5658
- name: Gradle Build Jar
57-
run: ./gradlew clean assemble -Penv=prod-jar
59+
run: ./gradlew clean assemble -Penv=release-jar
5860

5961
- name: Upload Jar
60-
uses: actions/upload-artifact@v4
62+
uses: actions/upload-artifact@v5
6163
continue-on-error: true
6264
with:
6365
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jar
@@ -96,33 +98,35 @@ jobs:
9698
strategy:
9799
fail-fast: false
98100
matrix:
99-
jdk-version: [ 21 ]
101+
jdk-version: [ 25 ]
100102
os:
101-
- ubuntu-latest
102-
- windows-latest
103-
- macos-13 # Intel OSX
103+
- ubuntu-24.04
104+
- windows-2025
105+
- macos-15-intel # Intel OSX
104106
- macos-14 # ARM64 OSX
105107

106108
steps:
107109

108-
- uses: actions/checkout@v4
110+
- uses: actions/checkout@v5
111+
with:
112+
persist-credentials: "false"
109113

110114
- name: Set Up JDK ${{ matrix.jdk-version }}
111-
uses: actions/setup-java@v4
115+
uses: actions/setup-java@v5
112116
with:
113117
java-version: ${{ matrix.jdk-version }}
114-
distribution: 'temurin'
118+
distribution: 'zulu'
115119

116120
- name: Setup Gradle
117-
uses: gradle/actions/setup-gradle@v4
121+
uses: gradle/actions/setup-gradle@v5
118122
with:
119123
add-job-summary: 'on-failure'
120124

121125
- name: Gradle Build JLink Zip
122-
run: ./gradlew clean jlink -Penv=prod-jlink
126+
run: ./gradlew clean jlink -Penv=release-jlink
123127

124128
- name: Upload JLink Zip
125-
uses: actions/upload-artifact@v4
129+
uses: actions/upload-artifact@v5
126130
continue-on-error: true
127131
with:
128132
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jlink-zip
@@ -160,33 +164,35 @@ jobs:
160164
strategy:
161165
fail-fast: false
162166
matrix:
163-
jdk-version: [ 21 ]
167+
jdk-version: [ 25 ]
164168
os:
165-
- ubuntu-latest
166-
- windows-latest
167-
- macos-13 # Intel OSX
169+
- ubuntu-24.04
170+
- windows-2025
171+
- macos-15-intel # Intel OSX
168172
- macos-14 # ARM64 OSX
169173

170174
steps:
171175

172-
- uses: actions/checkout@v4
176+
- uses: actions/checkout@v5
177+
with:
178+
persist-credentials: "false"
173179

174180
- name: Set Up JDK ${{ matrix.jdk-version }}
175-
uses: actions/setup-java@v4
181+
uses: actions/setup-java@v5
176182
with:
177183
java-version: ${{ matrix.jdk-version }}
178-
distribution: 'temurin'
184+
distribution: 'zulu'
179185

180186
- name: Setup Gradle
181-
uses: gradle/actions/setup-gradle@v4
187+
uses: gradle/actions/setup-gradle@v5
182188
with:
183189
add-job-summary: 'on-failure'
184190

185191
- name: Gradle Build JPackage
186-
run: ./gradlew clean jpackage -Penv=prod-jlink
192+
run: ./gradlew clean jpackage -Penv=release-jlink
187193

188194
- name: Upload JPackage
189-
uses: actions/upload-artifact@v4
195+
uses: actions/upload-artifact@v5
190196
continue-on-error: true
191197
with:
192198
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jpackage

.github/workflows/maven.yml

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -31,22 +31,24 @@ jobs:
3131
strategy:
3232
fail-fast: false
3333
matrix:
34-
jdk-version: [ 21 ]
34+
jdk-version: [ 25 ]
3535
os:
36-
- ubuntu-latest
37-
- windows-latest
38-
- macos-13 # Intel OSX
36+
- ubuntu-24.04
37+
- windows-2025
38+
- macos-15-intel # Intel OSX
3939
- macos-14 # ARM64 OSX
4040

4141
steps:
4242

43-
- uses: actions/checkout@v4
43+
- uses: actions/checkout@v5
44+
with:
45+
persist-credentials: "false"
4446

4547
- name: Set Up JDK ${{ matrix.jdk-version }}
46-
uses: actions/setup-java@v4
48+
uses: actions/setup-java@v5
4749
with:
4850
java-version: ${{ matrix.jdk-version }}
49-
distribution: 'temurin'
51+
distribution: 'zulu'
5052

5153
- name: Cache Maven repository
5254
uses: actions/cache@v4
@@ -60,7 +62,7 @@ jobs:
6062
run: ./mvnw -V -B -e -ff -ntp clean package -Passembly
6163

6264
- name: Upload Jar
63-
uses: actions/upload-artifact@v4
65+
uses: actions/upload-artifact@v5
6466
continue-on-error: true
6567
with:
6668
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jar

.idea/runConfigurations/trinity__clean_assemble_.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/trinity__clean_jlink_.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.idea/runConfigurations/trinity__clean_jpackage_.xml

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

.mvn/wrapper/maven-wrapper.jar

65 Bytes
Binary file not shown.

.mvn/wrapper/maven-wrapper.properties

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@
1414
# KIND, either express or implied. See the License for the
1515
# specific language governing permissions and limitations
1616
# under the License.
17-
wrapperVersion=3.3.2
17+
wrapperVersion=3.3.4
1818
distributionType=bin
19-
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.9/apache-maven-3.8.9-bin.zip
20-
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar
19+
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
20+
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar

build.gradle

Lines changed: 47 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,11 @@ plugins {
22
id 'java'
33
id 'idea'
44
id 'application'
5-
id 'com.github.ben-manes.versions' version '0.52.0'
5+
id 'com.github.ben-manes.versions' version '0.53.0'
66
id 'net.nemerosa.versioning' version '3.1.0'
77
id 'org.openjfx.javafxplugin' version '0.1.0'
8-
id 'org.gradlex.extra-java-module-info' version '1.12'
9-
id 'org.beryx.jlink' version '3.1.1'
8+
id 'org.gradlex.extra-java-module-info' version '1.13.1'
9+
id 'org.beryx.jlink' version '3.1.4-rc'
1010
}
1111

1212
ext {
@@ -16,8 +16,8 @@ ext {
1616
moduleName = 'edu.jhuapl.trinity'
1717
mainClassPath = 'edu.jhuapl.trinity.App'
1818
mainClassJarLauncher = 'edu.jhuapl.trinity.TrinityMain'
19-
isProdJar = findProperty('env') == 'prod-jar'
20-
isProdJlink = findProperty('env') == 'prod-jlink'
19+
isReleaseJar = findProperty('env') == 'release-jar'
20+
isReleaseJlink = findProperty('env') == 'release-jlink'
2121
isDevelopment = findProperty('env') == 'dev'
2222
fxVersion = findProperty('javafx.version')
2323
fxStaticVersion = findProperty('javafx.static.version')
@@ -40,41 +40,41 @@ println "OS Detected: ${org.gradle.internal.os.OperatingSystem.current()}"
4040

4141
repositories {
4242
mavenCentral()
43-
maven { url 'https://jitpack.io' }
43+
maven { url = 'https://jitpack.io' }
4444
}
4545

4646

4747
dependencies {
4848
// Excluding openjfx from 3rd party modules.
49-
implementation(group: 'com.github.birdasaur.litfx', name: 'litfx-controls', version: '0.1.3') {
49+
implementation('com.github.birdasaur.litfx:litfx-controls:0.1.3') {
5050
exclude group: 'org.openjfx'
5151
}
52-
implementation(group: 'org.fxyz3d', name: 'fxyz3d', version: '0.6.0') {
52+
implementation('org.fxyz3d:fxyz3d:0.6.0') {
5353
exclude group: 'org.openjfx'
5454
}
55-
implementation(group: 'eu.hansolo.fx', name: 'charts', version: '21.0.25') {
55+
implementation('eu.hansolo.fx:charts:21.0.27') {
5656
exclude group: 'org.openjfx'
5757
exclude group: 'ch.qos.logback'
5858
}
59-
implementation group: 'com.github.quickhull3d', name: 'quickhull3d', version: '1.0.0'
60-
implementation group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1'
61-
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.18.0'
62-
implementation group: 'org.zeromq', name: 'jeromq', version: '0.6.0'
63-
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.19.1'
64-
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.19.1'
65-
implementation group: 'com.github.sarxos', name: 'webcam-capture', version: '0.3.12'
66-
implementation group: 'org.jflac', name: 'jflac-codec', version: '1.5.2'
67-
implementation group: 'com.tambapps.fft4j', name: 'fft4j', version: '2.0'
68-
implementation group: 'com.github.trinity-xai', name: 'SuperMDS', version: 'v2025.06.29'
69-
implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: '3.0.5'
59+
implementation 'com.github.quickhull3d:quickhull3d:1.0.0'
60+
implementation 'org.apache.commons:commons-math3:3.6.1'
61+
implementation 'org.apache.commons:commons-lang3:3.19.0'
62+
implementation 'org.zeromq:jeromq:0.6.0'
63+
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.19.2'
64+
implementation 'com.fasterxml.jackson.core:jackson-databind:2.19.2'
65+
implementation 'com.github.sarxos:webcam-capture:0.3.12'
66+
implementation 'org.jflac:jflac-codec:1.5.2'
67+
implementation 'com.tambapps.fft4j:fft4j:2.0'
68+
implementation 'com.github.trinity-xai:SuperMDS:v2025.06.29'
69+
implementation 'org.apache.pdfbox:pdfbox:3.0.6'
7070

7171
// Enforce slf4j-api version across dependencies
72-
implementation group: 'org.slf4j', name: 'slf4j-api', version: '2.0.17'
73-
implementation group: 'ch.qos.logback', name: 'logback-classic', version: '1.5.18'
72+
implementation 'org.slf4j:slf4j-api:2.0.17'
73+
implementation 'ch.qos.logback:logback-classic:1.5.20'
7474

75-
testImplementation 'org.junit.jupiter:junit-jupiter:5.13.2'
76-
testImplementation 'org.junit.platform:junit-platform-suite:1.13.2'
77-
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.13.2'
75+
testImplementation 'org.junit.jupiter:junit-jupiter:5.15.0'
76+
testImplementation 'org.junit.platform:junit-platform-suite:1.14.0'
77+
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.14.0'
7878
}
7979

8080
// Make sure every single dependency is modularized.
@@ -173,7 +173,7 @@ idea {
173173
}
174174

175175
tasks.named('wrapper', Wrapper) {
176-
gradleVersion = '8.14.2'
176+
gradleVersion = '9.1.0'
177177
distributionType = Wrapper.DistributionType.BIN
178178
}
179179

@@ -189,10 +189,10 @@ application {
189189
}
190190

191191
java {
192-
// sourceCompatibility = JavaVersion.VERSION_21 // Use this instead of toolchain.* if you want to manually setup your own JDK
193-
// targetCompatibility = JavaVersion.VERSION_21 // Use this instead of toolchain.* if you want to manually setup your own JDK
194-
toolchain.languageVersion = JavaLanguageVersion.of(21)
195-
toolchain.vendor = JvmVendorSpec.ADOPTIUM
192+
// sourceCompatibility = JavaVersion.VERSION_25 // Use this instead of toolchain.* if you want to manually setup your own JDK
193+
// targetCompatibility = JavaVersion.VERSION_25 // Use this instead of toolchain.* if you want to manually setup your own JDK
194+
toolchain.languageVersion = JavaLanguageVersion.of(25)
195+
// toolchain.vendor = JvmVendorSpec.ADOPTIUM
196196
modularity.inferModulePath.set(true)
197197
}
198198

@@ -206,7 +206,10 @@ compileJava {
206206
// List of Prism Settings
207207
// https://github.com/openjdk/jfx/blob/master/modules/javafx.graphics/src/main/java/com/sun/prism/impl/PrismSettings.java
208208
run {
209-
jvmArgs += ['-Dprism.maxvram=2G', '-Djavafx.animation.fullspeed=true']
209+
jvmArgs '-Dprism.maxvram=2G'
210+
jvmArgs '-Djavafx.animation.fullspeed=true'
211+
jvmArgs '--enable-native-access=javafx.graphics'
212+
jvmArgs '--enable-native-access=javafx.media'
210213
}
211214

212215
tasks.named('test', Test) {
@@ -253,7 +256,7 @@ processResources {
253256
// Configure Default Logging Path (only applies when logback is enabled)
254257
def logPath = "${artifactName}.log" // Note: if you update this make sure to verify/update fileNamePattern below as well
255258
// Log to Console.App on OSX
256-
if (isProdJlink && org.gradle.internal.os.OperatingSystem.current().macOsX) {
259+
if (isReleaseJlink && org.gradle.internal.os.OperatingSystem.current().macOsX) {
257260
logPath = '${user.home}/Library/Logs/' + logPath
258261
}
259262
def logbackProps = [
@@ -345,9 +348,9 @@ tasks.register('fxUberJar', Jar) {
345348
}
346349
}
347350

348-
artifacts {
349-
archives noFxUberJar
350-
archives fxUberJar
351+
assemble {
352+
dependsOn(noFxUberJar)
353+
dependsOn(fxUberJar)
351354
}
352355

353356
// </editor-fold>
@@ -363,11 +366,18 @@ jlink {
363366
options.set(['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages'])
364367
imageZip.set(imageZipFile)
365368
launcher {
369+
def currentOS = org.gradle.internal.os.OperatingSystem.current()
366370
name = artifactNameUpper
367371
mainClass = mainClassPath
372+
noConsole = true // uses javaw instead of java on windows
368373
jvmArgs = ['-Dprism.maxvram=2G', '-Djavafx.animation.fullspeed=true']
369374
jvmArgs += ["-Dlogback.configurationFile={{BIN_DIR}}${fileSep}logback.xml"]
370-
jvmArgs += ["-Dtrinity.app.dir={{BIN_DIR}}"]
375+
if (currentOS.windows) {
376+
jvmArgs += ["-Dtrinity.app.dir={{BIN_DIR}}${fileSep}"] // extra fileSep on jlink to ensure .bat file %~dp0 escaping works
377+
} else {
378+
jvmArgs += ["-Dtrinity.app.dir={{BIN_DIR}}"]
379+
}
380+
jvmArgs += ['--enable-native-access=javafx.graphics', '--enable-native-access=javafx.media']
371381
//jvmArgs += ["--add-exports external.module.name/external.package.name=$sModuleName", ...]
372382
}
373383
//forceMerge('javafx')
@@ -381,6 +391,7 @@ jlink {
381391
jvmArgs = ['-Dprism.maxvram=2G', '-Djavafx.animation.fullspeed=true']
382392
jvmArgs += ["-Dlogback.configurationFile=\$APPDIR${fileSep}logback.xml"]
383393
jvmArgs += ["-Dtrinity.app.dir=\$APPDIR"]
394+
jvmArgs += ['--enable-native-access=javafx.graphics', '--enable-native-access=javafx.media']
384395
jvmArgs += ['--module-path', '.']
385396
if (currentOS.windows) {
386397
skipInstaller = true

gradle.properties

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,4 +8,4 @@ org.gradle.java.installations.auto-detect=true
88

99
# Project Build Properties
1010
env=dev
11-
javafx.version=21.0.7
11+
javafx.version=25.0.1

gradle/wrapper/gradle-wrapper.jar

1.65 KB
Binary file not shown.

0 commit comments

Comments
 (0)