Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
46 commits
Select commit Hold shift + click to select a range
df89e63
Move subproject configuration into convention plugins
jjohannes Jun 7, 2025
38ccffc
Structure convention plugins
jjohannes Jun 7, 2025
a3c598e
Extract dependency-rules convention plugin
jjohannes Jun 7, 2025
837a02c
Rename: org.jabref.gradle.module
jjohannes Jun 7, 2025
fd6ec7c
Centralise version in platform
jjohannes Jun 7, 2025
4bbff58
Remove excludes that have no effect
jjohannes Jun 8, 2025
1e933c1
Remove excludes that have no effect (2)
jjohannes Jun 8, 2025
790f1fe
Remove excludes that have no effect (3)
jjohannes Jun 8, 2025
5c7f6c7
excludes -> metadata rules
jjohannes Jun 8, 2025
ae14fa1
Remove duplicated 'platform' dependencies
jjohannes Jun 8, 2025
6de5cf4
Register 'jablib/lib' as maven repository
jjohannes Jun 8, 2025
68fcf78
Add dependency analysis plugin
jjohannes Jun 13, 2025
41ba6c9
Merge branch 'main' into gradle-build-updates
jjohannes Jun 13, 2025
1ff4ff6
Move versions of 'versions/build.gradle.kt'
jjohannes Jun 13, 2025
d142c9b
Update file names in GH Actions
jjohannes Jun 13, 2025
3a18312
Restore setting the 'release' flag to 24
jjohannes Jun 13, 2025
ab73c3a
Add missing patch dependency
jjohannes Jun 13, 2025
a74b53e
Add repositories to root (for OpenRewrite)
jjohannes Jun 13, 2025
dbfce2a
Add missing dependencies
jjohannes Jun 13, 2025
e048cb3
Merge remote-tracking branch 'origin/main' into gradle-build-updates
koppor Jun 15, 2025
60ef9f3
Port arm64 changes
koppor Jun 15, 2025
13083df
Merge branch 'main' into gradle-build-updates
koppor Jun 15, 2025
92aede8
Try to really use JavaFX EA
koppor Jun 7, 2025
7400111
Use AMAZON JDK
koppor Jun 16, 2025
f0f25d9
Try to fix JDK version update
koppor Jun 16, 2025
d9d5f96
Update path for javafx version update
koppor Jun 16, 2025
214556d
Fix typo
koppor Jun 16, 2025
718b226
Try to fix sed expression
koppor Jun 16, 2025
63a2483
Some debug
koppor Jun 16, 2025
176a847
Merge branch 'main' into gradle-build-updates
koppor Jun 16, 2025
71e4d84
Use amazon instead of liberica
koppor Jun 16, 2025
4328dc3
Disable JDK25 b/c unsupported
koppor Jun 16, 2025
4f284fb
Fix distribution name
koppor Jun 16, 2025
2a06bc0
Remove "downloadSources"
koppor Jun 16, 2025
4c528bb
Fix space
koppor Jun 16, 2025
b94c305
Add JBang install to tests
koppor Jun 16, 2025
8002bf3
Increase log level for gradle
koppor Jun 16, 2025
248f94d
Add some debug
koppor Jun 16, 2025
736f997
Verbose JBang check
koppor Jun 16, 2025
1425b3c
Fix vendor of JDK
koppor Jun 16, 2025
f49e81b
Refine debug
koppor Jun 16, 2025
1c43aec
Force refresh of SNAPSHOT plugin
koppor Jun 16, 2025
9ee9772
Remove debug output
koppor Jun 16, 2025
abeba80
Remove TODO
koppor Jun 16, 2025
ce5f593
Use long form for JVM switches
koppor Jun 16, 2025
a578fc5
Use fix-7-SNAPSHOT again
koppor Jun 16, 2025
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
9 changes: 2 additions & 7 deletions .github/dependabot.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,8 @@ version: 2
updates:
- package-ecosystem: gradle
directories:
- "/build-logic" # Build-related logic for gradle
- "/jabgui" # JabRef's GUI
- "/jabkit" # JabRef's CLI ("JabKit")
- "/jablib" # Core library
- "/jabsrv" # Server-related module
- "/jabsrv-cli" # CLI for the server
- "/test-support" # Module for test utilities
- "/build-logic" # versions of 3rd party gradle plugins
- "/versions" # versions of 3rd party dependencies of all JabRef modules
schedule:
interval: weekly
labels:
Expand Down
122 changes: 32 additions & 90 deletions .github/workflows/binaries-ea.yml
Original file line number Diff line number Diff line change
Expand Up @@ -119,9 +119,8 @@ jobs:
needs: [conditions]
if: ${{ needs.conditions.outputs.should-build == 'true' }}
env:
javafx: '25'
jdk_version: '25'
jdk: 'openjdk-25.0.0-ea+21'
jdk_version: '24'
jdk_distribution: 'openjdk-25.0.0-ea+27'
strategy:
fail-fast: false
matrix:
Expand Down Expand Up @@ -181,37 +180,47 @@ jobs:
- name: Tell gradle to use JDK ${{ env.jdk_version }} (linux, Windows)
if: ${{ !startsWith(matrix.os, 'macos') }}
run: |
sed -i "s/JavaLanguageVersion.of(24)/JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
sed -i "s#vendor = JvmVendorSpec.AMAZON##" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
cat build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
# Update JavaLanguageVersion
sed -i "s/JavaLanguageVersion.of..../JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts

