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,22 +200,27 @@ 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(
collectRequest.setDependencies(createDependencies(coordinates)); new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2")
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); .build()));
try { collectRequest.setDependencies(createDependencies(coordinates));
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest); DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
List<URL> resolvedArtifacts = new ArrayList<>(); try {
for (ArtifactResult artifact : result.getArtifactResults()) { DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL()); List<URL> resolvedArtifacts = new ArrayList<>();
for (ArtifactResult artifact : result.getArtifactResults()) {
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL());
}
return resolvedArtifacts;
}
catch (Exception ex) {
latestFailure = ex;
} }
return resolvedArtifacts;
}
catch (Exception ignored) {
return Collections.emptyList();
} }
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) {