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