1 package org.apache.maven.plugins.enforcer;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22 import org.apache.maven.artifact.Artifact;
23 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
24 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
25 import org.apache.maven.project.MavenProject;
26 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
27
28
29
30
31
32
33 public class RequireReleaseVersion
34 extends AbstractNonCacheableEnforcerRule
35 {
36
37
38
39
40
41
42
43
44
45 private boolean failWhenParentIsSnapshot = true;
46
47
48
49
50
51
52 public void execute( EnforcerRuleHelper theHelper )
53 throws EnforcerRuleException
54 {
55
56 MavenProject project = getProject( theHelper );
57
58 if ( project.getArtifact().isSnapshot() )
59 {
60 String message = getMessage();
61 StringBuffer buf = new StringBuffer();
62 if ( message != null )
63 {
64 buf.append( message ).append( '\n' );
65 }
66 buf.append( "This project cannot be a snapshot:" ).append( project.getArtifact().getId() );
67 throw new EnforcerRuleException( buf.toString() );
68 }
69 if ( failWhenParentIsSnapshot )
70 {
71 Artifact parentArtifact = project.getParentArtifact();
72 if ( parentArtifact != null && parentArtifact.isSnapshot() )
73 {
74 throw new EnforcerRuleException( "Parent Cannot be a snapshot: " + parentArtifact.getId() );
75 }
76 }
77
78 }
79
80
81
82
83
84
85 private MavenProject getProject( EnforcerRuleHelper helper )
86 throws EnforcerRuleException
87 {
88 try
89 {
90 return (MavenProject) helper.evaluate( "${project}" );
91 }
92 catch ( ExpressionEvaluationException eee )
93 {
94 throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
95 }
96 }
97
98 public final boolean isFailWhenParentIsSnapshot()
99 {
100 return failWhenParentIsSnapshot;
101 }
102
103 public final void setFailWhenParentIsSnapshot( boolean failWhenParentIsSnapshot )
104 {
105 this.failWhenParentIsSnapshot = failWhenParentIsSnapshot;
106 }
107 }