diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2ea5eb42..bc4bfc3a 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -23,11 +23,11 @@ jobs: ref: badges path: badges - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'adopt' - java-version: '11' + java-version: '17' - name: Build with Maven run: mvn -B package -Pcoverage diff --git a/.github/workflows/codeql-analysis.yml b/.github/workflows/codeql-analysis.yml index 7518cab6..c880b097 100644 --- a/.github/workflows/codeql-analysis.yml +++ b/.github/workflows/codeql-analysis.yml @@ -37,6 +37,12 @@ jobs: - name: Checkout repository uses: actions/checkout@v3 + - name: Set up JDK 17 + uses: actions/setup-java@v3 + with: + distribution: 'adopt' + java-version: '17' + # Initializes the CodeQL tools for scanning. - name: Initialize CodeQL uses: github/codeql-action/init@v2 diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index d0595330..10b27145 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -25,11 +25,11 @@ jobs: ref: gh-pages path: gh-pages - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'adopt' - java-version: '11' + java-version: '17' - name: Build docs with Maven run: mvn compile javadoc:javadoc diff --git a/.github/workflows/manual-deploy-github-only.yml b/.github/workflows/manual-deploy-github-only.yml index 48001c5b..c68b4040 100644 --- a/.github/workflows/manual-deploy-github-only.yml +++ b/.github/workflows/manual-deploy-github-only.yml @@ -18,11 +18,11 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up JDK 11 for deploy to github packages + - name: Set up JDK 17 for deploy to github packages uses: actions/setup-java@v3 with: distribution: 'adopt' - java-version: '11' + java-version: '17' server-id: github - name: Build with Maven diff --git a/.github/workflows/manual-deploy.yml b/.github/workflows/manual-deploy.yml index 3bce9eaa..ab3022d7 100644 --- a/.github/workflows/manual-deploy.yml +++ b/.github/workflows/manual-deploy.yml @@ -17,11 +17,11 @@ jobs: steps: - uses: actions/checkout@v3 - - name: Set up JDK 11 + - name: Set up JDK 17 uses: actions/setup-java@v3 with: distribution: 'adopt' - java-version: '11' + java-version: '17' server-id: github - name: Build with Maven diff --git a/.github/workflows/maven-publish.yml b/.github/workflows/maven-publish.yml index cce87603..1edf69f5 100644 --- a/.github/workflows/maven-publish.yml +++ b/.github/workflows/maven-publish.yml @@ -19,11 +19,11 @@ jobs: id: get_version run: echo ::set-output name=VERSION::${GITHUB_REF/refs\/tags\/v/} - - name: Set up JDK 11 for deploy to OSSRH + - name: Set up JDK 17 for deploy to OSSRH uses: actions/setup-java@v3 with: distribution: 'adopt' - java-version: '11' + java-version: '17' server-id: ossrh server-username: MAVEN_USERNAME server-password: MAVEN_CENTRAL_TOKEN @@ -43,11 +43,11 @@ jobs: MAVEN_CENTRAL_TOKEN: ${{ secrets.MAVEN_CENTRAL_TOKEN }} MAVEN_GPG_PASSPHRASE: ${{ secrets.MAVEN_GPG_PASSPHRASE }} - - name: Set up JDK 11 for deploy to github packages + - name: Set up JDK 17 for deploy to github packages uses: actions/setup-java@v3 with: distribution: 'adopt' - java-version: '11' + java-version: '17' server-id: github - name: Publish to GitHub Packages Apache Maven diff --git a/.lift.toml b/.lift.toml index b13a44f5..8b148870 100644 --- a/.lift.toml +++ b/.lift.toml @@ -1,4 +1,4 @@ -jdkVersion = "11" +jdkVersion = "17" # don't run eslint... it is for js and will detect false positives # in javadoc directories. diff --git a/CHANGELOG.md b/CHANGELOG.md index 3224d69e..e90e7326 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,11 +4,15 @@ All notable changes to this project will be documented in this file. The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). -## [Unreleased] - 2022-06-01 +## [Unreleased] - 2022-06-02 + +**BREAKING CHANGES:** The next release is a major release that includes breaking changes. See +details below. ### Added ### Changed +* Minimum supported Java version is now Java 17 (breaking change). ### Deprecated diff --git a/README.md b/README.md index 06f85ee5..12bd2ee1 100644 --- a/README.md +++ b/README.md @@ -32,13 +32,19 @@ computation on permutations and sequences. It includes implementations of a vari of permutation distance metrics as well as distance metrics on sequences (i.e., Strings, arrays, and other ordered data types). -## Java 11+ +## Java 17+ -Beginning with version 3.0.0, the library supports Java 11+. Our development process -utilizes OpenJDK 11, and all jar files released via Maven Central, GitHub Packages, -and GitHub Releases are built with a Java 11 target. +We currently support Java 17+. See the following table for mapping between library version +and minimum supported Java version. -Versions prior to 3.0.0 previously required Java 8+. +| version | Java requirements | +| --- | --- | +| 4.x.y | Java 17+ | +| 3.x.y | Java 11+ | +| 1.x.y to 2.x.y | Java 8+ | + +The jar files of the library are released via Maven Central, GitHub Packages, +and GitHub Releases. ## Versioning Scheme @@ -86,7 +92,7 @@ module your.module.name.here { This module includes the `org.cicirello.permutations` and `org.cicirello.sequences` packages as well as their subpackages. See the [API documentation](https://jpt.cicirello.org/api) -for details. +for details of all packages included in this module. Beginning with version 3.0.0, randomization and other math utilities, and some generic utilities, have been @@ -95,12 +101,8 @@ and [org.cicirello.core](https://github.com/cicirello/core), which are now dependencies of JavaPermutationTools. Your dependency manager (see next section) will handle downloading these for you. -To ease the transition of users of the library who may have been relying on those -utilities, we have configured the `module-info.java` for the `org.cicirello.jpt` module to -require these transitively so that your application should only need to -require `org.cicirello.jpt` to access the functionality of those new modules. -However, it is possible that you __may__ actually need the following to access -some of that functionality, such as the RandomIndexer class, or other math or utility classes: +If you are directly utilizing the functionality of the dependencies, then you may instead +need the following: ```Java module your.module.name.here { @@ -119,7 +121,7 @@ with the version you want to use. org.cicirello jpt - 3.0.0 + 4.0.0 ``` @@ -146,9 +148,9 @@ or if you simply prefer to download manually, prebuilt jars are also attached to each [GitHub Release](https://github.com/cicirello/JavaPermutationTools). In addition to the regular jar of the library, we also regularly publish a -`jar-with-dependencies`. The `jar-with-dependencies` is built for a Java 11 target, -but does not contain any module declarations (unlike the regular jar file which does). -Therefore, the `jar-with-dependencies` should be used on the classpath. +`jar-with-dependencies`. The `jar-with-dependencies` does not contain any module +declarations (unlike the regular jar file which does). Therefore, the +`jar-with-dependencies` should be used on the classpath. ## License diff --git a/pom.xml b/pom.xml index fc401a7a..48b01bdd 100644 --- a/pom.xml +++ b/pom.xml @@ -6,7 +6,7 @@ org.cicirello jpt - 3.0.0 + 4.0.0 jar JavaPermutationTools @@ -184,7 +184,7 @@ UTF-8 - 11 + 17