From ff6e032022cba442c6a5ced07286ac7c66315f15 Mon Sep 17 00:00:00 2001 From: Slawomir Jaranowski Date: Wed, 26 Nov 2025 22:24:12 +0100 Subject: [PATCH] Repository layout should be used in MavenRepositorySystem --- .../maven/bridge/MavenRepositorySystem.java | 93 +++++++++++++++++-- ...DefaultMavenExecutionRequestPopulator.java | 5 +- .../maven/project/DefaultProjectBuilder.java | 4 +- .../project/DefaultProjectBuildingHelper.java | 2 +- .../project/artifact/MavenMetadataSource.java | 2 +- .../AbstractCoreMavenComponentTestCase.java | 2 +- ...ultMavenExecutionRequestPopulatorTest.java | 20 ++-- .../SettingsXmlConfigurationProcessor.java | 8 +- 8 files changed, 115 insertions(+), 21 deletions(-) diff --git a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java index 47cfebcbbaed..d44efbc76b65 100644 --- a/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java +++ b/maven-core/src/main/java/org/apache/maven/bridge/MavenRepositorySystem.java @@ -36,19 +36,20 @@ import org.apache.maven.artifact.InvalidRepositoryException; import org.apache.maven.artifact.handler.ArtifactHandler; import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager; +import org.apache.maven.artifact.metadata.ArtifactMetadata; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy; import org.apache.maven.artifact.repository.Authentication; import org.apache.maven.artifact.repository.MavenArtifactRepository; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout; import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout2; -import org.apache.maven.artifact.repository.layout.DefaultRepositoryLayout; import org.apache.maven.artifact.resolver.filter.ExclusionArtifactFilter; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.model.Dependency; import org.apache.maven.model.Plugin; +import org.apache.maven.model.Repository; import org.apache.maven.repository.Proxy; import org.apache.maven.repository.RepositorySystem; import org.apache.maven.settings.Mirror; @@ -60,6 +61,8 @@ import org.eclipse.aether.repository.AuthenticationSelector; import org.eclipse.aether.repository.ProxySelector; import org.eclipse.aether.repository.RemoteRepository; +import org.slf4j.Logger; +import org.slf4j.LoggerFactory; /** * @author Jason van Zyl @@ -67,12 +70,22 @@ */ @Component(role = MavenRepositorySystem.class, hint = "default") public class MavenRepositorySystem { + + // Singleton instance for static deprecated methods + private static MavenRepositorySystem instance; + + private static final Logger LOGGER = LoggerFactory.getLogger(MavenRepositorySystem.class); + @Requirement private ArtifactHandlerManager artifactHandlerManager; @Requirement(role = ArtifactRepositoryLayout.class) private Map layouts; + MavenRepositorySystem() { + instance = this; + } + // DefaultProjectBuilder public Artifact createArtifact(String groupId, String artifactId, String version, String scope, String type) { return createArtifactX(groupId, artifactId, version, scope, type); @@ -200,7 +213,7 @@ private void injectMirror(ArtifactRepository repository, Mirror mirror) { repository.setUrl(mirror.getUrl()); if (StringUtils.isNotEmpty(mirror.getLayout())) { - repository.setLayout(getLayout(mirror.getLayout())); + repository.setLayout(getLayout(mirror.getId(), mirror.getLayout())); } repository.setBlocked(mirror.isBlocked()); @@ -275,8 +288,13 @@ public void injectProxy(RepositorySystemSession session, List remoteRepositories = rawProfile.getRepositories(); for (Repository remoteRepository : remoteRepositories) { try { - request.addRemoteRepository(repositorySystem.buildArtifactRepository(remoteRepository)); + request.addRemoteRepository(repositorySystem.buildArtifactRepositoryFromRepo(remoteRepository)); } catch (InvalidRepositoryException e) { // do nothing for now } @@ -250,7 +250,8 @@ public MavenExecutionRequest populateFromSettings(MavenExecutionRequest request, List pluginRepositories = rawProfile.getPluginRepositories(); for (Repository pluginRepo : pluginRepositories) { try { - request.addPluginArtifactRepository(repositorySystem.buildArtifactRepository(pluginRepo)); + request.addPluginArtifactRepository( + repositorySystem.buildArtifactRepositoryFromRepo(pluginRepo)); } catch (InvalidRepositoryException e) { // do nothing for now } diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java index 9fa8f3c22baa..b9592462ef57 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java @@ -831,7 +831,7 @@ HashMap compute() { try { DeploymentRepository r = project.getDistributionManagement().getRepository(); if (!StringUtils.isEmpty(r.getId()) && !StringUtils.isEmpty(r.getUrl())) { - ArtifactRepository repo = repositorySystem.buildArtifactRepository(r); + ArtifactRepository repo = repositorySystem.buildArtifactRepositoryFromRepo(r); repositorySystem.injectProxy(projectBuildingRequest.getRepositorySession(), Arrays.asList(repo)); repositorySystem.injectAuthentication( projectBuildingRequest.getRepositorySession(), Arrays.asList(repo)); @@ -849,7 +849,7 @@ HashMap compute() { try { DeploymentRepository r = project.getDistributionManagement().getSnapshotRepository(); if (!StringUtils.isEmpty(r.getId()) && !StringUtils.isEmpty(r.getUrl())) { - ArtifactRepository repo = repositorySystem.buildArtifactRepository(r); + ArtifactRepository repo = repositorySystem.buildArtifactRepositoryFromRepo(r); repositorySystem.injectProxy(projectBuildingRequest.getRepositorySession(), Arrays.asList(repo)); repositorySystem.injectAuthentication( projectBuildingRequest.getRepositorySession(), Arrays.asList(repo)); diff --git a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java index 7581bbdd48ba..6d585d524265 100644 --- a/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java +++ b/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuildingHelper.java @@ -88,7 +88,7 @@ public List createArtifactRepositories( List internalRepositories = new ArrayList<>(); for (Repository repository : pomRepositories) { - internalRepositories.add(repositorySystem.buildArtifactRepository(repository)); + internalRepositories.add(repositorySystem.buildArtifactRepositoryFromRepo(repository)); } repositorySystem.injectMirror(request.getRepositorySession(), internalRepositories); diff --git a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java index 74de25c3512b..9df7059d070e 100644 --- a/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java +++ b/maven-core/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java @@ -288,7 +288,7 @@ private List getRepositoriesFromModel(RepositorySystemSessio List pomRepositories = new ArrayList<>(); for (Repository modelRepository : model.getRepositories()) { try { - pomRepositories.add(MavenRepositorySystem.buildArtifactRepository(modelRepository)); + pomRepositories.add(repositorySystem.buildArtifactRepositoryFromRepo(modelRepository)); } catch (InvalidRepositoryException e) { // can not use this then } diff --git a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java index 669fef38cd5b..fa845b4c6a0f 100644 --- a/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java +++ b/maven-core/src/test/java/org/apache/maven/AbstractCoreMavenComponentTestCase.java @@ -192,7 +192,7 @@ protected List getRemoteRepositories() throws InvalidReposit repository.setReleases(policy); repository.setSnapshots(policy); - return Arrays.asList(repositorySystem.buildArtifactRepository(repository)); + return Arrays.asList(repositorySystem.buildArtifactRepositoryFromRepo(repository)); } protected List getPluginArtifactRepositories() throws InvalidRepositoryException { diff --git a/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java b/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java index d1ef5de3247c..5d8940351dd7 100644 --- a/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java +++ b/maven-core/src/test/java/org/apache/maven/execution/DefaultMavenExecutionRequestPopulatorTest.java @@ -18,21 +18,29 @@ */ package org.apache.maven.execution; -import javax.inject.Inject; - import java.util.List; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.settings.Profile; import org.apache.maven.settings.Repository; import org.apache.maven.settings.Settings; -import org.eclipse.sisu.launch.InjectedTestCase; +import org.codehaus.plexus.ContainerConfiguration; +import org.codehaus.plexus.PlexusConstants; +import org.codehaus.plexus.PlexusTestCase; + +public class DefaultMavenExecutionRequestPopulatorTest extends PlexusTestCase { -public class DefaultMavenExecutionRequestPopulatorTest extends InjectedTestCase { - @Inject - MavenExecutionRequestPopulator testee; + @Override + protected void customizeContainerConfiguration(ContainerConfiguration configuration) { + super.customizeContainerConfiguration(configuration); + configuration.setAutoWiring(true); + configuration.setClassPathScanning(PlexusConstants.SCANNING_INDEX); + } public void testPluginRepositoryInjection() throws Exception { + + MavenExecutionRequestPopulator testee = lookup(MavenExecutionRequestPopulator.class); + MavenExecutionRequest request = new DefaultMavenExecutionRequest(); Repository r = new Repository(); diff --git a/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java b/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java index dd1024ed02f7..7d757acaa37d 100644 --- a/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java +++ b/maven-embedder/src/main/java/org/apache/maven/cli/configuration/SettingsXmlConfigurationProcessor.java @@ -75,6 +75,9 @@ public class SettingsXmlConfigurationProcessor implements ConfigurationProcessor @Inject private SettingsDecrypter settingsDecrypter; + @Inject + private MavenRepositorySystem mavenRepositorySystem; + @Override public void process(CliRequest cliRequest) throws Exception { CommandLine commandLine = cliRequest.getCommandLine(); @@ -212,7 +215,8 @@ private MavenExecutionRequest populateFromSettings(MavenExecutionRequest request List remoteRepositories = rawProfile.getRepositories(); for (Repository remoteRepository : remoteRepositories) { try { - request.addRemoteRepository(MavenRepositorySystem.buildArtifactRepository(remoteRepository)); + request.addRemoteRepository( + mavenRepositorySystem.buildArtifactRepositoryFromRepo(remoteRepository)); } catch (InvalidRepositoryException e) { // do nothing for now } @@ -222,7 +226,7 @@ private MavenExecutionRequest populateFromSettings(MavenExecutionRequest request for (Repository pluginRepository : pluginRepositories) { try { request.addPluginArtifactRepository( - MavenRepositorySystem.buildArtifactRepository(pluginRepository)); + mavenRepositorySystem.buildArtifactRepositoryFromRepo(pluginRepository)); } catch (InvalidRepositoryException e) { // do nothing for now }