[ https://issues.apache.org/jira/browse/MNG-6641?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=16819412#comment-16819412 ]
Dale King commented on MNG-6641: -------------------------------- I don't have a project I can share to reproduce it but I can tell you what caused the validation failure to begin with. We have our own plugin that tries to override the version coming from the POM with one that it computes based on a number of factors. And it had these lines: {{ project.getArtifact().setVersionRange(VersionRange.createFromVersion(version));}} {{ project.getArtifact().setVersion(version);}} The code for DefaultArtifact.setVersion actually nulls out the version range that we set on the line before. The source plugin uses AttachedArtifact and AttachedArtifact basically will not work without a version range. The validations [here|https://github.com/apache/maven/blob/44826ab446d1115d464e73e7e308df36dcf7d39b/maven-artifact/src/main/java/org/apache/maven/artifact/DefaultArtifact.java#L147] check to make sure that either versionRange or version is non-null, but because this is called from the constructor version will ALWAYS be null so the only way to pass the validations is to have a versionRange. We were able to fix our problem by switching from calling setVersion to calling selectVersion which does not null out the versionRange, but the problem with the validations throwing an NPE instead of an intelligent message is still there. So to summarize a reproduction would be to simply call {{ project.getArtifact().setVersion(project.getArtifact().getVersion());}} in a plugin and also invoke the maven-source-plugin. > NPE from AttachedArtifact.getVersion rather than meaningful error > ----------------------------------------------------------------- > > Key: MNG-6641 > URL: https://issues.apache.org/jira/browse/MNG-6641 > Project: Maven > Issue Type: Bug > Components: Errors > Affects Versions: 3.6.0 > Environment: any > Reporter: Dale King > Priority: Minor > Fix For: waiting-for-feedback > > > This issue is basically re-reporting issue > https://issues.apache.org/jira/browse/MNG-4731, which was closed in the great > Jira clean up of 2014. 5 years later I can report it is still an issue. > The issue occurs when the information passed to AttachedArtifact violates any > of the validations in DefaultArtifact.validateIdentity(). The call to > getVersion() will throw an NPE because it is overridable in the > DefaultArtifact and parent has not been initialized yet in AttachedArtifact. > MNG-4731 explains this more clearly. > A comment on that ticket suggests that the problem is that AttachedArtifact > was called directly instead of using MavenProjectHelper.attachArtifact(). > That is not true as can be seen from my stack trace: > {noformat} > Caused by: java.lang.NullPointerException > at org.apache.maven.project.artifact.AttachedArtifact.getVersion > (AttachedArtifact.java:138) > at org.apache.maven.artifact.DefaultArtifact.validateIdentity > (DefaultArtifact.java:149) > at org.apache.maven.artifact.DefaultArtifact.<init> > (DefaultArtifact.java:124) > at org.apache.maven.project.artifact.AttachedArtifact.<init> > (AttachedArtifact.java:49) > at org.apache.maven.project.DefaultMavenProjectHelper.attachArtifact > (DefaultMavenProjectHelper.java:63) > at org.apache.maven.plugins.source.AbstractSourceJarMojo.packageSources > (AbstractSourceJarMojo.java:324) > at org.apache.maven.plugins.source.AbstractSourceJarMojo.packageSources > (AbstractSourceJarMojo.java:253) > at org.apache.maven.plugins.source.AbstractSourceJarMojo.execute > (AbstractSourceJarMojo.java:216) > {noformat} -- This message was sent by Atlassian JIRA (v7.6.3#76005)