Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
66 changes: 36 additions & 30 deletions .github/workflows/gradle.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,33 +31,35 @@ jobs:
strategy:
fail-fast: false
matrix:
jdk-version: [ 21 ]
jdk-version: [ 25 ]
os:
- ubuntu-latest
- windows-latest
- macos-13 # Intel OSX
- ubuntu-24.04
- windows-2025
- macos-15-intel # Intel OSX
- macos-14 # ARM64 OSX

steps:

- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
persist-credentials: "false"

- name: Set Up JDK ${{ matrix.jdk-version }}
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.jdk-version }}
distribution: 'temurin'
distribution: 'zulu'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: 'on-failure'

- name: Gradle Build Jar
run: ./gradlew clean assemble -Penv=prod-jar
run: ./gradlew clean assemble -Penv=release-jar

- name: Upload Jar
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
continue-on-error: true
with:
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jar
Expand Down Expand Up @@ -96,33 +98,35 @@ jobs:
strategy:
fail-fast: false
matrix:
jdk-version: [ 21 ]
jdk-version: [ 25 ]
os:
- ubuntu-latest
- windows-latest
- macos-13 # Intel OSX
- ubuntu-24.04
- windows-2025
- macos-15-intel # Intel OSX
- macos-14 # ARM64 OSX

steps:

- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
persist-credentials: "false"

- name: Set Up JDK ${{ matrix.jdk-version }}
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.jdk-version }}
distribution: 'temurin'
distribution: 'zulu'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: 'on-failure'

- name: Gradle Build JLink Zip
run: ./gradlew clean jlink -Penv=prod-jlink
run: ./gradlew clean jlink -Penv=release-jlink

- name: Upload JLink Zip
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
continue-on-error: true
with:
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jlink-zip
Expand Down Expand Up @@ -160,33 +164,35 @@ jobs:
strategy:
fail-fast: false
matrix:
jdk-version: [ 21 ]
jdk-version: [ 25 ]
os:
- ubuntu-latest
- windows-latest
- macos-13 # Intel OSX
- ubuntu-24.04
- windows-2025
- macos-15-intel # Intel OSX
- macos-14 # ARM64 OSX

steps:

- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
persist-credentials: "false"

- name: Set Up JDK ${{ matrix.jdk-version }}
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.jdk-version }}
distribution: 'temurin'
distribution: 'zulu'

- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
uses: gradle/actions/setup-gradle@v5
with:
add-job-summary: 'on-failure'

- name: Gradle Build JPackage
run: ./gradlew clean jpackage -Penv=prod-jlink
run: ./gradlew clean jpackage -Penv=release-jlink

- name: Upload JPackage
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
continue-on-error: true
with:
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jpackage
Expand Down
18 changes: 10 additions & 8 deletions .github/workflows/maven.yml
Original file line number Diff line number Diff line change
Expand Up @@ -31,22 +31,24 @@ jobs:
strategy:
fail-fast: false
matrix:
jdk-version: [ 21 ]
jdk-version: [ 25 ]
os:
- ubuntu-latest
- windows-latest
- macos-13 # Intel OSX
- ubuntu-24.04
- windows-2025
- macos-15-intel # Intel OSX
- macos-14 # ARM64 OSX

steps:

- uses: actions/checkout@v4
- uses: actions/checkout@v5
with:
persist-credentials: "false"

- name: Set Up JDK ${{ matrix.jdk-version }}
uses: actions/setup-java@v4
uses: actions/setup-java@v5
with:
java-version: ${{ matrix.jdk-version }}
distribution: 'temurin'
distribution: 'zulu'

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

- name: Upload Jar
uses: actions/upload-artifact@v4
uses: actions/upload-artifact@v5
continue-on-error: true
with:
name: java-${{ matrix.jdk-version }}-${{ runner.os }}-${{ runner.arch }}-jar
Expand Down
2 changes: 1 addition & 1 deletion .idea/runConfigurations/trinity__clean_assemble_.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/runConfigurations/trinity__clean_jlink_.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion .idea/runConfigurations/trinity__clean_jpackage_.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