# Update options.release
sed -i "s/options\.release = ../options.release = ${{ env.jdk_version }}/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts

# Use default vendor
# sed -i "s#vendor = JvmVendorSpec\..*##" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts

cat build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
- name: Tell gradle to use JDK ${{ env.jdk_version }} (macOS)
if: ${{ startsWith(matrix.os, 'macos') }}
run: |
sed -i '.bak' "s/JavaLanguageVersion.of(24)/JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
sed -i '.bak' "s#vendor = JvmVendorSpec.AMAZON##" build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
cat build-logic/src/main/kotlin/buildlogic.java-common-conventions.gradle.kts
sed -i '.bak' "s/JavaLanguageVersion.of..../JavaLanguageVersion.of(${{ env.jdk_version }})/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
sed -i '.bak' "s/options\.release = ../options.release = ${{ env.jdk_version }}/" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
# sed -i '.bak' "s#vendor = JvmVendorSpec\..*##" build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts
cat build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts

# region setup-JDK
- name: Setup JDK ${{ env.jdk_version }} (${{ env.jdk }}) for "java toolchain" of Gradle
if: false
uses: jdx/mise-action@v2
with:
mise_toml: |
[tools]
java = { version = "${{ env.jdk }}", release_type = "ea" }
java = { version = "${{ env.jdk_distribution }}", release_type = "ea" }
- name: Debug
if: false
shell: bash
run: |
set -x
set -e
echo $JAVA_HOME
java --version
- name: Make JDK known to gradle (Linux, macOS)
if: (matrix.os != 'windows-latest')
if: false && (matrix.os != 'windows-latest')
shell: bash
# Hint by https://github.com/gradle/gradle/issues/29355#issuecomment-2598556970
run: ln -s ~/.local/share/mise ~/.asdf
- name: Make JDK known to gradle (Windows)
if: (matrix.os == 'windows-latest')
if: false && (matrix.os == 'windows-latest')
shell: bash
run: mv ~/AppData/Local/mise ~/.asdf
- name: Setup JDK for gradle itself
Expand All @@ -222,94 +231,27 @@ jobs:
# endregion

# region JavaFX
- name: Download and extract JavaFX ${{ env.javafx }}
if: (matrix.os != 'ubuntu-22.04-arm')
- name: 'Determine latest JavaFX version'
id: javafx
shell: bash
run: |
set -e
set -x
mkdir javafx
cd javafx
curl --no-progress-meter https://jdk.java.net/javafx${{ env.javafx }}/ > javafx.html

