Merge branch '2.2.x' into 2.3.x

Closes gh-22767
This commit is contained in:
Andy Wilkinson 2020-08-06 15:13:55 +01:00
commit 11d1002f15
1 changed files with 22 additions and 14 deletions

View File

@ -66,6 +66,8 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
private static final Pattern INTELLIJ_CLASSPATH_JAR_PATTERN = Pattern.compile(".*classpath(\\d+)?\\.jar"); private static final Pattern INTELLIJ_CLASSPATH_JAR_PATTERN = Pattern.compile(".*classpath(\\d+)?\\.jar");
private static final int MAX_RESOLUTION_ATTEMPTS = 5;
private final ClassLoader junitLoader; private final ClassLoader junitLoader;
ModifiedClassPathClassLoader(URL[] urls, ClassLoader parent, ClassLoader junitLoader) { ModifiedClassPathClassLoader(URL[] urls, ClassLoader parent, ClassLoader junitLoader) {
@ -190,6 +192,7 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
} }
private static List<URL> resolveCoordinates(String[] coordinates) { private static List<URL> resolveCoordinates(String[] coordinates) {
Exception latestFailure = null;
DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator(); DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator();
serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class); serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class);
@ -197,9 +200,11 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository"); LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository");
session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository)); session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository));
CollectRequest collectRequest = new CollectRequest(null, Arrays.asList( for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) {
new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2").build())); CollectRequest collectRequest = new CollectRequest(null,
Arrays.asList(
new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2")
.build()));
collectRequest.setDependencies(createDependencies(coordinates)); collectRequest.setDependencies(createDependencies(coordinates));
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
try { try {
@ -210,10 +215,13 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
} }
return resolvedArtifacts; return resolvedArtifacts;
} }
catch (Exception ignored) { catch (Exception ex) {
return Collections.emptyList(); latestFailure = ex;
} }
} }
throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts",
latestFailure);
}
private static List<Dependency> createDependencies(String[] allCoordinates) { private static List<Dependency> createDependencies(String[] allCoordinates) {
List<Dependency> dependencies = new ArrayList<>(); List<Dependency> dependencies = new ArrayList<>();