Details
-
Type:
Bug
-
Status:
Closed
-
Priority:
Minor
-
Resolution: Fixed
-
Affects Version/s: 1.0-alpha-4
-
Fix Version/s: 1.0
-
Component/s: None
-
Labels:None
-
Number of attachments :
Description
If I run "mvn package gpg:sign", this works. If I run "mvn gpg:sign", I get the following stack trace:
java.lang.NullPointerException at org.apache.maven.plugin.gpg.GpgSigner.generateSignatureForArtifact(GpgSigner.java:119) at org.apache.maven.plugin.gpg.GpgSignAttachedMojo.execute(GpgSignAttachedMojo.java:228) at org.apache.maven.plugin.DefaultPluginManager.executeMojo(DefaultPluginManager.java:490) at org.apache.maven.lifecycle.DefaultLifecycleExecutor.executeGoals(DefaultLifecycleExecutor.java:694)
After running this through a debugger, I can see that this is because the 'file' object (project.getArtifact().getFile()) is null, which seems to be the case any time the artifact wasn't generated in this invocation of Maven. At the very least, this should result in a good error message, although it would be nice if "gpg:sign" would work on an artifact that was previously-generated.
This is the simplest patch I can imagine to improve the situation. It's not a very good solution, but it least explains the problem. A more workable solution would be to support signing previously-generated files, I would think.
### Eclipse Workspace Patch 1.0 #P maven-gpg-plugin Index: src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java =================================================================== --- src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java (revision 832750) +++ src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java (working copy) @@ -212,6 +212,9 @@ // ---------------------------------------------------------------------------- File projectArtifact = project.getArtifact().getFile(); + if( projectArtifact == null ) { + throw new MojoExecutionException( "Cannot find file for artifact " + project.getArtifact() + "; gpg signing must occur on the same invocation as the packaging." ); + } File projectArtifactSignature = signer.generateSignatureForArtifact( projectArtifact, pass );### Eclipse Workspace Patch 1.0 #P maven-gpg-plugin Index: src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java =================================================================== --- src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java (revision 832750) +++ src/main/java/org/apache/maven/plugin/gpg/GpgSignAttachedMojo.java (working copy) @@ -212,6 +212,9 @@ // ---------------------------------------------------------------------------- File projectArtifact = project.getArtifact().getFile(); + if( projectArtifact == null ) { + throw new MojoExecutionException( "Cannot find file for artifact " + project.getArtifact() + "; gpg signing must occur on the same invocation as the packaging." ); + } File projectArtifactSignature = signer.generateSignatureForArtifact( projectArtifact, pass );