Binary file modified .mvn/wrapper/maven-wrapper.jar
Binary file not shown.
6 changes: 3 additions & 3 deletions .mvn/wrapper/maven-wrapper.properties
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@
# KIND, either express or implied. See the License for the
# specific language governing permissions and limitations
# under the License.
wrapperVersion=3.3.2
wrapperVersion=3.3.4
distributionType=bin
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.8.9/apache-maven-3.8.9-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.2/maven-wrapper-3.3.2.jar
distributionUrl=https://repo.maven.apache.org/maven2/org/apache/maven/apache-maven/3.9.11/apache-maven-3.9.11-bin.zip
wrapperUrl=https://repo.maven.apache.org/maven2/org/apache/maven/wrapper/maven-wrapper/3.3.4/maven-wrapper-3.3.4.jar
83 changes: 47 additions & 36 deletions build.gradle
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,11 @@ plugins {
id 'java'
id 'idea'
id 'application'
id 'com.github.ben-manes.versions' version '0.52.0'
id 'com.github.ben-manes.versions' version '0.53.0'
id 'net.nemerosa.versioning' version '3.1.0'
id 'org.openjfx.javafxplugin' version '0.1.0'
id 'org.gradlex.extra-java-module-info' version '1.12'
id 'org.beryx.jlink' version '3.1.1'
id 'org.gradlex.extra-java-module-info' version '1.13.1'
id 'org.beryx.jlink' version '3.1.4-rc'
}

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

repositories {
mavenCentral()
maven { url 'https://jitpack.io' }
maven { url = 'https://jitpack.io' }
}


