Details
-
Bug
-
Status: Closed
-
Critical
-
Resolution: Fixed
-
3.8.8, 3.9.1, 4.0.0-alpha-5
-
None
Description
Consider you have three repos defined in your build (could be POM or settings), evaluated in following order:
1. repo A: serves custom artifacts with group id com.example, due to repo partitioning in Nexus rejects requests to all other group ids with 403
1. repo B: serves third party artifacts without any restriction from a Nexus repo
1. repo C: serves Central mirror, last one quried, no restrictions
Note that order is important! Now add a non-existing dependency to your POM and receive the following behavior:
ArtifactResolutionException will contain an ArtifactResult with three exceptions:
- TransferException with nested AuthorizationException,
- ArtifactNotFoundException,
- ArtifactNotFoundException.
ArtifactResolutionException#getCause() will be populated with the TransferException so will org.eclipse.aether.resolution.ArtifactResult.isMissing() take the first exception only into account. E.g., DefaultArtifactDescriptorReader will do if (e.getCause() instanceof ArtifactNotFoundException) which is deceiving.
Here is a sample for a non-existing artifact:
[INFO] --- maven-site-plugin:4.0.0-M7-SNAPSHOT:site (default-site) @ mskins-222 --- [INFO] Configuring report plugin org.apache.maven.plugins:maven-project-info-reports-plugin:3.4.2 [WARNING] index report is declared twice in default reportSet [INFO] 15 reports configured for maven-project-info-reports-plugin:3.4.2: index, summary, dependency-info, modules, team, scm, issue-management, mailing-lists, dependency-management, dependencies, dependency-convergence, ci-management, plugin-management, plugins, distribution-management [INFO] Rendering site for default locale Downloading from lda-public: https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/apache/29/apache-29-site.xml [INFO] ------------------------------------------------------------------------ [INFO] BUILD FAILURE [INFO] ------------------------------------------------------------------------ [INFO] Total time: 3.214 s [INFO] Finished at: 2023-04-02T12:51:02+02:00 [INFO] ------------------------------------------------------------------------ [ERROR] Failed to execute goal org.apache.maven.plugins:maven-site-plugin:4.0.0-M7-SNAPSHOT:site (default-site) on project mskins-222: SiteToolException: The site descriptor cannot be resolved from the repository: Unable to locate site descriptor: Could not transfer artifact org.apache:apache:xml:site:29 from/to lda-public (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): authorization failed for https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/apache/29/apache-29-site.xml, status: 403 Forbidden -> [Help 1] [ERROR] [ERROR] To see the full stack trace of the errors, re-run Maven with the -e switch. [ERROR] Re-run Maven using the -X switch to enable full debug logging. [ERROR] [ERROR] For more information about the errors and possible solutions, please read the following articles: [ERROR] [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
for a dependency:
[INFO] org.apache.maven.cli.event.ExecutionEventLogger - ------------------------------------------------------------------------ [ERROR] org.apache.maven.cli.MavenCli - Failed to execute goal org.apache.maven.plugins:maven-site-plugin:4.0.0-M7-SNAPSHOT:site (default-site) on project mskins-222: Failed to get report for org.apache.maven.plugins:maven-project-plugin: Plugin org.apache.maven.plugins:maven-project-plugin:3.4.2 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-project-plugin:jar:3.4.2: Could not transfer artifact org.apache.maven.plugins:maven-project-plugin:pom:3.4.2 from/to lda-public (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): authorization failed for https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom, status: 403 Forbidden -> [Help 1] org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.maven.plugins:maven-site-plugin:4.0.0-M7-SNAPSHOT:site (default-site) on project mskins-222: Failed to get report for org.apache.maven.plugins:maven-project-plugin at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute2 (MojoExecutor.java:375) at org.apache.maven.lifecycle.internal.MojoExecutor.doExecute (MojoExecutor.java:351) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117) at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81) at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56) at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:298) at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192) Caused by: org.apache.maven.plugin.MojoExecutionException: Failed to get report for org.apache.maven.plugins:maven-project-plugin at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports (DefaultMavenReportExecutor.java:167) at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports (AbstractSiteRenderingMojo.java:198) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) Caused by: org.apache.maven.plugin.PluginResolutionException: Plugin org.apache.maven.plugins:maven-project-plugin:3.4.2 or one of its dependencies could not be resolved: Failed to read artifact descriptor for org.apache.maven.plugins:maven-project-plugin:jar:3.4.2 at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve (DefaultPluginDependenciesResolver.java:133) at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor (DefaultMavenPluginManager.java:182) at org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor (DefaultMavenPluginManagerHelper.java:67) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin (DefaultMavenReportExecutor.java:185) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports (DefaultMavenReportExecutor.java:164) at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports (AbstractSiteRenderingMojo.java:198) at org.apache.maven.plugins.site.render.SiteMojo.execute (SiteMojo.java:108) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) Caused by: org.eclipse.aether.resolution.ArtifactDescriptorException: Failed to read artifact descriptor for org.apache.maven.plugins:maven-project-plugin:jar:3.4.2 at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:255) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:171) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor (DefaultRepositorySystem.java:255) at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve (DefaultPluginDependenciesResolver.java:107) at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor (DefaultMavenPluginManager.java:182) at org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor (DefaultMavenPluginManagerHelper.java:67) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin (DefaultMavenReportExecutor.java:185) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports (DefaultMavenReportExecutor.java:164) at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports (AbstractSiteRenderingMojo.java:198) at org.apache.maven.plugins.site.render.SiteMojo.execute (SiteMojo.java:108) at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137) Caused by: org.eclipse.aether.resolution.ArtifactResolutionException: Could not transfer artifact org.apache.maven.plugins:maven-project-plugin:pom:3.4.2 from/to lda-public (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): authorization failed for https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom, status: 403 Forbidden at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:425) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:229) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:207) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:240) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:171) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor (DefaultRepositorySystem.java:255) at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve (DefaultPluginDependenciesResolver.java:107) at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor (DefaultMavenPluginManager.java:182) at org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor (DefaultMavenPluginManagerHelper.java:67) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin (DefaultMavenReportExecutor.java:185) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports (DefaultMavenReportExecutor.java:164) at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports (AbstractSiteRenderingMojo.java:198) at org.apache.maven.plugins.site.render.SiteMojo.execute (SiteMojo.java:108) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) Caused by: org.eclipse.aether.transfer.ArtifactTransferException: Could not transfer artifact org.apache.maven.plugins:maven-project-plugin:pom:3.4.2 from/to lda-public (https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/): authorization failed for https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom, status: 403 Forbidden at org.eclipse.aether.connector.basic.ArtifactTransportListener.transferFailed (ArtifactTransportListener.java:52) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$TaskRunner.run (BasicRepositoryConnector.java:369) at org.eclipse.aether.util.concurrency.RunnableErrorForwarder$1.run (RunnableErrorForwarder.java:75) at org.eclipse.aether.connector.basic.BasicRepositoryConnector$DirectExecutor.execute (BasicRepositoryConnector.java:628) at org.eclipse.aether.connector.basic.BasicRepositoryConnector.get (BasicRepositoryConnector.java:262) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.performDownloads (DefaultArtifactResolver.java:514) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolve (DefaultArtifactResolver.java:402) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifacts (DefaultArtifactResolver.java:229) at org.eclipse.aether.internal.impl.DefaultArtifactResolver.resolveArtifact (DefaultArtifactResolver.java:207) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom (DefaultArtifactDescriptorReader.java:240) at org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.readArtifactDescriptor (DefaultArtifactDescriptorReader.java:171) at org.eclipse.aether.internal.impl.DefaultRepositorySystem.readArtifactDescriptor (DefaultRepositorySystem.java:255) at org.apache.maven.plugin.internal.DefaultPluginDependenciesResolver.resolve (DefaultPluginDependenciesResolver.java:107) at org.apache.maven.plugin.internal.DefaultMavenPluginManager.getPluginDescriptor (DefaultMavenPluginManager.java:182) at org.apache.maven.reporting.exec.DefaultMavenPluginManagerHelper.getPluginDescriptor (DefaultMavenPluginManagerHelper.java:67) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildReportPlugin (DefaultMavenReportExecutor.java:185) at org.apache.maven.reporting.exec.DefaultMavenReportExecutor.buildMavenReports (DefaultMavenReportExecutor.java:164) at org.apache.maven.plugins.site.render.AbstractSiteRenderingMojo.getReports (AbstractSiteRenderingMojo.java:198) at org.apache.maven.plugins.site.render.SiteMojo.execute (SiteMojo.java:108) at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:406) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) Caused by: org.apache.maven.wagon.authorization.AuthorizationException: authorization failed for https://deblndw011x.ad001.siemens.net/nexus/content/groups/lda-public/org/apache/maven/plugins/maven-project-plugin/3.4.2/maven-project-plugin-3.4.2.pom, status: 403 Forbidden at org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1184) at org.apache.maven.wagon.providers.http.wagon.shared.AbstractHttpClientWagon.fillInputData (AbstractHttpClientWagon.java:1140) at org.apache.maven.wagon.StreamWagon.getInputStream (StreamWagon.java:126) at org.apache.maven.wagon.StreamWagon.getIfNewer (StreamWagon.java:88) at org.apache.maven.wagon.StreamWagon.get (StreamWagon.java:61) at org.eclipse.aether.transport.wagon.WagonTransporter$GetTaskRunner.run (WagonTransporter.java:546) at org.eclipse.aether.transport.wagon.WagonTransporter.execute (WagonTransporter.java:430) at org.eclipse.aether.transport.wagon.WagonTransporter.get (WagonTransporter.java:407) at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:347) [ERROR] org.apache.maven.cli.MavenCli - [ERROR] org.apache.maven.cli.MavenCli - [ERROR] org.apache.maven.cli.MavenCli - For more information about the errors and possible solutions, please read the following articles: [ERROR] org.apache.maven.cli.MavenCli - [Help 1] http://cwiki.apache.org/confluence/display/MAVEN/MojoExecutionException
The outcome of this handling is totally dependent on the order of repositories. If the repo A would be at the end the exception stracktrace would be completely different. It is perfectly fine that if one repo is not responding the other one responds properly, regardless if the artifact is found or not. The end result is important.
Affected components:
- org.apache.maven.artifact.resolver.DefaultArtifactResolver.resolve(Artifact, List<ArtifactRepository>, RepositorySystemSession)
- org.apache.maven.project.artifact.MavenMetadataSource.isMissingPom(Exception)
- org.apache.maven.project.artifact.MavenMetadataSource.isNonTransferrablePom(Exception)
- org.apache.maven.project.DefaultProjectBuilder.build(Artifact, boolean, ProjectBuildingRequest)
- org.apache.maven.repository.internal.DefaultArtifactDescriptorReader.loadPom(RepositorySystemSession, ArtifactDescriptorRequest, ArtifactDescriptorResult)
- org.apache.maven.repository.internal.DefaultModelResolver.resolveModel(String, String, String)
- org.apache.maven.project.ProjectModelResolver.resolveModel(String, String, String)
- org.apache.maven.project.collector.MultiModuleCollectionStrategy.isModuleOutsideRequestScopeDependingOnPluginModule(MavenExecutionRequest, ProjectBuildingException)
- org.eclipse.aether.internal.impl.DefaultRepositorySystem.resolveDependencies(RepositorySystemSession, DependencyRequest) with throw new DependencyResolutionException(result, are); with cause and message being problematic
Attachments
Attachments
Issue Links
- causes
-
MNG-8182 Missing or mismatching Trusted Checksum for some artifacts is not properly reported
- Closed
-
MNG-7770 Implement workaround for MNG-7758/MRESOLVER-335
- Open
-
DOXIASITETOOLS-303 Implement workaround for MNG-7758/MRESOLVER-335
- Closed
- depends upon
-
MRESOLVER-335 Better resolver errors for Artifact Not Found
- Closed
- is a parent of
-
MNG-6732 DefaultArtifactDescriptorReader.loadPom to check IGNORE_MISSING policy upon ArtifactTransferException
- Open
- is related to
-
MRESOLVER-569 DependencyCollectionException.getResult().getExceptions() always returns one exception
- Open
- links to