1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.enforcer.rules;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23
24 import java.util.Objects;
25
26 import org.apache.maven.artifact.Artifact;
27 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
28 import org.apache.maven.project.MavenProject;
29
30
31
32
33
34
35 @Named("requireReleaseVersion")
36 public final class RequireReleaseVersion extends AbstractStandardEnforcerRule {
37
38 private final MavenProject project;
39
40
41
42
43 private boolean failWhenParentIsSnapshot = true;
44
45 @Inject
46 public RequireReleaseVersion(MavenProject project) {
47 this.project = Objects.requireNonNull(project);
48 }
49
50 @Override
51 public void execute() throws EnforcerRuleException {
52
53 if (project.getArtifact().isSnapshot()) {
54 String message = getMessage();
55 StringBuilder buf = new StringBuilder();
56 if (message != null) {
57 buf.append(message).append(System.lineSeparator());
58 }
59 buf.append("This project cannot be a snapshot:")
60 .append(project.getArtifact().getId());
61 throw new EnforcerRuleException(buf.toString());
62 }
63 if (failWhenParentIsSnapshot) {
64 Artifact parentArtifact = project.getParentArtifact();
65 if (parentArtifact != null && parentArtifact.isSnapshot()) {
66 throw new EnforcerRuleException("Parent Cannot be a snapshot: " + parentArtifact.getId());
67 }
68 }
69 }
70
71 public void setFailWhenParentIsSnapshot(boolean failWhenParentIsSnapshot) {
72 this.failWhenParentIsSnapshot = failWhenParentIsSnapshot;
73 }
74
75 @Override
76 public String toString() {
77 return String.format("RequireReleaseVersion[failWhenParentIsSnapshot=%b]", failWhenParentIsSnapshot);
78 }
79 }