[
https://issues.apache.org/jira/browse/SUREFIRE-2051?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Tibor Digana reassigned SUREFIRE-2051:
--------------------------------------
Assignee: Tibor Digana
> Propagate `ArtifactResolutionException` while resolving artifacts in
> `SurefireDependencyResolver`
> -------------------------------------------------------------------------------------------------
>
> Key: SUREFIRE-2051
> URL: https://issues.apache.org/jira/browse/SUREFIRE-2051
> Project: Maven Surefire
> Issue Type: Improvement
> Affects Versions: 3.0.0-M5
> Environment: Apache Maven 3.8.5
> (3599d3414f046de2324203b78ddcf9b5e4388aa0)
> maven-surefire-plugin 3.0.0-M5
> Reporter: Halil İbrahim Şener
> Assignee: Tibor Digana
> Priority: Minor
> Fix For: 3.0.0-M6
>
>
> We see {{NullPointerException}} s from time to time, similar to
> https://issues.apache.org/jira/browse/SUREFIRE-1837 and
> https://issues.apache.org/jira/browse/SUREFIRE-1928. Relevant stack traces:
> {code}
> Caused by: java.lang.NullPointerException: Cannot invoke
> "java.io.File.getAbsolutePath()" because the return value of
> "org.apache.maven.artifact.Artifact.getFile()" is null
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo$ClasspathCache.setCachedClasspath
> (AbstractSurefireMojo.java:4121)
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo$ClasspathCache.access$200
> (AbstractSurefireMojo.java:4102)
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo.newStartupConfigWithClasspath
> (AbstractSurefireMojo.java:1913)
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo.createStartupConfiguration
> (AbstractSurefireMojo.java:1894)
> {code}
> and when debug is enabled:
> {code}
> Caused by: java.lang.NullPointerException: Cannot invoke
> "java.io.File.getAbsolutePath()" because the return value of
> "org.apache.maven.artifact.Artifact.getFile()" is null
> at
> org.apache.maven.plugin.surefire.SurefireDependencyResolver.getProviderClasspath
> (SurefireDependencyResolver.java:218)
> at
> org.apache.maven.plugin.surefire.SurefireDependencyResolver.getProviderClasspathAsMap
> (SurefireDependencyResolver.java:230)
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo$JUnitPlatformProviderInfo.getProviderClasspath
> (AbstractSurefireMojo.java:3215)
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo.newStartupConfigWithClasspath
> (AbstractSurefireMojo.java:1908)
> at
> org.apache.maven.plugin.surefire.AbstractSurefireMojo.createStartupConfiguration
> (AbstractSurefireMojo.java:1894)
> {code}
> Mentioned tickets point to https://github.com/apache/maven/pull/627. However,
> we had already upgraded to Maven 3.8.5 and it was still happening.
> After digging the Surefire code, I realized NPE is a red herring because
> Surefire doesn't propagate the issue during artifact resolution, and then
> later, it fails with NPE. In our case, the remote repository wasn't reliable,
> e.g., it sometimes returns 500.
> I think Surefire should propagate the actual artifact resolution issue
> instead. Similar to Maven compiler plugin
> https://github.com/apache/maven-compiler-plugin/blob/785089d48541899b5c0a4677942b0f66c2f71d39/src/main/java/org/apache/maven/plugin/compiler/AbstractCompilerMojo.java#L1838
--
This message was sent by Atlassian Jira
(v8.20.1#820001)