1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugins.gpg;
20
21 import java.io.File;
22 import java.util.List;
23
24 import org.apache.maven.plugin.MojoExecutionException;
25 import org.apache.maven.plugin.MojoFailureException;
26 import org.apache.maven.plugins.annotations.Component;
27 import org.apache.maven.plugins.annotations.LifecyclePhase;
28 import org.apache.maven.plugins.annotations.Mojo;
29 import org.apache.maven.plugins.annotations.Parameter;
30 import org.apache.maven.project.MavenProject;
31 import org.apache.maven.project.MavenProjectHelper;
32
33
34
35
36
37
38
39
40 @Mojo(name = "sign", defaultPhase = LifecyclePhase.VERIFY, threadSafe = true)
41 public class GpgSignAttachedMojo extends AbstractGpgMojo {
42
43
44
45
46 @Parameter(property = "gpg.skip", defaultValue = "false")
47 private boolean skip;
48
49
50
51
52
53
54
55 @Parameter
56 private String[] excludes;
57
58
59
60
61
62
63 @Parameter(defaultValue = "${project.build.directory}/gpg", alias = "outputDirectory")
64 private File ascDirectory;
65
66
67
68
69 @Parameter(defaultValue = "${project}", readonly = true, required = true)
70 protected MavenProject project;
71
72
73
74
75 @Component
76 private MavenProjectHelper projectHelper;
77
78 @Override
79 public void execute() throws MojoExecutionException, MojoFailureException {
80 if (skip) {
81
82 return;
83 }
84
85
86
87
88
89 FilesCollector collector = new FilesCollector(project, excludes, getLog());
90 List<FilesCollector.Item> items = collector.collect();
91
92
93
94
95
96 AbstractGpgSigner signer = newSigner(project);
97 signer.setOutputDirectory(ascDirectory);
98 signer.setBuildDirectory(new File(project.getBuild().getDirectory()));
99 signer.setBaseDirectory(project.getBasedir());
100
101 getLog().info("Signing " + items.size() + " file" + ((items.size() > 1) ? "s" : "") + " with "
102 + ((signer.keyname == null) ? "default" : signer.keyname) + " secret key.");
103
104 for (FilesCollector.Item item : items) {
105 getLog().debug("Generating signature for " + item.getFile());
106
107 File signature = signer.generateSignatureForArtifact(item.getFile());
108
109 projectHelper.attachArtifact(
110 project,
111 item.getExtension() + AbstractGpgSigner.SIGNATURE_EXTENSION,
112 item.getClassifier(),
113 signature);
114 }
115 }
116 }