diff --git a/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json index b5d66d8eea5..103788892f4 100644 --- a/.devcontainer/devcontainer.json +++ b/.devcontainer/devcontainer.json @@ -31,9 +31,9 @@ // Install java. // See https://github.com/devcontainers/features/tree/main/src/java#options for details. "ghcr.io/devcontainers/features/java:1": { - "version": "24.0.2-amzn", + "version": "latest", "installGradle": true, - "gradleVersion": "8.14.3", + "gradleVersion": "latest", "jdkDistro": "Corretto" } } diff --git a/.github/actions/setup-gradle/action.yml b/.github/actions/setup-gradle/action.yml index fed72603363..544e5b7f4eb 100644 --- a/.github/actions/setup-gradle/action.yml +++ b/.github/actions/setup-gradle/action.yml @@ -6,7 +6,7 @@ runs: - name: Setup JDK uses: actions/setup-java@v5 with: - java-version: '24' + java-version: '25' distribution: 'corretto' check-latest: true - name: Setup Gradle diff --git a/.github/workflows/binaries.yml b/.github/workflows/binaries.yml index 5fd107b1069..27790b2eca2 100644 --- a/.github/workflows/binaries.yml +++ b/.github/workflows/binaries.yml @@ -164,6 +164,20 @@ jobs: id: diskspace shell: bash run: | + PR_NUMBER="${{ github.event.pull_request.number }}" + TARGET="/var/www/builds.jabref.org/www/pull/$PR_NUMBER" + SSH_OPTS="-p 9922 -i sshkey -o StrictHostKeyChecking=no" + HOST="jrrsync@build-upload.jabref.org" + if ssh $SSH_OPTS "$HOST" "test -d '$TARGET'"; then + echo "☁️ Target exists: $TARGET - will upload" + echo "☁️ Target exists: $TARGET - will upload" >> $GITHUB_STEP_SUMMARY + echo "available=true" >> "$GITHUB_OUTPUT" + exit 0 + fi + + echo "🤔 Target does not exist: $TARGET" + echo "🤔 Target does not exist: $TARGET" >> $GITHUB_STEP_SUMMARY + USAGE=$(ssh -p 9922 -i sshkey -o StrictHostKeyChecking=no jrrsync@build-upload.jabref.org \ "df --output=pcent /var/www/builds.jabref.org | tail -n1 | tr -dc '0-9'") echo "Remote usage: ${USAGE}%" @@ -193,14 +207,14 @@ jobs: matrix: include: # if you change the os version rename all other occurrences - - os: ubuntu-22.04 - displayName: linux + - os: ubuntu-22.04 # if this is adapted, also the next lines need to be adapted + displayName: linux-amd64 archivePortable: tar -c -C jabgui/build/packages/ubuntu-22.04 JabRef | pigz --rsyncable > jabgui/build/packages/ubuntu-22.04/JabRef-portable_linux.tar.gz && rm -R jabgui/build/packages/ubuntu-22.04/JabRef archivePortableJabKit: tar -c -C jabkit/build/packages/ubuntu-22.04 jabkit | pigz --rsyncable > jabkit/build/packages/ubuntu-22.04/jabkit-portable_linux.tar.gz && rm -R jabkit/build/packages/ubuntu-22.04/jabkit archivePortableJabLS: tar -c -C jabls-cli/build/packages/ubuntu-22.04 jabls | pigz --rsyncable > jabls-cli/build/packages/ubuntu-22.04/jabls-portable_linux.tar.gz && rm -R jabls-cli/build/packages/ubuntu-22.04/jabls suffix: '' archForDebianRepack: '_amd64' - - os: ubuntu-22.04-arm + - os: ubuntu-22.04-arm # if this is adapted, also the next lines need to be adapted displayName: linux-arm archivePortable: tar -c -C jabgui/build/packages/ubuntu-22.04-arm JabRef | pigz --rsyncable > jabgui/build/packages/ubuntu-22.04-arm/JabRef-portable_linux_arm64.tar.gz && rm -R jabgui/build/packages/ubuntu-22.04-arm/JabRef archivePortableJabKit: tar -c -C jabkit/build/packages/ubuntu-22.04-arm jabkit | pigz --rsyncable > jabkit/build/packages/ubuntu-22.04-arm/jabkit-portable_linux_arm64.tar.gz && rm -R jabkit/build/packages/ubuntu-22.04-arm/jabkit @@ -208,25 +222,25 @@ jobs: suffix: '_arm64' archForDebianRepack: '_arm64' - os: windows-latest - displayName: windows + displayName: windows-amd64 archivePortable: 7z a -r jabgui/build/packages/windows-latest/JabRef-portable_windows.zip ./jabgui/build/packages/windows-latest/JabRef && rm -R jabgui/build/packages/windows-latest/JabRef archivePortableJabKit: 7z a -r jabkit/build/packages/windows-latest/jabkit-portable_windows.zip ./jabkit/build/packages/windows-latest/jabkit && rm -R jabkit/build/packages/windows-latest/jabkit archivePortableJabLS: 7z a -r jabls-cli/build/packages/windows-latest/jabls-portable_windows.zip ./jabls-cli/build/packages/windows-latest/jabls && rm -R jabls-cli/build/packages/windows-latest/jabls suffix: '' archForDebianRepack: '' - - os: macos-15-intel # intel image - displayName: macOS - archivePortable: 7z a -r jabgui/build/packages/macos-15-intel/JabRef-portable_macos.zip ./jabgui/build/packages/macos-15-intel/JabRef.app && rm -R jabgui/build/packages/macos-15-intel/JabRef.app - archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15-intel/jabkit-portable_macos.zip ./jabkit/build/packages/macos-15-intel/jabkit.app && rm -R jabkit/build/packages/macos-15-intel/jabkit.app - archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15-intel/jabls-portable_macos.zip ./jabls-cli/build/packages/macos-15-intel/jabls.app && rm -R jabls-cli/build/packages/macos-15-intel/jabls.app - suffix: '' + - os: macos-15-intel + displayName: macOS-intel + archivePortable: 7z a -r jabgui/build/packages/macos-15-intel/JabRef-portable_macos-intel.zip ./jabgui/build/packages/macos-15-intel/JabRef.app && rm -R jabgui/build/packages/macos-15-intel/JabRef.app + archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15-intel/jabkit-portable_macos-intel.zip ./jabkit/build/packages/macos-15-intel/jabkit.app && rm -R jabkit/build/packages/macos-15-intel/jabkit.app + archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15-intel/jabls-portable_macos-intel.zip ./jabls-cli/build/packages/macos-15-intel/jabls.app && rm -R jabls-cli/build/packages/macos-15-intel/jabls.app + suffix: '_intel' archForDebianRepack: '' - os: macos-15 - displayName: macOS-arm - archivePortable: 7z a -r jabgui/build/packages/macos-15/JabRef-portable_macos-arm.zip ./jabgui/build/packages/macos-15/JabRef.app && rm -R jabgui/build/packages/macos-15/JabRef.app - archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15/jabkit-portable_macos-arm.zip ./jabkit/build/packages/macos-15/jabkit.app && rm -R jabkit/build/packages/macos-15/jabkit.app - archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15/jabls-portable_macos-arm.zip ./jabls-cli/build/packages/macos-15/jabls.app && rm -R jabls-cli/build/packages/macos-15/jabls.app - suffix: '_arm64' + displayName: macOS-silicon + archivePortable: 7z a -r jabgui/build/packages/macos-15/JabRef-portable_macos-silicon.zip ./jabgui/build/packages/macos-15/JabRef.app && rm -R jabgui/build/packages/macos-15/JabRef.app + archivePortableJabKit: 7z a -r jabkit/build/packages/macos-15/jabkit-portable_macos-silicon.zip ./jabkit/build/packages/macos-15/jabkit.app && rm -R jabkit/build/packages/macos-15/jabkit.app + archivePortableJabLS: 7z a -r jabls-cli/build/packages/macos-15/jabls-portable_macos-silicon.zip ./jabls-cli/build/packages/macos-15/jabls.app && rm -R jabls-cli/build/packages/macos-15/jabls.app + suffix: '_silicon' archForDebianRepack: '' runs-on: ${{ matrix.os }} outputs: @@ -235,6 +249,12 @@ jobs: branchname: ${{ steps.gitversion.outputs.branchName }} name: ${{ matrix.displayName }} installer and portable version steps: + - name: Install pigz and cache (linux) + if: (startsWith(matrix.os, 'ubuntu')) + uses: awalsh128/cache-apt-pkgs-action@latest + with: + packages: pigz + version: 1.0 - name: Fetch all history for all tags and branches uses: actions/checkout@v6 with: @@ -249,19 +269,14 @@ jobs: id: gitversion uses: gittools/actions/gitversion/execute@v3.2.1 - uses: ./.github/actions/setup-gradle - - name: Install pigz and cache (linux) - if: (startsWith(matrix.os, 'ubuntu')) - uses: awalsh128/cache-apt-pkgs-action@latest - with: - packages: pigz - version: 1.0 + - name: Setup macOS key chain if: (startsWith(matrix.os, 'macos')) && (needs.conditions.outputs.secretspresent == 'true') uses: slidoapp/import-codesign-certs@1923310662e8682dd05b76b612b53301f431cd5d with: p12-file-base64: ${{ secrets.OSX_SIGNING_CERT }} p12-password: ${{ secrets.OSX_CERT_PWD }} - keychain-password: jabref + keychain-password: tEmPoRaRY-PaeSWD - name: Setup macOS key chain for app id cert if: (startsWith(matrix.os, 'macos')) && (needs.conditions.outputs.secretspresent == 'true') uses: slidoapp/import-codesign-certs@1923310662e8682dd05b76b612b53301f431cd5d @@ -269,7 +284,7 @@ jobs: p12-file-base64: ${{ secrets.OSX_SIGNING_CERT_APPLICATION }} p12-password: ${{ secrets.OSX_CERT_PWD }} create-keychain: false - keychain-password: jabref + keychain-password: tEmPoRaRY-PaeSWD - name: Build runtime image and installer shell: bash run: ./gradlew -i -PprojVersion="${{ steps.gitversion.outputs.AssemblySemVer }}" -PprojVersionInfo="${{ steps.gitversion.outputs.InformationalVersion }}" :jabgui:jpackage @@ -387,7 +402,7 @@ jobs: name: JabRef-${{ matrix.os }}-tbn path: | jabgui/build/packages/${{ matrix.os }} - jabkit/build/packages/${{ matrix.os }} + jabls-cli/build/packages/${{ matrix.os }} compression-level: 0 # no compression # endregion @@ -466,11 +481,25 @@ jobs: matrix: include: - os: macos-15 - displayName: macOS (ARM64) - suffix: _arm64 + displayName: JabGui macOS (ARM64) + path: 'jabgui' + prefix: 'JabRef' + suffix: '_silicon' + - os: macos-15-intel + displayName: JabGui macOS (intel) + path: 'jabgui' + prefix: 'JabRef' + suffix: '_intel' + - os: macos-15 + displayName: jabls macOS (ARM64) + path: 'jabls' + prefix: 'jabls' + suffix: '_silicon' - os: macos-15-intel - displayName: macOS (ARM64) - suffix: "" + displayName: jabls macOS (intel) + path: 'jabls' + prefix: 'jabls' + suffix: '_intel' runs-on: ${{ matrix.os }} steps: - name: Download from GitHub workflow artifacts store (macOS) @@ -480,21 +509,21 @@ jobs: - name: Notarize dmg shell: bash run: | - cd jabgui + cd ${{ matrix.path }} find . -type f xcrun notarytool store-credentials "notarytool-profile" --apple-id "vorstand@jabref.org" --team-id "6792V39SK3" --password "${{ secrets.OSX_NOTARIZATION_APP_PWD }}" - xcrun notarytool submit build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg --keychain-profile "notarytool-profile" --wait - xcrun stapler staple build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg + xcrun notarytool submit build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg --keychain-profile "notarytool-profile" --wait + xcrun stapler staple build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.dmg - name: Notarize pkg shell: bash run: | - cd jabgui + cd ${{ matrix.path }} xcrun notarytool store-credentials "notarytool-profile" --apple-id "vorstand@jabref.org" --team-id "6792V39SK3" --password "${{ secrets.OSX_NOTARIZATION_APP_PWD }}" - xcrun notarytool submit build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg --keychain-profile "notarytool-profile" --wait - xcrun stapler staple build/packages/${{ matrix.os }}/JabRef-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg + xcrun notarytool submit build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg --keychain-profile "notarytool-profile" --wait + xcrun stapler staple build/packages/${{ matrix.os }}/${{ matrix.prefix }}-${{ needs.build.outputs.major }}.${{ needs.build.outputs.minor }}${{ matrix.suffix}}.pkg - name: Upload to builds.jabref.org shell: bash run: | echo "${{ secrets.buildJabRefPrivateKey }}" > sshkey chmod 600 sshkey - rsync -rt --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r --itemize-changes --stats --rsync-path="mkdir -p /var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }} && rsync" -e 'ssh -p 9922 -i sshkey -o StrictHostKeyChecking=no' jabgui/build/packages/${{ matrix.os }}/ jrrsync@build-upload.jabref.org:/var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }}/ + rsync -rt --chmod=Du=rwx,Dg=rx,Do=rx,Fu=rw,Fg=r,Fo=r --itemize-changes --stats --rsync-path="mkdir -p /var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }} && rsync" -e 'ssh -p 9922 -i sshkey -o StrictHostKeyChecking=no' ${{ matrix.path }}/build/packages/${{ matrix.os }}/ jrrsync@build-upload.jabref.org:/var/www/builds.jabref.org/www/${{ needs.build.outputs.branchname }}/ diff --git a/.github/workflows/sbom-pr.yml b/.github/workflows/sbom-pr.yml index 69daae6de75..6165dddcc37 100644 --- a/.github/workflows/sbom-pr.yml +++ b/.github/workflows/sbom-pr.yml @@ -17,9 +17,7 @@ jobs: steps: - name: Checkout source uses: actions/checkout@v6 - with: - submodules: 'true' - show-progress: 'false' + - uses: ./.github/actions/setup-gradle - name: Generate aggregated CycloneDX SBOM diff --git a/.github/workflows/tests-code.yml b/.github/workflows/tests-code.yml index 89c1df29a6a..cdf166eade8 100644 --- a/.github/workflows/tests-code.yml +++ b/.github/workflows/tests-code.yml @@ -112,6 +112,8 @@ jobs: modernizer: name: Modernizer runs-on: ubuntu-latest + # Version 1.11.0 does not run on JDK25: "java.lang.reflect.InvocationTargetException" + if: false steps: - name: Checkout source uses: actions/checkout@v6 @@ -456,7 +458,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v5 with: - java-version: 24 + java-version: 25 distribution: 'corretto' cache: maven check-latest: true @@ -510,7 +512,6 @@ jobs: steps: - name: Check secrets presence id: checksecrets - if: github.ref == 'refs/heads/main' shell: bash run: | if [ "$CODECOV_TOKEN" == "" ]; then @@ -523,34 +524,11 @@ jobs: env: CODECOV_TOKEN: ${{ secrets.CODECOV_TOKEN }} - name: Checkout source - if: github.ref == 'refs/heads/main' uses: actions/checkout@v6 with: submodules: 'true' show-progress: 'false' - - name: Set up JDK - if: github.ref == 'refs/heads/main' - uses: actions/setup-java@v5 - with: - java-version: 24 - distribution: 'corretto' - check-latest: true - - name: Setup Gradle - uses: gradle/actions/setup-gradle@v5 - - name: Generate JBang cache key - id: cache-key - shell: bash - run: | - echo "cache_key=jbang-$(date +%Y-%m)" >> $GITHUB_OUTPUT - - name: Use cache - uses: actions/cache/restore@v5 - with: - path: ~/.jbang - key: ${{ steps.cache-key.outputs.cache_key }} - restore-keys: - jbang- - - name: Setup JBang - uses: jbangdev/setup-jbang@main + - uses: ./.github/actions/setup-gradle - name: Update test coverage metrics if: (github.ref == 'refs/heads/main') && (steps.checksecrets.outputs.secretspresent == 'YES') run: xvfb-run --auto-servernum ./gradlew jacocoTestReport @@ -578,7 +556,7 @@ jobs: - name: Set up JDK uses: actions/setup-java@v5 with: - java-version: 24 + java-version: 25 distribution: 'corretto' check-latest: true - name: Setup Gradle diff --git a/.jbang/CheckoutPR.java b/.jbang/CheckoutPR.java index edace6b9540..bb8695bb6ba 100755 --- a/.jbang/CheckoutPR.java +++ b/.jbang/CheckoutPR.java @@ -24,7 +24,7 @@ //DEPS org.eclipse.jgit:org.eclipse.jgit.pgm:7.5.0.202512021534-r public class CheckoutPR { - public static void main(String[] args) throws Exception { + static void main(String[] args) throws Exception { GitHub github = new GitHubBuilder().build(); GHRepository repo = github.getRepository("JabRef/jabref"); diff --git a/.jbang/CloneJabRef.java b/.jbang/CloneJabRef.java index 1d1117ff5b8..2df6afdcd7b 100755 --- a/.jbang/CloneJabRef.java +++ b/.jbang/CloneJabRef.java @@ -9,7 +9,7 @@ //DEPS org.eclipse.jgit:org.eclipse.jgit.pgm:7.5.0.202512021534-r public class CloneJabRef { - public static void main(String[] args) throws Exception { + static void main(String[] args) throws Exception { Path targetDir; if (args.length == 1) { targetDir = Path.of(args[0]).toAbsolutePath(); diff --git a/.jbang/JabKitLauncher.java b/.jbang/JabKitLauncher.java index 7f65e9645ea..5b39b27e332 100755 --- a/.jbang/JabKitLauncher.java +++ b/.jbang/JabKitLauncher.java @@ -2,7 +2,7 @@ //DESCRIPTION jabkit - mange BibTeX files using JabRef -//JAVA 24+ +//JAVA 25+ //RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED // raw is for https://github.com/unicode-org/icu/pull/2127 diff --git a/.jbang/JabLsLauncher.java b/.jbang/JabLsLauncher.java index c282ad21f5b..753373ed5ef 100755 --- a/.jbang/JabLsLauncher.java +++ b/.jbang/JabLsLauncher.java @@ -2,7 +2,7 @@ //DESCRIPTION jabls - start a bibtex languageserver -//JAVA 24+ +//JAVA 25+ //RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED // raw is for https://github.com/unicode-org/icu/pull/2127 diff --git a/.jbang/JabSrvLauncher.java b/.jbang/JabSrvLauncher.java index 1c365809f07..b8921388a96 100755 --- a/.jbang/JabSrvLauncher.java +++ b/.jbang/JabSrvLauncher.java @@ -2,7 +2,7 @@ //DESCRIPTION jabsrv - serve BibTeX files using JabRef -//JAVA 24+ +//JAVA 25+ //RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED // raw is for https://github.com/unicode-org/icu/pull/2127 diff --git a/.moderne/moderne.yml b/.moderne/moderne.yml index 970c3c0479c..7159802fb6f 100644 --- a/.moderne/moderne.yml +++ b/.moderne/moderne.yml @@ -1,3 +1,3 @@ specs: specs.moderne.ai/v1/cli java: - selectedJdk: '24' + selectedJdk: '25' diff --git a/.sdkmanrc b/.sdkmanrc index d5223a11a4a..26ac25ebe80 100644 --- a/.sdkmanrc +++ b/.sdkmanrc @@ -1,2 +1,2 @@ -java=24.0.2-tem +java=25-tem #visualvm=2.1.10 diff --git a/CHANGELOG.md b/CHANGELOG.md index 3f967da1d4c..361b1ab3741 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -22,6 +22,7 @@ Note that this project **does not** adhere to [Semantic Versioning](https://semv ### Changed - REST-API: Command resource: `command` instead of `commandId`. [#14855](https://github.com/JabRef/jabref/pull/14855) +- macOS distributions now take "intel" and "silicon" as suffixes. [#14057](https://github.com/JabRef/jabref/pull/14057) ### Fixed diff --git a/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts b/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts index 3565adf2c64..b4fee6bfb7b 100644 --- a/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts +++ b/build-logic/src/main/kotlin/org.jabref.gradle.feature.compile.gradle.kts @@ -9,16 +9,15 @@ java { // - jitpack.yml // - .sdkmanrc // - .devcontainer/devcontainer.json#L34 - there, also check if the gradleVersion matches the one of gradle/wrapper/gradle-wrapper.properties - // - .moderne/moderne.yml - // - .github/workflows/binaries*.yml - // - .github/workflows/publish.yml - // - .github/workflows/tests*.yml - // - .github/workflows/update-gradle-wrapper.yml + // - .github/actions/setup-gradle/action.yml + // - .github/workflows/test-code.yml // - .jbang/Jab*.java + // - .moderne/moderne.yml + // - build-support/src/main/java/*.java // - docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md // - jablib-examples/jbang/*.java // - jablib-examples/maven3/*/pom.xml - languageVersion = JavaLanguageVersion.of(24) + languageVersion = JavaLanguageVersion.of(25) // See https://docs.gradle.org/current/javadoc/org/gradle/jvm/toolchain/JvmVendorSpec.html for a full list // Temurin does not ship jmods, thus we need to use another JDK -- see https://github.com/actions/setup-java/issues/804 // We also need a JDK without JavaFX, because we patch JavaFX due to modularity issues @@ -27,7 +26,7 @@ java { } tasks.withType().configureEach { - options.release = 24 + options.release = 25 // See https://docs.gradle.org/current/userguide/performance.html#a_run_the_compiler_as_a_separate_process options.isFork = true } diff --git a/build-support/src/main/java/CitationStyleCatalogGenerator.java b/build-support/src/main/java/CitationStyleCatalogGenerator.java index ef3ed79c7da..6be9df72aa2 100644 --- a/build-support/src/main/java/CitationStyleCatalogGenerator.java +++ b/build-support/src/main/java/CitationStyleCatalogGenerator.java @@ -1,4 +1,4 @@ -//JAVA 24+ +//JAVA 25+ //RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED //DEPS org.jspecify:jspecify:1.0.0 @@ -45,7 +45,7 @@ public class CitationStyleCatalogGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(CitationStyleCatalogGenerator.class); - public static void main(String[] args) { + static void main(String[] args) { generateCitationStyleCatalog(); } diff --git a/build-support/src/main/java/JournalListMvGenerator.java b/build-support/src/main/java/JournalListMvGenerator.java index 424236afb0d..89d731c0294 100644 --- a/build-support/src/main/java/JournalListMvGenerator.java +++ b/build-support/src/main/java/JournalListMvGenerator.java @@ -1,4 +1,4 @@ -//JAVA 24+ +//JAVA 25+ //RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED //DEPS com.h2database:h2:2.4.240 @@ -48,7 +48,7 @@ public class JournalListMvGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(JournalListMvGenerator.class); - public static void main(String[] args) throws IOException { + static void main(String[] args) throws IOException { boolean verbose = (args.length == 1) && ("--verbose".equals(args[0])); Path abbreviationsDirectory = Path.of("jablib", "src", "main", "abbrv.jabref.org", "journals"); diff --git a/build-support/src/main/java/LtwaListMvGenerator.java b/build-support/src/main/java/LtwaListMvGenerator.java index 16e94871e50..ab2ac2ba166 100644 --- a/build-support/src/main/java/LtwaListMvGenerator.java +++ b/build-support/src/main/java/LtwaListMvGenerator.java @@ -1,4 +1,4 @@ -//JAVA 24+ +//JAVA 25+ //RUNTIME_OPTIONS --enable-native-access=ALL-UNNAMED //DEPS com.h2database:h2:2.4.240 @@ -46,7 +46,7 @@ public class LtwaListMvGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(LtwaListMvGenerator.class); - public static void main(String[] args) { + static void main(String[] args) { try { Path csvFile = Path.of("jablib", "src", "main", "resources", "ltwa", "ltwa_20210702.csv"); if (!Files.exists(csvFile)) { diff --git a/docs/code-howtos/eventbus.md b/docs/code-howtos/eventbus.md index b6a76fd9b0e..49c2dc3e1df 100644 --- a/docs/code-howtos/eventbus.md +++ b/docs/code-howtos/eventbus.md @@ -49,7 +49,7 @@ import com.google.common.eventbus.EventBus; public class Main { private static EventBus eventBus = new EventBus(); - public static void main(String[] args) { + static void main(String[] args) { Main main = new Main(); Listener listener = new Listener(); eventBus.register(listener); diff --git a/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md b/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md index c83acd5434d..ae115e2656f 100644 --- a/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md +++ b/docs/getting-into-the-code/guidelines-for-setting-up-a-local-workspace/intellij-12-build.md @@ -33,15 +33,15 @@ Go to "File > Project Structure" or press Ctrl+Shift+ ![Open Project Structure](12-02-open-project-settings.png) {% endfigure %} -Click on "Project" on the left side. Then, select **temurin-24** as the project SDK (continue reading if this option is not available). +Click on "Project" on the left side. Then, select **temurin-25** as the project SDK (continue reading if this option is not available). {% figure caption:"Project Structure - Project SDK" %} ![Project Structure - Project SDK](12-03-project-sdk.png) {% endfigure %} -If you do not have the access to this JDK, download it by clicking on "Download JDK..." In the dialog that opens, select version 24, vendor "Eclipse Temurin (AdoptOpenJDK HotSpot)", and click "Download". +If you do not have access to this JDK, download it by clicking on "Download JDK..." In the dialog that opens, select version 25, vendor "Eclipse Temurin (AdoptOpenJDK HotSpot)", and click "Download". -{% figure caption:"Dropdown to select Download JDK" %} +{% figure caption: "Dropdown to select Download JDK" %} ![Dropdown to select Download JDK](12-04-download-jdk.png) {% endfigure %} @@ -49,7 +49,7 @@ If you do not have the access to this JDK, download it by clicking on "Download ![Download JDK dialog](12-05-download-jdk-dialog.png) {% endfigure %} -Finally enable the JDK: +Finally, enable the JDK: 1. Click "OK" to close the dialog "Project Structure". 2. Wait for IntelliJ to index the new JDK. diff --git a/jabgui/build.gradle.kts b/jabgui/build.gradle.kts index 56a5ed6d3a6..10526b2a2da 100644 --- a/jabgui/build.gradle.kts +++ b/jabgui/build.gradle.kts @@ -190,7 +190,7 @@ javaModulePackaging { } targetsWithOs("macos") { options.addAll( - "--icon", "$projectDir/src/main/resources/icons/jabref.icns", + "--icon", "$projectDir/buildres/macos/JabRef.icns", "--mac-package-identifier", "JabRef", "--mac-package-name", "JabRef", "--file-associations", "$projectDir/buildres/macos/bibtexAssociations.properties", @@ -199,7 +199,7 @@ javaModulePackaging { options.addAll( "--mac-sign", "--mac-signing-key-user-name", "JabRef e.V. (6792V39SK3)", - "--mac-package-signing-prefix", "org.jabref", + "--mac-package-signing-prefix", "org.jabref.", ) } targetResources.from(layout.projectDirectory.dir("buildres/macos").asFileTree.matching { diff --git a/jabgui/buildres/macos/Info-lite.plist.template b/jabgui/buildres/macos/Info-lite.plist.template deleted file mode 100644 index 509eb841ef9..00000000000 --- a/jabgui/buildres/macos/Info-lite.plist.template +++ /dev/null @@ -1,39 +0,0 @@ - - - - - LSMinimumSystemVersion - 10.9 - CFBundleDevelopmentRegion - English - CFBundleAllowMixedLocalizations - - CFBundleExecutable - DEPLOY_LAUNCHER_NAME - CFBundleIconFile - DEPLOY_ICON_FILE - CFBundleIdentifier - DEPLOY_BUNDLE_IDENTIFIER - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - DEPLOY_BUNDLE_NAME - CFBundlePackageType - APPL - CFBundleShortVersionString - DEPLOY_BUNDLE_SHORT_VERSION - CFBundleSignature - ???? - - LSApplicationCategoryType - Unknown - CFBundleVersion - DEPLOY_BUNDLE_CFBUNDLE_VERSION - NSHumanReadableCopyright - DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS - NSHighResolutionCapable - true - NSSupportsAutomaticGraphicsSwitching - - - diff --git a/jabgui/buildres/macos/Info.plist b/jabgui/buildres/macos/Info.plist index 509eb841ef9..2c733d1931f 100644 --- a/jabgui/buildres/macos/Info.plist +++ b/jabgui/buildres/macos/Info.plist @@ -3,9 +3,9 @@ LSMinimumSystemVersion - 10.9 + 10.11 CFBundleDevelopmentRegion - English + en-US CFBundleAllowMixedLocalizations CFBundleExecutable @@ -26,7 +26,7 @@ ???? LSApplicationCategoryType - Unknown + DEPLOY_APP_CATEGORY CFBundleVersion DEPLOY_BUNDLE_CFBUNDLE_VERSION NSHumanReadableCopyright @@ -35,5 +35,5 @@ true NSSupportsAutomaticGraphicsSwitching - + diff --git a/jabgui/buildres/macos/Info.plist.template b/jabgui/buildres/macos/Info.plist.template deleted file mode 100644 index 509eb841ef9..00000000000 --- a/jabgui/buildres/macos/Info.plist.template +++ /dev/null @@ -1,39 +0,0 @@ - - - - - LSMinimumSystemVersion - 10.9 - CFBundleDevelopmentRegion - English - CFBundleAllowMixedLocalizations - - CFBundleExecutable - DEPLOY_LAUNCHER_NAME - CFBundleIconFile - DEPLOY_ICON_FILE - CFBundleIdentifier - DEPLOY_BUNDLE_IDENTIFIER - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - DEPLOY_BUNDLE_NAME - CFBundlePackageType - APPL - CFBundleShortVersionString - DEPLOY_BUNDLE_SHORT_VERSION - CFBundleSignature - ???? - - LSApplicationCategoryType - Unknown - CFBundleVersion - DEPLOY_BUNDLE_CFBUNDLE_VERSION - NSHumanReadableCopyright - DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS - NSHighResolutionCapable - true - NSSupportsAutomaticGraphicsSwitching - - - diff --git a/jabgui/buildres/macos/Jabref-volume.icns b/jabgui/buildres/macos/JabRef-volume.icns similarity index 100% rename from jabgui/buildres/macos/Jabref-volume.icns rename to jabgui/buildres/macos/JabRef-volume.icns diff --git a/jabgui/buildres/macos/jabref.icns b/jabgui/buildres/macos/JabRef.icns similarity index 100% rename from jabgui/buildres/macos/jabref.icns rename to jabgui/buildres/macos/JabRef.icns diff --git a/jabgui/buildres/macos/README.md b/jabgui/buildres/macos/README.md index 495b5742d73..e297503263d 100644 --- a/jabgui/buildres/macos/README.md +++ b/jabgui/buildres/macos/README.md @@ -2,8 +2,9 @@ ## Modifying DMG Setup scpt -Rename `JabRef-dmg-setup.scpt script` to `JabRef-dmg-setup.applescript`. -Only modify the `JabRef-dmg-setup.applescript` in the macOS Script Editor. Afterwards copy over the file and rename it to `JabRef-dmg-setup.scpt`. +Rename `JabRef-dmg-setup.scpt` script to `JabRef-dmg-setup.applescript`. +Only modify the `JabRef-dmg-setup.applescript` in the macOS Script Editor. +Afterwards, copy over the file and rename it to `JabRef-dmg-setup.scpt`. Normally the `scpt` file is a binary compiled variant and the `.applescript` the uncompiled format but jpackage expects the sctp in uncompiled format ## Generate iconsets diff --git a/jabgui/buildres/macos/Runtime-Info.plist.template b/jabgui/buildres/macos/Runtime-Info.plist.template deleted file mode 100644 index 76fb7eeb134..00000000000 --- a/jabgui/buildres/macos/Runtime-Info.plist.template +++ /dev/null @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleExecutable - libjli.dylib - CFBundleIdentifier - CF_BUNDLE_IDENTIFIER - CFBundleInfoDictionaryVersion - 7.0 - CFBundleName - CF_BUNDLE_NAME - CFBundlePackageType - BNDL - CFBundleShortVersionString - CF_BUNDLE_SHORT_VERSION_STRING - CFBundleSignature - ???? - CFBundleVersion - CF_BUNDLE_VERSION - NSSupportsAutomaticGraphicsSwitching - - - diff --git a/jabgui/buildres/macos/Runtime-Info.plist b/jabgui/buildres/macos/Runtime-info.plist similarity index 64% rename from jabgui/buildres/macos/Runtime-Info.plist rename to jabgui/buildres/macos/Runtime-info.plist index 76fb7eeb134..aaa7dfdf723 100644 --- a/jabgui/buildres/macos/Runtime-Info.plist +++ b/jabgui/buildres/macos/Runtime-info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - English + en-US CFBundleExecutable libjli.dylib CFBundleIdentifier @@ -22,5 +22,18 @@ CF_BUNDLE_VERSION NSSupportsAutomaticGraphicsSwitching + JavaVM + + JVMCapabilities + + CommandLine + + JVMPlatformVersion + CF_BUNDLE_VERSION + JVMVendor + CF_BUNDLE_VENDOR + JVMVersion + CF_BUNDLE_VERSION + diff --git a/jabgui/buildres/macos/bibtexAssociations.properties b/jabgui/buildres/macos/bibtexAssociations.properties index 9db815dbbb5..a0839863798 100644 --- a/jabgui/buildres/macos/bibtexAssociations.properties +++ b/jabgui/buildres/macos/bibtexAssociations.properties @@ -1,4 +1,3 @@ extension=bib mime-type=text/x-bibtex description=BibTeX File -icon=jabref.icns diff --git a/jabgui/buildres/macos/info-lite.plist b/jabgui/buildres/macos/info-lite.plist deleted file mode 100644 index 509eb841ef9..00000000000 --- a/jabgui/buildres/macos/info-lite.plist +++ /dev/null @@ -1,39 +0,0 @@ - - - - - LSMinimumSystemVersion - 10.9 - CFBundleDevelopmentRegion - English - CFBundleAllowMixedLocalizations - - CFBundleExecutable - DEPLOY_LAUNCHER_NAME - CFBundleIconFile - DEPLOY_ICON_FILE - CFBundleIdentifier - DEPLOY_BUNDLE_IDENTIFIER - CFBundleInfoDictionaryVersion - 6.0 - CFBundleName - DEPLOY_BUNDLE_NAME - CFBundlePackageType - APPL - CFBundleShortVersionString - DEPLOY_BUNDLE_SHORT_VERSION - CFBundleSignature - ???? - - LSApplicationCategoryType - Unknown - CFBundleVersion - DEPLOY_BUNDLE_CFBUNDLE_VERSION - NSHumanReadableCopyright - DEPLOY_BUNDLE_COPYRIGHTDEPLOY_FILE_ASSOCIATIONS - NSHighResolutionCapable - true - NSSupportsAutomaticGraphicsSwitching - - - diff --git a/jabgui/src/main/java/org/jabref/Launcher.java b/jabgui/src/main/java/org/jabref/Launcher.java index f5c7e07a358..785a760945e 100644 --- a/jabgui/src/main/java/org/jabref/Launcher.java +++ b/jabgui/src/main/java/org/jabref/Launcher.java @@ -51,7 +51,7 @@ public enum MultipleInstanceAction { FOCUS } - public static void main(String[] args) { + static void main(String[] args) { try { initLogging(args); LOGGER.info("Starting JabRef v{}", BUILD_INFO.version); diff --git a/jabgui/src/main/resources/icons/jabref.icns b/jabgui/src/main/resources/icons/jabref.icns deleted file mode 100644 index e231e8d3bad..00000000000 Binary files a/jabgui/src/main/resources/icons/jabref.icns and /dev/null differ diff --git a/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java b/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java index b3648948b4c..101fdeb4119 100644 --- a/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java +++ b/jabgui/src/test/java/org/jabref/testutils/interactive/styletester/StyleTesterMain.java @@ -13,7 +13,7 @@ /// Useful for checking the display of different controls. Not needed inside of JabRef. public class StyleTesterMain extends Application { - public static void main(String[] args) { + static void main(String[] args) { launch(args); } diff --git a/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java b/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java index 9cc2ca442a5..08d027a5595 100644 --- a/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java +++ b/jabkit/src/main/java/org/jabref/toolkit/JabKitLauncher.java @@ -60,6 +60,8 @@ public class JabKitLauncher { /// Note: To test with gradle, use jabkit -> Tasks -> application -> run /// Use `--args="..."` as parameters to "Run" + /// + /// @implNote method needs to be public, because JabKitLauncher calls it. public static void main(String[] args) { initLogging(args); diff --git a/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java b/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java index db3c8e0f30a..208a2f6ba4b 100644 --- a/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java +++ b/jablib/src/jmh/java/org/jabref/benchmarks/Benchmarks.java @@ -145,7 +145,7 @@ public boolean keywordGroupContains() { return group.containsAll(database.getEntries()); } - public static void main(String[] args) throws IOException { + static void main(String[] args) throws IOException { Main.main(args); } } diff --git a/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java b/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java index b1a7515d3db..b06c33ce082 100644 --- a/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java +++ b/jabls-cli/src/main/java/org/jabref/languageserver/cli/ServerCli.java @@ -19,6 +19,7 @@ public class ServerCli implements Callable { @CommandLine.Option(names = {"-p", "--port"}, description = "the port") private Integer port = 2087; + /// @implNote method needs to be public, because JabLsLauncher calls it. public static void main(final String[] args) throws InterruptedException { SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); diff --git a/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java b/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java index 3a247d64eaf..fb925d177b6 100644 --- a/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java +++ b/jabsrv-cli/src/main/java/org/jabref/http/server/cli/ServerCli.java @@ -34,6 +34,8 @@ public class ServerCli implements Callable { /// Starts an http server serving the last files opened in JabRef
/// More files can be provided as args. + /// + /// @implNote method needs to be public, because JabServLauncher calls it. public static void main(final String[] args) throws InterruptedException { SLF4JBridgeHandler.removeHandlersForRootLogger(); SLF4JBridgeHandler.install(); diff --git a/jitpack.yml b/jitpack.yml index f42f228e421..ebdbf20b9ae 100644 --- a/jitpack.yml +++ b/jitpack.yml @@ -1,5 +1,5 @@ jdk: - - openjdk24 + - openjdk25 install: - ./gradlew :versions:publishToMavenLocal - ./gradlew :jablib:publishToMavenLocal diff --git a/versions/build.gradle.kts b/versions/build.gradle.kts index a5ceda9c805..c5f51d5eb68 100644 --- a/versions/build.gradle.kts +++ b/versions/build.gradle.kts @@ -11,9 +11,10 @@ javaPlatform { // Based on https://stackoverflow.com/questions/11235614/how-to-detect-the-current-os-from-gradle val os = DefaultNativePlatform.getCurrentOperatingSystem() val arch = DefaultNativePlatform.getCurrentArchitecture() -val javafx = if (os.isLinux && arch.name.equals("aarch64", ignoreCase = true)) "25" else "25.0.1" +val javafx = "25.0.2" val lucene = "10.3.2" + val pdfbox = "3.0.6" dependencies {