1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.plugin.metadata;
20
21 import org.apache.maven.artifact.Artifact;
22 import org.apache.maven.artifact.repository.metadata.ArtifactRepositoryMetadata;
23 import org.apache.maven.artifact.repository.metadata.GroupRepositoryMetadata;
24 import org.apache.maven.artifact.repository.metadata.Versioning;
25 import org.apache.maven.plugin.AbstractMojo;
26 import org.apache.maven.plugin.MojoExecutionException;
27 import org.apache.maven.plugin.descriptor.PluginDescriptor;
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
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49 @Mojo(name = "addPluginArtifactMetadata", defaultPhase = LifecyclePhase.PACKAGE, threadSafe = true)
50 public class AddPluginArtifactMetadataMojo extends AbstractMojo {
51
52
53
54 @Parameter(defaultValue = "${project}", readonly = true)
55 private MavenProject project;
56
57
58
59
60 @Parameter
61 private String goalPrefix;
62
63
64
65
66
67
68 @Parameter(defaultValue = "false", property = "maven.plugin.skip")
69 private boolean skip;
70
71
72 @Override
73 public void execute() throws MojoExecutionException {
74 if (skip) {
75 getLog().warn("Execution skipped");
76 return;
77 }
78 Artifact projectArtifact = project.getArtifact();
79
80 Versioning versioning = new Versioning();
81 versioning.setLatest(projectArtifact.getVersion());
82 versioning.updateTimestamp();
83 ArtifactRepositoryMetadata metadata = new ArtifactRepositoryMetadata(projectArtifact, versioning);
84 projectArtifact.addMetadata(metadata);
85
86 GroupRepositoryMetadata groupMetadata = new GroupRepositoryMetadata(project.getGroupId());
87 groupMetadata.addPluginMapping(getGoalPrefix(), project.getArtifactId(), project.getName());
88
89 projectArtifact.addMetadata(groupMetadata);
90 }
91
92
93
94
95 private String getGoalPrefix() {
96 if (goalPrefix == null) {
97 goalPrefix = PluginDescriptor.getGoalPrefixFromArtifactId(project.getArtifactId());
98 }
99
100 return goalPrefix;
101 }
102 }