dependencies {
// Excluding openjfx from 3rd party modules.
implementation(group: 'com.github.birdasaur.litfx', name: 'litfx-controls', version: '0.1.3') {
implementation('com.github.birdasaur.litfx:litfx-controls:0.1.3') {
exclude group: 'org.openjfx'
}
implementation(group: 'org.fxyz3d', name: 'fxyz3d', version: '0.6.0') {
implementation('org.fxyz3d:fxyz3d:0.6.0') {
exclude group: 'org.openjfx'
}
implementation(group: 'eu.hansolo.fx', name: 'charts', version: '21.0.25') {
implementation('eu.hansolo.fx:charts:21.0.27') {
exclude group: 'org.openjfx'
exclude group: 'ch.qos.logback'
}
implementation group: 'com.github.quickhull3d', name: 'quickhull3d', version: '1.0.0'
implementation group: 'org.apache.commons', name: 'commons-math3', version: '3.6.1'
implementation group: 'org.apache.commons', name: 'commons-lang3', version: '3.18.0'
implementation group: 'org.zeromq', name: 'jeromq', version: '0.6.0'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-annotations', version: '2.19.1'
implementation group: 'com.fasterxml.jackson.core', name: 'jackson-databind', version: '2.19.1'
implementation group: 'com.github.sarxos', name: 'webcam-capture', version: '0.3.12'
implementation group: 'org.jflac', name: 'jflac-codec', version: '1.5.2'
implementation group: 'com.tambapps.fft4j', name: 'fft4j', version: '2.0'
implementation group: 'com.github.trinity-xai', name: 'SuperMDS', version: 'v2025.06.29'
implementation group: 'org.apache.pdfbox', name: 'pdfbox', version: '3.0.5'
implementation 'com.github.quickhull3d:quickhull3d:1.0.0'
implementation 'org.apache.commons:commons-math3:3.6.1'
implementation 'org.apache.commons:commons-lang3:3.19.0'
implementation 'org.zeromq:jeromq:0.6.0'
implementation 'com.fasterxml.jackson.core:jackson-annotations:2.19.2'
implementation 'com.fasterxml.jackson.core:jackson-databind:2.19.2'
implementation 'com.github.sarxos:webcam-capture:0.3.12'
implementation 'org.jflac:jflac-codec:1.5.2'
implementation 'com.tambapps.fft4j:fft4j:2.0'
implementation 'com.github.trinity-xai:SuperMDS:v2025.06.29'
implementation 'org.apache.pdfbox:pdfbox:3.0.6'

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

testImplementation 'org.junit.jupiter:junit-jupiter:5.13.2'
testImplementation 'org.junit.platform:junit-platform-suite:1.13.2'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.13.2'
testImplementation 'org.junit.jupiter:junit-jupiter:5.15.0'
testImplementation 'org.junit.platform:junit-platform-suite:1.14.0'
testRuntimeOnly 'org.junit.platform:junit-platform-launcher:1.14.0'
}

// Make sure every single dependency is modularized.
Expand Down Expand Up @@ -173,7 +173,7 @@ idea {
}

tasks.named('wrapper', Wrapper) {
gradleVersion = '8.14.2'
gradleVersion = '9.1.0'
distributionType = Wrapper.DistributionType.BIN
}

Expand All @@ -189,10 +189,10 @@ application {
}

java {
// sourceCompatibility = JavaVersion.VERSION_21 // Use this instead of toolchain.* if you want to manually setup your own JDK
// targetCompatibility = JavaVersion.VERSION_21 // Use this instead of toolchain.* if you want to manually setup your own JDK
toolchain.languageVersion = JavaLanguageVersion.of(21)
toolchain.vendor = JvmVendorSpec.ADOPTIUM
// sourceCompatibility = JavaVersion.VERSION_25 // Use this instead of toolchain.* if you want to manually setup your own JDK
// targetCompatibility = JavaVersion.VERSION_25 // Use this instead of toolchain.* if you want to manually setup your own JDK
toolchain.languageVersion = JavaLanguageVersion.of(25)
// toolchain.vendor = JvmVendorSpec.ADOPTIUM
modularity.inferModulePath.set(true)
}

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

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

artifacts {
archives noFxUberJar
archives fxUberJar
assemble {
dependsOn(noFxUberJar)
dependsOn(fxUberJar)
}

// </editor-fold>
Expand All @@ -363,11 +366,18 @@ jlink {
options.set(['--strip-debug', '--compress', '2', '--no-header-files', '--no-man-pages'])
imageZip.set(imageZipFile)
launcher {
def currentOS = org.gradle.internal.os.OperatingSystem.current()
name = artifactNameUpper
mainClass = mainClassPath
noConsole = true // uses javaw instead of java on windows
jvmArgs = ['-Dprism.maxvram=2G', '-Djavafx.animation.fullspeed=true']
jvmArgs += ["-Dlogback.configurationFile={{BIN_DIR}}${fileSep}logback.xml"]
jvmArgs += ["-Dtrinity.app.dir={{BIN_DIR}}"]
if (currentOS.windows) {
jvmArgs += ["-Dtrinity.app.dir={{BIN_DIR}}${fileSep}"] // extra fileSep on jlink to ensure .bat file %~dp0 escaping works
} else {
jvmArgs += ["-Dtrinity.app.dir={{BIN_DIR}}"]
}
jvmArgs += ['--enable-native-access=javafx.graphics', '--enable-native-access=javafx.media']
//jvmArgs += ["--add-exports external.module.name/external.package.name=$sModuleName", ...]
}
//forceMerge('javafx')
Expand All @@ -381,6 +391,7 @@ jlink {
jvmArgs = ['-Dprism.maxvram=2G', '-Djavafx.animation.fullspeed=true']
jvmArgs += ["-Dlogback.configurationFile=\$APPDIR${fileSep}logback.xml"]
jvmArgs += ["-Dtrinity.app.dir=\$APPDIR"]
jvmArgs += ['--enable-native-access=javafx.graphics', '--enable-native-access=javafx.media']
jvmArgs += ['--module-path', '.']
if (currentOS.windows) {
skipInstaller = true
Expand Down
2 changes: 1 addition & 1 deletion gradle.properties
Original file line number Diff line number Diff line change
Expand Up @@ -8,4 +8,4 @@ org.gradle.java.installations.auto-detect=true

# Project Build Properties
env=dev
javafx.version=21.0.7
javafx.version=25.0.1
Binary file modified gradle/wrapper/gradle-wrapper.jar
Binary file not shown.
Loading