commit
11d1002f15
|
@ -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 int MAX_RESOLUTION_ATTEMPTS = 5;
|
||||
|
||||
private final 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) {
|
||||
Exception latestFailure = null;
|
||||
DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator();
|
||||
serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
|
||||
serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class);
|
||||
|
@ -197,22 +200,27 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
|
|||
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
|
||||
LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository");
|
||||
session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository));
|
||||
CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(
|
||||
new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2").build()));
|
||||
|
||||
collectRequest.setDependencies(createDependencies(coordinates));
|
||||
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
|
||||
try {
|
||||
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
|
||||
List<URL> resolvedArtifacts = new ArrayList<>();
|
||||
for (ArtifactResult artifact : result.getArtifactResults()) {
|
||||
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL());
|
||||
for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) {
|
||||
CollectRequest collectRequest = new CollectRequest(null,
|
||||
Arrays.asList(
|
||||
new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2")
|
||||
.build()));
|
||||
collectRequest.setDependencies(createDependencies(coordinates));
|
||||
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
|
||||
try {
|
||||
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
|
||||
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) {
|
||||
|
|
Loading…
Reference in New Issue