[ 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)