mirror of
https://github.com/spring-projects/spring-boot.git
synced 2026-09-17 12:09:16 +00:00
Use new Maven Resolver API for ModifiedClassPathClassLoader
Replace deprecated Maven Resolver components with `RepositorySystemSupplier`. See gh-50447 Signed-off-by: Dmytro Nosan <dimanosan@gmail.com>
This commit is contained in:
committed by
Stéphane Nicoll
parent
351a82627b
commit
155b02f0e3
@@ -150,13 +150,14 @@ bom {
|
|||||||
]
|
]
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
library("Maven Resolver", "1.9.23") {
|
library("Maven Resolver", "1.9.27") {
|
||||||
group("org.apache.maven.resolver") {
|
group("org.apache.maven.resolver") {
|
||||||
modules = [
|
modules = [
|
||||||
"maven-resolver-api",
|
"maven-resolver-api",
|
||||||
"maven-resolver-connector-basic",
|
"maven-resolver-connector-basic",
|
||||||
"maven-resolver-impl",
|
"maven-resolver-impl",
|
||||||
"maven-resolver-spi",
|
"maven-resolver-spi",
|
||||||
|
"maven-resolver-supplier",
|
||||||
"maven-resolver-transport-file",
|
"maven-resolver-transport-file",
|
||||||
"maven-resolver-transport-http",
|
"maven-resolver-transport-http",
|
||||||
"maven-resolver-util"
|
"maven-resolver-util"
|
||||||
|
|||||||
@@ -37,12 +37,7 @@ dependencies {
|
|||||||
compileOnly("org.springframework.data:spring-data-redis")
|
compileOnly("org.springframework.data:spring-data-redis")
|
||||||
|
|
||||||
implementation("jakarta.inject:jakarta.inject-api")
|
implementation("jakarta.inject:jakarta.inject-api")
|
||||||
implementation("org.apache.maven.resolver:maven-resolver-connector-basic")
|
implementation("org.apache.maven.resolver:maven-resolver-supplier") {
|
||||||
implementation("org.apache.maven.resolver:maven-resolver-impl")
|
|
||||||
implementation("org.apache.maven:maven-resolver-provider") {
|
|
||||||
exclude(group: "javax.inject", module: "javax.inject")
|
|
||||||
}
|
|
||||||
implementation("org.apache.maven.resolver:maven-resolver-transport-http") {
|
|
||||||
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
exclude group: "org.slf4j", module: "jcl-over-slf4j"
|
||||||
}
|
}
|
||||||
implementation("org.assertj:assertj-core")
|
implementation("org.assertj:assertj-core")
|
||||||
|
|||||||
+32
-34
@@ -42,16 +42,13 @@ import org.eclipse.aether.DefaultRepositorySystemSession;
|
|||||||
import org.eclipse.aether.RepositorySystem;
|
import org.eclipse.aether.RepositorySystem;
|
||||||
import org.eclipse.aether.artifact.DefaultArtifact;
|
import org.eclipse.aether.artifact.DefaultArtifact;
|
||||||
import org.eclipse.aether.collection.CollectRequest;
|
import org.eclipse.aether.collection.CollectRequest;
|
||||||
import org.eclipse.aether.connector.basic.BasicRepositoryConnectorFactory;
|
|
||||||
import org.eclipse.aether.graph.Dependency;
|
import org.eclipse.aether.graph.Dependency;
|
||||||
import org.eclipse.aether.repository.LocalRepository;
|
import org.eclipse.aether.repository.LocalRepository;
|
||||||
import org.eclipse.aether.repository.RemoteRepository;
|
import org.eclipse.aether.repository.RemoteRepository;
|
||||||
import org.eclipse.aether.resolution.ArtifactResult;
|
import org.eclipse.aether.resolution.ArtifactResult;
|
||||||
import org.eclipse.aether.resolution.DependencyRequest;
|
import org.eclipse.aether.resolution.DependencyRequest;
|
||||||
import org.eclipse.aether.resolution.DependencyResult;
|
import org.eclipse.aether.resolution.DependencyResult;
|
||||||
import org.eclipse.aether.spi.connector.RepositoryConnectorFactory;
|
import org.eclipse.aether.supplier.RepositorySystemSupplier;
|
||||||
import org.eclipse.aether.spi.connector.transport.TransporterFactory;
|
|
||||||
import org.eclipse.aether.transport.http.HttpTransporterFactory;
|
|
||||||
|
|
||||||
import org.springframework.core.annotation.MergedAnnotation;
|
import org.springframework.core.annotation.MergedAnnotation;
|
||||||
import org.springframework.core.annotation.MergedAnnotations;
|
import org.springframework.core.annotation.MergedAnnotations;
|
||||||
@@ -242,41 +239,42 @@ final class ModifiedClassPathClassLoader extends URLClassLoader {
|
|||||||
|
|
||||||
private static List<URL> resolveCoordinates(String[] coordinates) {
|
private static List<URL> resolveCoordinates(String[] coordinates) {
|
||||||
Exception latestFailure = null;
|
Exception latestFailure = null;
|
||||||
RepositorySystem repositorySystem = createRepositorySystem();
|
RepositorySystem repositorySystem = new RepositorySystemSupplier().get();
|
||||||
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
|
try {
|
||||||
session.setSystemProperties(System.getProperties());
|
DefaultRepositorySystemSession session = MavenRepositorySystemUtils.newSession();
|
||||||
LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository");
|
session.setSystemProperties(System.getProperties());
|
||||||
RemoteRepository remoteRepository = new RemoteRepository.Builder("central", "default",
|
LocalRepository localRepository = new LocalRepository(System.getProperty("user.home") + "/.m2/repository");
|
||||||
"https://repo.maven.apache.org/maven2")
|
RemoteRepository remoteRepository = new RemoteRepository.Builder("central", "default",
|
||||||
.build();
|
"https://repo.maven.apache.org/maven2")
|
||||||
session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository));
|
.build();
|
||||||
for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) {
|
session.setLocalRepositoryManager(repositorySystem.newLocalRepositoryManager(session, localRepository));
|
||||||
CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(remoteRepository));
|
for (int i = 0; i < MAX_RESOLUTION_ATTEMPTS; i++) {
|
||||||
collectRequest.setDependencies(createDependencies(coordinates));
|
CollectRequest collectRequest = new CollectRequest(null, Arrays.asList(remoteRepository));
|
||||||
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
|
collectRequest.setDependencies(createDependencies(coordinates));
|
||||||
try {
|
DependencyRequest dependencyRequest = new DependencyRequest(collectRequest, null);
|
||||||
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
|
try {
|
||||||
List<URL> resolvedArtifacts = new ArrayList<>();
|
DependencyResult result = repositorySystem.resolveDependencies(session, dependencyRequest);
|
||||||
for (ArtifactResult artifact : result.getArtifactResults()) {
|
List<URL> resolvedArtifacts = new ArrayList<>();
|
||||||
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL());
|
for (ArtifactResult artifact : result.getArtifactResults()) {
|
||||||
|
resolvedArtifacts.add(artifact.getArtifact().getFile().toURI().toURL());
|
||||||
|
}
|
||||||
|
return resolvedArtifacts;
|
||||||
}
|
}
|
||||||
return resolvedArtifacts;
|
catch (Exception ex) {
|
||||||
|
latestFailure = ex;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts",
|
||||||
|
latestFailure);
|
||||||
|
}
|
||||||
|
finally {
|
||||||
|
try {
|
||||||
|
repositorySystem.shutdown();
|
||||||
}
|
}
|
||||||
catch (Exception ex) {
|
catch (Exception ex) {
|
||||||
latestFailure = ex;
|
// Ignore
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
throw new IllegalStateException("Resolution failed after " + MAX_RESOLUTION_ATTEMPTS + " attempts",
|
|
||||||
latestFailure);
|
|
||||||
}
|
|
||||||
|
|
||||||
@SuppressWarnings("deprecation")
|
|
||||||
private static RepositorySystem createRepositorySystem() {
|
|
||||||
org.eclipse.aether.impl.DefaultServiceLocator serviceLocator = MavenRepositorySystemUtils.newServiceLocator();
|
|
||||||
serviceLocator.addService(RepositoryConnectorFactory.class, BasicRepositoryConnectorFactory.class);
|
|
||||||
serviceLocator.addService(TransporterFactory.class, HttpTransporterFactory.class);
|
|
||||||
RepositorySystem repositorySystem = serviceLocator.getService(RepositorySystem.class);
|
|
||||||
return repositorySystem;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
private static List<Dependency> createDependencies(String[] allCoordinates) {
|
private static List<Dependency> createDependencies(String[] allCoordinates) {
|
||||||
|
|||||||
Reference in New Issue
Block a user