[MNG-7743] Make the build work on JDK 20 (#1065)

* [MNG-7743] Make the build work on JDK 20

 * the behaviour before the fix was already pretty confusing. JDK 19 and
   older do not check the presense of '{' in the constructor, so the
   URL object got created, but when converting to file the result would
   be e.g. '/../../src/test/remote-repo' which is completely wrong.
   But it seems the affected tests did not really care, as all of them
   were passing

* Remove forgotten println

Co-authored-by: Yeikel <email@yeikel.com>

* Test with latest JDK

* Do not run ITs with jdk 20, but just the "build itself"

---------

Co-authored-by: Yeikel <email@yeikel.com>
Co-authored-by: Guillaume Nodet <gnodet@gmail.com>
This commit is contained in:
Petr Široký 2023-05-16 11:06:05 +02:00 committed by GitHub
parent b76e78072a
commit 59342ce249
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 14 additions and 7 deletions

View File

@ -31,7 +31,7 @@ jobs:
strategy:
matrix:
os: [ubuntu-latest, windows-latest]
java: [8, 17]
java: [8, 17, 20]
fail-fast: false
runs-on: ${{ matrix.os }}

View File

@ -50,13 +50,20 @@ public class TestRepositoryConnector implements RepositoryConnector {
public TestRepositoryConnector(RemoteRepository repository) {
this.repository = repository;
try {
URL url = new URL(repository.getUrl());
if ("file".equals(url.getProtocol())) {
basedir = new File(url.getPath());
String repositoryUrl = repository.getUrl();
if (repositoryUrl.contains("${")) {
// the repository url contains unresolved properties and getting the basedir is not possible
// in JDK 20+ 'new URL(string)' will fail if the string contains a curly brace
this.basedir = null;
} else {
try {
URL url = new URL(repository.getUrl());
if ("file".equals(url.getProtocol())) {
basedir = new File(url.getPath());
}
} catch (MalformedURLException e) {
throw new IllegalStateException(e);
}
} catch (MalformedURLException e) {
throw new IllegalStateException(e);
}
}