[
https://issues.apache.org/jira/browse/MNG-7758?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Michael Osipov updated MNG-7758:
--------------------------------
Component/s: Artifacts and Repositories
> o.e.aether.resolution.ArtifactResolutionException incorrectly examed when
> multiple repositories are involved
> ------------------------------------------------------------------------------------------------------------
>
> Key: MNG-7758
> URL: https://issues.apache.org/jira/browse/MNG-7758
> Project: Maven
> Issue Type: Bug
> Components: Artifacts and Repositories, Dependencies, Performance
> Affects Versions: 3.8.8, 3.9.1, 4.0.0-alpha-5
> Reporter: Michael Osipov
> Priority: Critical
>
> 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:
> {noformat}
> [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
> {noformat}
> for a dependency:
> {noformat}
> [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
> {noformat}
> 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)}}
--
This message was sent by Atlassian Jira
(v8.20.10#820010)