@@ -66,6 +66,8 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
66
66
67
67
private static final Pattern INTELLIJ_CLASSPATH_JAR_PATTERN = Pattern .compile (".*classpath(\\ d+)?\\ .jar" );
68
68
69
+ private static final int MAX_RESOLUTION_ATTEMPTS = 5 ;
70
+
69
71
private final ClassLoader junitLoader ;
70
72
71
73
ModifiedClassPathClassLoader (URL [] urls , ClassLoader parent , ClassLoader junitLoader ) {
@@ -190,29 +192,35 @@ private static List<URL> getAdditionalUrls(MergedAnnotation<ClassPathOverrides>
190
192
}
191
193
192
194
private static List <URL > resolveCoordinates (String [] coordinates ) {
195
+ Exception latestFailure = null ;
193
196
DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils .newServiceLocator ();
194
197
serviceLocator .addService (RepositoryConnectorFactory .class , BasicRepositoryConnectorFactory .class );
195
198
serviceLocator .addService (TransporterFactory .class , HttpTransporterFactory .class );
196
199
RepositorySystem repositorySystem = serviceLocator .getService (RepositorySystem .class );
197
200
DefaultRepositorySystemSession session = MavenRepositorySystemUtils .newSession ();
198
201
LocalRepository localRepository = new LocalRepository (System .getProperty ("user.home" ) + "/.m2/repository" );
199
202
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 ;
210
220
}
211
- return resolvedArtifacts ;
212
- }
213
- catch (Exception ignored ) {
214
- return Collections .emptyList ();
215
221
}
222
+ throw new IllegalStateException ("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts" ,
223
+ latestFailure );
216
224
}
217
225
218
226
private static List <Dependency > createDependencies (String [] allCoordinates ) {
0 commit comments