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 javax.inject.Inject;
22
23 import java.io.File;
24 import java.util.List;
25
26 import org.apache.maven.plugin.MojoExecutionException;
27 import org.apache.maven.plugin.MojoFailureException;
28 import org.apache.maven.plugins.annotations.LifecyclePhase;
29 import org.apache.maven.plugins.annotations.Mojo;
30 import org.apache.maven.plugins.annotations.Parameter;
31 import org.apache.maven.project.MavenProject;
32 import org.apache.maven.project.MavenProjectHelper;
33
34
35
36
37
38
39
40
41 @Mojo(name = "sign", defaultPhase = LifecyclePhase.VERIFY, threadSafe = true)
42 public class GpgSignAttachedMojo extends AbstractGpgMojo {
43
44
45
46
47
48
49
50 @Parameter
51 private String[] excludes;
52
53
54
55
56
57
58 @Parameter(defaultValue = "${project.build.directory}/gpg", alias = "outputDirectory")
59 private File ascDirectory;
60
61
62
63
64 protected final MavenProject project;
65
66
67
68
69 private final MavenProjectHelper projectHelper;
70
71 @Inject
72 public GpgSignAttachedMojo(MavenProject project, MavenProjectHelper projectHelper) {
73 this.project = project;
74 this.projectHelper = projectHelper;
75 }
76
77 @Override
78 protected void doExecute() throws MojoExecutionException, MojoFailureException {
79
80
81
82
83 FilesCollector collector = new FilesCollector(project, excludes, getLog());
84 List<FilesCollector.Item> items = collector.collect();
85
86
87
88
89
90 AbstractGpgSigner signer = newSigner(project);
91 signer.setOutputDirectory(ascDirectory);
92 signer.setBuildDirectory(new File(project.getBuild().getDirectory()));
93 signer.setBaseDirectory(project.getBasedir());
94
95 getLog().info("Signer '" + signer.signerName() + "' is signing " + items.size() + " file"
96 + ((items.size() > 1) ? "s" : "") + " with key " + signer.getKeyInfo());
97
98 for (FilesCollector.Item item : items) {
99 getLog().debug("Generating signature for " + item.getFile());
100
101 File signature = signer.generateSignatureForArtifact(item.getFile());
102
103 projectHelper.attachArtifact(
104 project,
105 item.getExtension() + AbstractGpgSigner.SIGNATURE_EXTENSION,
106 item.getClassifier(),
107 signature);
108 }
109 }
110 }