case "${{ matrix.os }}" in
"ubuntu-22.04")
OS="linux-x64"
EXTRACT="tar xzf *.tar.gz"
EXT="tar.gz"
;;
"windows-latest")
OS="windows-x64"
EXTRACT="unzip -qq *.zip"
EXT="zip"
;;
"macos-13")
OS="macos-x64"
EXTRACT="tar xzf *.tar.gz"
EXT="tar.gz"
;;
"macos-14")
OS="macos-aarch64"
EXTRACT="tar xzf *.tar.gz"
EXT="tar.gz"
;;
*)
echo "Unsupported OS"
exit 1
;;
esac
echo "OS set to $OS"

URL_SDK=$(grep -o "https://download.java.net/java/.*/javafx.*${OS}_bin-sdk.${EXT}" javafx.html | head -n 1)
echo "Downloading $URL_SDK..."
curl -OJ --no-progress-meter $URL_SDK
$EXTRACT
rm *.$EXT

URL_JMODS=$(grep -o "https://download.java.net/java/.*/javafx.*${OS}_bin-jmods.${EXT}" javafx.html | head -n 1)
echo "Downloading $URL_JMODS..."
curl -OJ --no-progress-meter $URL_JMODS
$EXTRACT
rm *.$EXT

ls -la
- name: 'Set JavaFX ${{ env.javafx }} (linux, Windows)'
curl -s "https://search.maven.org/solrsearch/select?q=g:org.openjfx+AND+a:javafx&rows=10&core=gav" > /tmp/versions.json
jq '[.response.docs[] | select(.v | test(".*-ea\\+.*")) | select(.v | test("^17|^18|^19|^20|^21|^22|^23") | not) | {version: .v}] | group_by(.version | capture("^(?<major>\\d+).*").major) | map(max_by(.version))' < /tmp/versions.json > /tmp/versions-latest.json
JAVAFX=$(jq -r '.[-1].version' /tmp/versions-latest.json)
echo "Using JavaFX ${JAVAFX}"
echo "version=${JAVAFX}" >> $GITHUB_OUTPUT
- name: 'Set JavaFX ${{ steps.javafx.output.version }} (linux, Windows)'
if: ${{ !startsWith(matrix.os, 'macos') }}
shell: bash
run: |
set -e
shopt -s globstar
for buildgradle in **/build.gradle.kts; do
sed -i '/javafx {/{n;s#version = ".*"#sdk = "../javafx/javafx-sdk-${{ env.javafx }}"#}' $buildgradle
sed -i "s#jlink {#jlink { addExtraModulePath(\"../javafx/javafx-jmods-${{ env.javafx }}\")#" $buildgradle
echo "=========="
echo $buidgradle
echo "=========="
cat $buildgradle
done
- name: 'Set JavaFX ${{ env.javafx }} (macOS)'
sed -i 's/val javafx = ".*/val javafx = "${{ steps.javafx.outputs.version }}"/' versions/build.gradle.kts
- name: 'Set JavaFX ${{ steps.javafx.output.version }} (macOS)'
if: startsWith(matrix.os, 'macos')
run: |
set -e
find . -name 'build.gradle.kts' | while read -r buildgradle; do
sed -i '.bak' -e '/javafx {/{n' -e 's#version = ".*"#sdk = "../javafx/javafx-sdk-${{ env.javafx }}"#;}' $buildgradle
sed -i '.bak' -e "s#jlink {#jlink { addExtraModulePath(\"../javafx/javafx-jmods-${{ env.javafx }}\")#" $buildgradle
cat $buildgradle
done
- name: 'Set JavaFX ${{ env.javafx }} (linux-arm)'
if: (matrix.os == 'ubuntu-22.04-arm')
# No JavaFX EA build for ARM at https://jdk.java.net/javafx25/, therefore using Maven Central artifact
run: |
set -e
curl -s "https://search.maven.org/solrsearch/select?q=g:org.openjfx+AND+a:javafx&rows=10&core=gav" > /tmp/versions.json
jq '[.response.docs[] | select(.v | test(".*-ea\\+.*")) | select(.v | test("^17|^18|^19|^20|^21|^22") | not) | {version: .v}] | group_by(.version | capture("^(?<major>\\d+).*").major) | map(max_by(.version))' < /tmp/versions.json > /tmp/versions-latest.json
JAVAFX=$(jq -r '.[-1].version' /tmp/versions-latest.json)
echo "Using JavaFX ${JAVAFX}"
shopt -s globstar
for buildgradle in **/build.gradle.kts; do
sed -i "/javafx {/{n;s#version = \".*\"#version = \"${JAVAFX}\"#}" $buildgradle
cat $buildgradle
done
sed -i '.bak' 's/val javafx = ".*/val javafx = "${{ steps.javafx.outputs.version }}"/' versions/build.gradle.kts
# endregion

