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 public class RequireSnapshotVersion
32 extends AbstractNonCacheableEnforcerRule
33 {
34
35
36
37
38 private boolean failWhenParentIsRelease = true;
39
40 @Override
41 public void execute( EnforcerRuleHelper helper )
42 throws EnforcerRuleException
43 {
44
45 MavenProject project = getProject( helper );
46 Artifact artifact = project.getArtifact();
47
48 if ( !artifact.isSnapshot() )
49 {
50 String message = getMessage();
51 StringBuilder sb = new StringBuilder();
52 if ( message != null )
53 {
54 sb.append( message ).append( '\n' );
55 }
56 sb.append( "This project cannot be a release:" ).append( artifact.getId() );
57 throw new EnforcerRuleException( sb.toString() );
58 }
59 if ( failWhenParentIsRelease )
60 {
61 Artifact parentArtifact = project.getParentArtifact();
62 if ( parentArtifact != null && !parentArtifact.isSnapshot() )
63 {
64 throw new EnforcerRuleException( "Parent cannot be a release: " + parentArtifact.getId() );
65 }
66 }
67
68 }
69
70 private MavenProject getProject( EnforcerRuleHelper helper )
71 throws EnforcerRuleException
72 {
73 try
74 {
75 return (MavenProject) helper.evaluate( "${project}" );
76 }
77 catch ( ExpressionEvaluationException eee )
78 {
79 throw new EnforcerRuleException( "Unable to retrieve the MavenProject: ", eee );
80 }
81 }
82
83 public boolean isFailWhenParentIsRelease()
84 {
85 return failWhenParentIsRelease;
86 }
87
88 public void setFailWhenParentIsRelease( boolean failWhenParentIsRelease )
89 {
90 this.failWhenParentIsRelease = failWhenParentIsRelease;
91 }
92
93 }