Skip to content

Commit aa34fbb

Browse files
committed
Merge branch '4.0.x'
Closes gh-50616
2 parents 8ff59ca + 2e825ba commit aa34fbb

3 files changed

Lines changed: 43 additions & 42 deletions

File tree

platform/spring-boot-internal-dependencies/build.gradle

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -157,13 +157,14 @@ bom {
157157
]
158158
}
159159
}
160-
library("Maven Resolver", "1.9.23") {
160+
library("Maven Resolver", "1.9.27") {
161161
group("org.apache.maven.resolver") {
162162
modules = [
163163
"maven-resolver-api",
164164
"maven-resolver-connector-basic",
165165
"maven-resolver-impl",
166166
"maven-resolver-spi",
167+
"maven-resolver-supplier",
167168
"maven-resolver-transport-file",
168169
"maven-resolver-transport-http",
169170
"maven-resolver-util"

test-support/spring-boot-test-support/build.gradle

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -47,12 +47,7 @@ dependencies {
4747
compileOnly("org.springframework.data:spring-data-redis")
4848

4949
implementation("jakarta.inject:jakarta.inject-api")
50-
implementation("org.apache.maven.resolver:maven-resolver-connector-basic")
51-
implementation("org.apache.maven.resolver:maven-resolver-impl")
52-
implementation("org.apache.maven:maven-resolver-provider") {
53-
exclude(group: "javax.inject", module: "javax.inject")
54-
}
55-
implementation("org.apache.maven.resolver:maven-resolver-transport-http") {
50+
implementation("org.apache.maven.resolver:maven-resolver-supplier") {
5651
exclude group: "org.slf4j", module: "jcl-over-slf4j"
5752
}
5853

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

Lines changed: 40 additions & 35 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
import java.util.List;
3333
import java.util.Map;
3434
import java.util.Set;
35+
import java.util.function.Function;
3536
import java.util.jar.Attributes;
3637
import java.util.jar.JarFile;
3738
import java.util.regex.Pattern;
@@ -42,16 +43,13 @@
4243
import org.eclipse.aether.RepositorySystem;
4344
import org.eclipse.aether.artifact.DefaultArtifact;
4445
import org.eclipse.aether.collection.CollectRequest;
45-
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
4646
import org.eclipse.aether.graph.Dependency;
4747
import org.eclipse.aether.repository.LocalRepository;
4848
import org.eclipse.aether.repository.RemoteRepository;
4949
import org.eclipse.aether.resolution.ArtifactResult;
5050
import org.eclipse.aether.resolution.DependencyRequest;
5151
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;
52+
import org.eclipse.aether.supplier.RepositorySystemSupplier;
5553

5654
import org.springframework.core.annotation.MergedAnnotation;
5755
import org.springframework.core.annotation.MergedAnnotations;
@@ -241,42 +239,49 @@ private static List<URL> getAdditionalUrls(List<MergedAnnotations> annotations)
241239
}
242240

243241
private static List<URL> resolveCoordinates(String[] coordinates) {
244-
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+
return doWithRepositorySystem((repositorySystem) -> {
243+
Exception latestFailure = null;
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;
262265
}
263-
return resolvedArtifacts;
266+
}
267+
throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts",
268+
latestFailure);
269+
});
270+
}
271+
272+
private static <T> T doWithRepositorySystem(Function<RepositorySystem, T> repositorySystem) {
273+
RepositorySystem rs = new RepositorySystemSupplier().get();
274+
try {
275+
return repositorySystem.apply(rs);
276+
}
277+
finally {
278+
try {
279+
rs.shutdown();
264280
}
265281
catch (Exception ex) {
266-
latestFailure = ex;
282+
// Ignore
267283
}
268284
}
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;
280285
}
281286

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

0 commit comments

Comments
 (0)