- name: Setup Gradle
Expand Down
2 changes: 1 addition & 1 deletion .github/workflows/binaries.yml
Original file line number Diff line number Diff line change
Expand Up @@ -192,7 +192,7 @@ jobs:
uses: actions/setup-java@v4
with:
java-version: '24'
distribution: 'liberica'
distribution: 'corretto'
java-package: 'jdk'
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
Expand Down
15 changes: 15 additions & 0 deletions .github/workflows/tests.yml
Original file line number Diff line number Diff line change
Expand Up @@ -209,6 +209,21 @@ jobs:
with:
java-version: 24.0.1
distribution: 'zulu'
- name: Generate JBang cache key
id: cache-key
shell: bash
run: |
echo "cache_key=jbang-$(date +%F)" >> $GITHUB_OUTPUT
- name: Use cache
uses: actions/cache@v4
with:
lookup-only: true
path: ~/.jbang
key: ${{ steps.cache-key.outputs.cache_key }}
restore-keys:
jbang-
- name: Setup JBang
uses: jbangdev/setup-jbang@main
- name: Setup Gradle
uses: gradle/actions/setup-gradle@v4
- name: Run ${{ matrix.module }} tests
Expand Down
2 changes: 1 addition & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -562,7 +562,7 @@ gradle-app.setting
## !! KEEP THESE LINES !!

# we really version .jar files - needs to be go after the www.gitignore.io-generated ones, because they ignore *.jar files
!/lib/*.jar
!/jablib/lib/**/*.jar

# do not distribute Oracle's JDBC driver
lib/ojdbc.jar
Expand Down
21 changes: 4 additions & 17 deletions build-logic/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -9,24 +9,11 @@ repositories {
}

dependencies {
implementation("com.adarshr:gradle-test-logger-plugin:4.0.0")
implementation("com.autonomousapps:dependency-analysis-gradle-plugin:2.18.0")
implementation("com.github.andygoossens:gradle-modernizer-plugin:1.11.0")
implementation("org.gradlex:extra-java-module-info:1.12")
implementation("org.gradlex:java-module-packaging:1.0.1") // required for platform-specific packaging of JavaFX dependencies
implementation("org.gradlex:java-module-testing:1.7")
implementation("org.gradlex.jvm-dependency-conflict-resolution:org.gradlex.jvm-dependency-conflict-resolution.gradle.plugin:2.4")

configurations
.matching { it.name.contains("downloadSources") }
.configureEach {
attributes {
attribute(Usage.USAGE_ATTRIBUTE, objects.named(Usage::class.java, Usage.JAVA_RUNTIME))
attribute(
OperatingSystemFamily.OPERATING_SYSTEM_ATTRIBUTE,
objects.named(OperatingSystemFamily::class.java, DefaultNativePlatform.getCurrentOperatingSystem().name)
)
attribute(
MachineArchitecture.ARCHITECTURE_ATTRIBUTE,
objects.named(MachineArchitecture::class.java, DefaultNativePlatform.getCurrentArchitecture().name)
)
}
}
implementation("org.gradlex:jvm-dependency-conflict-resolution:2.4")
}
Loading