Skip to content

Commit 11d1002

Browse files
committed
Merge branch '2.2.x' into 2.3.x
Closes gh-22767
2 parents 327138c + 07699ea commit 11d1002

File tree

1 file changed

+22
-14
lines changed

1 file changed

+22
-14
lines changed

spring-boot-project/spring-boot-tools/spring-boot-test-support/src/main/java/org/springframework/boot/testsupport/classpath/ModifiedClassPathClassLoader.java

Lines changed: 22 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,8 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
6666

6767
private static final Pattern INTELLIJ_CLASSPATH_JAR_PATTERN = Pattern.compile(".*classpath(\\d+)?\\.jar");
6868

69+
private static final int MAX_RESOLUTION_ATTEMPTS = 5;
70+
6971
private final ClassLoader junitLoader;
7072

7173
ModifiedClassPathClassLoader(URL[] urls, ClassLoader parent, ClassLoader junitLoader) {
@@ -190,29 +192,35 @@ private static List<URL> getAdditionalUrls(MergedAnnotation<ClassPathOverrides>
190192
}
191193

192194
private static List<URL> resolveCoordinates(String[] coordinates) {
195+
Exception latestFailure = null;
193196
DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator();
194197
serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
195198
serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class);
196199
RepositorySystem repositorySystem = serviceLocator.getService(RepositorySystem.class);
197200
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
198201
LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository");
199202
session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository));
200-
CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(
201-
new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2").build()));
202-
203-
collectRequest.setDependencies(createDependencies(coordinates));
204-
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
205-
try {
206-
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
207-
List<URL> resolvedArtifacts = new ArrayList<>();
208-
for (ArtifactResult artifact : result.getArtifactResults()) {
209-
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL());
203+
for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) {
204+
CollectRequest collectRequest = new CollectRequest(null,
205+
Arrays.asList(
206+
new RemoteRepository.Builder("central", "default", "https://repo.maven.apache.org/maven2")
207+
.build()));
208+
collectRequest.setDependencies(createDependencies(coordinates));
209+
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
210+
try {
211+
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
212+
List<URL> resolvedArtifacts = new ArrayList<>();
213+
for (ArtifactResult artifact : result.getArtifactResults()) {
214+
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL());
215+
}
216+
return resolvedArtifacts;
217+
}
218+
catch (Exception ex) {
219+
latestFailure = ex;
210220
}
211-
return resolvedArtifacts;
212-
}
213-
catch (Exception ignored) {
214-
return Collections.emptyList();
215221
}
222+
throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts",
223+
latestFailure);
216224
}
217225

218226
private static List<Dependency> createDependencies(String[] allCoordinates) {

0 commit comments

Comments
 (0)