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
47
48
49 @Parameter
50 private String[] excludes;
51
52
53
54
55
56
57 @Parameter(defaultValue = "${project.build.directory}/gpg", alias = "outputDirectory")
58 private File ascDirectory;
59
60
61
62
63 @Component
64 protected MavenProject project;
65
66
67
68
69 @Component
70 private MavenProjectHelper projectHelper;
71
72 @Override
73 protected void doExecute() throws MojoExecutionException, MojoFailureException {
74
75
76
77
78 FilesCollector collector = new FilesCollector(project, excludes, getLog());
79 List<FilesCollector.Item> items = collector.collect();
80
81
82
83
84
85 AbstractGpgSigner signer = newSigner(project);
86 signer.setOutputDirectory(ascDirectory);
87 signer.setBuildDirectory(new File(project.getBuild().getDirectory()));
88 signer.setBaseDirectory(project.getBasedir());
89
90 getLog().info("Signer '" + signer.signerName() + "' is signing " + items.size() + " file"
91 + ((items.size() > 1) ? "s" : ""));
92
93 for (FilesCollector.Item item : items) {
94 getLog().debug("Generating signature for " + item.getFile());
95
96 File signature = signer.generateSignatureForArtifact(item.getFile());
97
98 projectHelper.attachArtifact(
99 project,
100 item.getExtension() + AbstractGpgSigner.SIGNATURE_EXTENSION,
101 item.getClassifier(),
102 signature);
103 }
104 }
105 }