|
42 | 42 | import org.eclipse.aether.RepositorySystem; |
43 | 43 | import org.eclipse.aether.artifact.DefaultArtifact; |
44 | 44 | import org.eclipse.aether.collection.CollectRequest; |
45 | | -import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory; |
46 | 45 | import org.eclipse.aether.graph.Dependency; |
47 | 46 | import org.eclipse.aether.repository.LocalRepository; |
48 | 47 | import org.eclipse.aether.repository.RemoteRepository; |
49 | 48 | import org.eclipse.aether.resolution.ArtifactResult; |
50 | 49 | import org.eclipse.aether.resolution.DependencyRequest; |
51 | 50 | import org.eclipse.aether.resolution.DependencyResult; |
52 | | -import org.eclipse.aether.spi.connector.RepositoryConnectorFactory; |
53 | | -import org.eclipse.aether.spi.connector.transport.TransporterFactory; |
54 | | -import org.eclipse.aether.transport.http.HttpTransporterFactory; |
| 51 | +import org.eclipse.aether.supplier.RepositorySystemSupplier; |
55 | 52 |
|
56 | 53 | import org.springframework.core.annotation.MergedAnnotation; |
57 | 54 | import org.springframework.core.annotation.MergedAnnotations; |
@@ -242,41 +239,42 @@ private static List<URL> getAdditionalUrls(List<MergedAnnotations> annotations) |
242 | 239 |
|
243 | 240 | private static List<URL> resolveCoordinates(String[] coordinates) { |
244 | 241 | Exception latestFailure = null; |
245 | | - RepositorySystem repositorySystem = createRepositorySystem(); |
246 | | - DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); |
247 | | - session.setSystemProperties(System.getProperties()); |
248 | | - LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository"); |
249 | | - RemoteRepository remoteRepository = new RemoteRepository.Builder("central", "default", |
250 | | - "https://repo.maven.apache.org/maven2") |
251 | | - .build(); |
252 | | - session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository)); |
253 | | - for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) { |
254 | | - CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(remoteRepository)); |
255 | | - collectRequest.setDependencies(createDependencies(coordinates)); |
256 | | - DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); |
257 | | - try { |
258 | | - DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest); |
259 | | - List<URL> resolvedArtifacts = new ArrayList<>(); |
260 | | - for (ArtifactResult artifact : result.getArtifactResults()) { |
261 | | - resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL()); |
| 242 | + RepositorySystem repositorySystem = new RepositorySystemSupplier().get(); |
| 243 | + try { |
| 244 | + DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession(); |
| 245 | + session.setSystemProperties(System.getProperties()); |
| 246 | + LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository"); |
| 247 | + RemoteRepository remoteRepository = new RemoteRepository.Builder("central", "default", |
| 248 | + "https://repo.maven.apache.org/maven2") |
| 249 | + .build(); |
| 250 | + session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository)); |
| 251 | + for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) { |
| 252 | + CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(remoteRepository)); |
| 253 | + collectRequest.setDependencies(createDependencies(coordinates)); |
| 254 | + DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null); |
| 255 | + try { |
| 256 | + DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest); |
| 257 | + List<URL> resolvedArtifacts = new ArrayList<>(); |
| 258 | + for (ArtifactResult artifact : result.getArtifactResults()) { |
| 259 | + resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL()); |
| 260 | + } |
| 261 | + return resolvedArtifacts; |
| 262 | + } |
| 263 | + catch (Exception ex) { |
| 264 | + latestFailure = ex; |
262 | 265 | } |
263 | | - return resolvedArtifacts; |
| 266 | + } |
| 267 | + throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts", |
| 268 | + latestFailure); |
| 269 | + } |
| 270 | + finally { |
| 271 | + try { |
| 272 | + repositorySystem.shutdown(); |
264 | 273 | } |
265 | 274 | catch (Exception ex) { |
266 | | - latestFailure = ex; |
| 275 | + // Ignore |
267 | 276 | } |
268 | 277 | } |
269 | | - throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts", |
270 | | - latestFailure); |
271 | | - } |
272 | | - |
273 | | - @SuppressWarnings("deprecation") |
274 | | - private static RepositorySystem createRepositorySystem() { |
275 | | - org.eclipse.aether.impl.DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator(); |
276 | | - serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class); |
277 | | - serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class); |
278 | | - RepositorySystem repositorySystem = serviceLocator.getService(RepositorySystem.class); |
279 | | - return repositorySystem; |
280 | 278 | } |
281 | 279 |
|
282 | 280 | private static List<Dependency> createDependencies(String[] allCoordinates) { |
|
0 commit comments