Skip to content

Commit b23d7db

Browse files
Move to new Enforcer API - require m-enforcer-p 3.2.0
fix #256
1 parent b7ba48d commit b23d7db

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

41 files changed

+380
-499
lines changed

pom.xml

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -153,6 +153,10 @@
153153
</execution>
154154
</executions>
155155
</plugin>
156+
<plugin>
157+
<groupId>org.eclipse.sisu</groupId>
158+
<artifactId>sisu-maven-plugin</artifactId>
159+
</plugin>
156160
</plugins>
157161
</build>
158162

src/it/circular-simple/verify.groovy

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,10 @@
1+
File file = new File(basedir, "build.log");
2+
assert file.exists();
3+
4+
String text = file.getText("utf-8");
5+
6+
7+
assert text.contains('ERROR] Rule 0: org.codehaus.mojo.extraenforcer.dependencies.BanCircularDependencies failed with message:')
8+
assert text.contains('[ERROR] Circular Dependency found. Your project\'s groupId:artifactId combination must not exist in the list of direct or transitive dependencies.')
9+
10+
return true;

src/it/mojo-1744/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
* specific language governing permissions and limitations
1717
* under the License.
1818
*/
19-
import org.codehaus.mojo.extraenforcerrules.it.BanDuplicateClassesLogParser;
19+
import org.codehaus.mojo.extraenforcer.it.BanDuplicateClassesLogParser;
2020

2121
File log = new File( basedir, 'build.log' )
2222
assert log.exists()

src/it/mojo-1853/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
final File file = new File( basedir, "build.log" );
22
final String buf = file.getText("utf-8");
33

4-
assert buf.contains(/org.apache.maven.plugins.enforcer.RequirePropertyDiverges failed with message/);
4+
assert buf.contains(/org.codehaus.mojo.extraenforcer.model.RequirePropertyDiverges failed with message/);
55

66
assert buf.contains('Property \'project.url\' evaluates to \'http://company/company-parent-pom/child-fail');
77

src/it/mojo-1929/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
final File file = new File( basedir, "build.log" );
22
final String buf = file.getText("utf-8");
33

4-
assert buf.contains(/org.apache.maven.plugins.enforcer.RequirePropertyDiverges failed with message/);
4+
assert buf.contains(/org.codehaus.mojo.extraenforcer.model.RequirePropertyDiverges failed with message/);
55

66
assert buf.contains('Property \'project.url\' evaluates to \'http://company/company-parent-pom/child-fail');
77

src/it/require-project-url-missing/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ File file = new File( basedir, "build.log" );
22
assert file.exists();
33

44
String text = file.getText("utf-8");
5-
assert text.contains('org.apache.maven.plugins.enforcer.RequireProjectUrl failed with message');
5+
assert text.contains('org.codehaus.mojo.extraenforcer.model.RequireProjectUrl failed with message');
66

77
return true;

src/it/require-project-url-present/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ File file = new File( basedir, "build.log" );
22
assert file.exists();
33

44
String text = file.getText("utf-8");
5-
assert !text.contains('org.apache.maven.plugins.enforcer.RequireProjectUrl failed with message');
5+
assert !text.contains('org.codehaus.mojo.extraenforcer.model.RequireProjectUrl failed with message');
66

77
return true;

src/it/require-project-url-regex/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ File file = new File( basedir, "build.log" );
22
assert file.exists();
33

44
String text = file.getText("utf-8");
5-
assert text.contains('org.apache.maven.plugins.enforcer.RequireProjectUrl failed with message');
5+
assert text.contains('org.codehaus.mojo.extraenforcer.model.RequireProjectUrl failed with message');
66

77
return true;

src/it/require-property-diverges/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
final File file = new File( basedir, "build.log" );
22
final String buf = file.getText( "utf-8" );
33

4-
assert buf.contains(/org.apache.maven.plugins.enforcer.RequirePropertyDiverges failed with message/);
4+
assert buf.contains(/org.codehaus.mojo.extraenforcer.model.RequirePropertyDiverges failed with message/);
55

66
assert buf.contains('Property \'project.issueManagement\' is required for this build and not defined in hierarchy at all.');
77

src/it/require-roles-missing-contributor/verify.groovy

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,6 @@ File file = new File( basedir, "build.log" );
22
assert file.exists();
33

44
String text = file.getText("utf-8");
5-
assert text.contains('org.apache.maven.plugins.enforcer.RequireContributorRoles failed with message');
5+
assert text.contains('org.codehaus.mojo.extraenforcer.model.RequireContributorRoles failed with message');
66
assert text.contains('Found no contributor representing role(s) \'[quality manager]\'');
77
return true;

src/it/smokes/verify.bsh

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,7 @@ try
77
File file = new File( basedir, "build.log" );
88
String buf = FileUtils.fileRead( file );
99

10-
Pattern p = Pattern.compile( "\\Qorg.apache.maven.plugins.enforcer.BanDuplicateClasses failed with message\\E" );
10+
Pattern p = Pattern.compile( "\\Qorg.codehaus.mojo.extraenforcer.dependencies.BanDuplicateClasses failed with message\\E" );
1111
Matcher m = p.matcher( buf.toString() );
1212
if ( !m.find() )
1313
{

src/main/java/org/apache/maven/plugins/enforcer/AbstractMojoHausEnforcerRule.java

Lines changed: 0 additions & 36 deletions
This file was deleted.

src/main/java/org/apache/maven/plugins/enforcer/AbstractResolveDependencies.java renamed to src/main/java/org/codehaus/mojo/extraenforcer/dependencies/AbstractResolveDependencies.java

Lines changed: 14 additions & 53 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.apache.maven.plugins.enforcer;
1+
package org.codehaus.mojo.extraenforcer.dependencies;
22

33
import java.util.ArrayList;
44
import java.util.HashSet;
@@ -8,18 +8,14 @@
88

99
import org.apache.maven.RepositoryUtils;
1010
import org.apache.maven.artifact.Artifact;
11-
import org.apache.maven.enforcer.rule.api.EnforcerRule;
11+
import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
1212
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
13-
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
1413
import org.apache.maven.execution.MavenSession;
15-
import org.apache.maven.plugin.logging.Log;
1614
import org.apache.maven.project.DefaultProjectBuildingRequest;
1715
import org.apache.maven.project.ProjectBuildingRequest;
1816
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
1917
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
2018
import org.apache.maven.shared.dependency.graph.DependencyNode;
21-
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
22-
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
2319
import org.eclipse.aether.RepositorySystem;
2420
import org.eclipse.aether.resolution.ArtifactRequest;
2521
import org.eclipse.aether.resolution.ArtifactResolutionException;
@@ -31,32 +27,22 @@
3127
* @author Robert Scholte
3228
*
3329
*/
34-
public abstract class AbstractResolveDependencies extends AbstractMojoHausEnforcerRule {
30+
abstract class AbstractResolveDependencies extends AbstractEnforcerRule {
3531

36-
private DependencyGraphBuilder graphBuilder;
32+
private final MavenSession session;
33+
private final RepositorySystem repositorySystem;
3734

38-
private MavenSession session;
39-
private RepositorySystem repositorySystem;
35+
private final DependencyGraphBuilder graphBuilder;
4036

41-
private EnforcerRuleHelper helper;
42-
43-
public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
44-
this.helper = helper;
37+
protected AbstractResolveDependencies(
38+
MavenSession session, RepositorySystem repositorySystem, DependencyGraphBuilder graphBuilder) {
39+
this.session = session;
40+
this.repositorySystem = repositorySystem;
41+
this.graphBuilder = graphBuilder;
42+
}
4543

46-
// Get components
47-
try {
48-
repositorySystem = helper.getComponent(RepositorySystem.class);
49-
graphBuilder = helper.getComponent(DependencyGraphBuilder.class);
50-
} catch (ComponentLookupException e) {
51-
throw new EnforcerRuleException("Unable to lookup DependencyTreeBuilder: ", e);
52-
}
53-
54-
// Resolve expressions
55-
try {
56-
session = (MavenSession) helper.evaluate("${session}");
57-
} catch (ExpressionEvaluationException e) {
58-
throw new EnforcerRuleException("Unable to lookup an expression " + e.getLocalizedMessage(), e);
59-
}
44+
@Override
45+
public void execute() throws EnforcerRuleException {
6046

6147
ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
6248
buildingRequest.setProject(session.getCurrentProject());
@@ -124,31 +110,6 @@ private void resolveArtifact(Artifact artifact) throws ArtifactResolutionExcepti
124110
artifact.setResolved(true);
125111
}
126112

127-
protected Log getLog() {
128-
return helper.getLog();
129-
}
130-
131-
/**
132-
* {@inheritDoc}
133-
*/
134-
public boolean isCacheable() {
135-
return false;
136-
}
137-
138-
/**
139-
* {@inheritDoc}
140-
*/
141-
public boolean isResultValid(EnforcerRule enforcerRule) {
142-
return false;
143-
}
144-
145-
/**
146-
* {@inheritDoc}
147-
*/
148-
public String getCacheId() {
149-
return "Does not matter as not cacheable";
150-
}
151-
152113
/**
153114
* Convert a wildcard into a regex.
154115
*
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
package org.apache.maven.plugins.enforcer;
1+
package org.codehaus.mojo.extraenforcer.dependencies;
22

33
/*
44
* Licensed to the Apache Software Foundation (ASF) under one
@@ -19,82 +19,76 @@
1919
* under the License.
2020
*/
2121

22+
import javax.inject.Inject;
23+
import javax.inject.Named;
24+
2225
import java.util.HashSet;
2326
import java.util.Set;
2427

2528
import org.apache.maven.artifact.Artifact;
26-
import org.apache.maven.enforcer.rule.api.EnforcerRule;
29+
import org.apache.maven.enforcer.rule.api.AbstractEnforcerRule;
30+
import org.apache.maven.enforcer.rule.api.EnforcerRuleError;
2731
import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
28-
import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
2932
import org.apache.maven.execution.MavenSession;
30-
import org.apache.maven.plugin.logging.Log;
3133
import org.apache.maven.project.DefaultProjectBuildingRequest;
3234
import org.apache.maven.project.MavenProject;
3335
import org.apache.maven.project.ProjectBuildingRequest;
3436
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilder;
3537
import org.apache.maven.shared.dependency.graph.DependencyGraphBuilderException;
3638
import org.apache.maven.shared.dependency.graph.DependencyNode;
37-
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
38-
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
3939

4040
/**
4141
* Bans circular dependencies on the classpath.
4242
*
4343
* @since 1.0-alpha-4
4444
*/
45-
public class BanCircularDependencies extends AbstractMojoHausEnforcerRule {
45+
@Named("banCircularDependencies")
46+
public class BanCircularDependencies extends AbstractEnforcerRule {
4647

47-
private transient DependencyGraphBuilder graphBuilder;
48+
private final DependencyGraphBuilder graphBuilder;
49+
private final MavenProject project;
50+
private final MavenSession session;
4851

4952
private String message;
5053

54+
@Inject
55+
public BanCircularDependencies(DependencyGraphBuilder graphBuilder, MavenProject project, MavenSession session) {
56+
this.graphBuilder = graphBuilder;
57+
this.project = project;
58+
this.session = session;
59+
}
60+
5161
/**
5262
* {@inheritDoc}
5363
*/
54-
public void execute(EnforcerRuleHelper helper) throws EnforcerRuleException {
55-
Log log = helper.getLog();
56-
57-
try {
58-
graphBuilder = helper.getComponent(DependencyGraphBuilder.class);
59-
} catch (ComponentLookupException e) {
60-
throw new EnforcerRuleException("Unable to lookup DependencyGraphBuilder: ", e);
61-
}
62-
63-
try {
64-
MavenProject project = (MavenProject) helper.evaluate("${project}");
65-
MavenSession session = (MavenSession) helper.evaluate("${session}");
66-
67-
ProjectBuildingRequest buildingRequest =
68-
new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
69-
buildingRequest.setProject(project);
70-
71-
Set<Artifact> artifacts = getDependenciesToCheck(buildingRequest);
72-
if (artifacts != null) {
73-
for (Artifact artifact : artifacts) {
74-
log.debug("groupId: " + artifact.getGroupId() + project.getGroupId());
75-
if (artifact.getGroupId().equals(project.getGroupId())) {
76-
log.debug("artifactId: " + artifact.getArtifactId() + " " + project.getArtifactId());
77-
if (artifact.getArtifactId().equals(project.getArtifactId())) {
78-
throw new EnforcerRuleException(getErrorMessage() + "\n " + artifact.getGroupId() + ":"
79-
+ artifact.getArtifactId() + "\n ");
80-
}
64+
public void execute() throws EnforcerRuleException {
65+
66+
ProjectBuildingRequest buildingRequest = new DefaultProjectBuildingRequest(session.getProjectBuildingRequest());
67+
buildingRequest.setProject(project);
68+
69+
Set<Artifact> artifacts = getDependenciesToCheck(buildingRequest);
70+
if (artifacts != null) {
71+
for (Artifact artifact : artifacts) {
72+
getLog().debug("groupId: " + artifact.getGroupId() + project.getGroupId());
73+
if (artifact.getGroupId().equals(project.getGroupId())) {
74+
getLog().debug("artifactId: " + artifact.getArtifactId() + " " + project.getArtifactId());
75+
if (artifact.getArtifactId().equals(project.getArtifactId())) {
76+
throw new EnforcerRuleException(getErrorMessage() + "\n " + artifact.getGroupId() + ":"
77+
+ artifact.getArtifactId() + "\n ");
8178
}
8279
}
8380
}
84-
} catch (ExpressionEvaluationException e) {
85-
log.error("Error checking for circular dependencies", e);
86-
e.printStackTrace();
8781
}
8882
}
8983

90-
protected Set<Artifact> getDependenciesToCheck(ProjectBuildingRequest buildingRequest) {
84+
protected Set<Artifact> getDependenciesToCheck(ProjectBuildingRequest buildingRequest) throws EnforcerRuleError {
9185
Set<Artifact> dependencies;
9286
try {
9387
DependencyNode node = graphBuilder.buildDependencyGraph(buildingRequest, null);
9488
dependencies = getAllDescendants(node);
9589
} catch (DependencyGraphBuilderException e) {
9690
// otherwise we need to change the signature of this protected method
97-
throw new RuntimeException(e);
91+
throw new EnforcerRuleError(e);
9892
}
9993
return dependencies;
10094
}
@@ -121,25 +115,4 @@ private String getErrorMessage() {
121115
}
122116
return message;
123117
}
124-
125-
/**
126-
* {@inheritDoc}
127-
*/
128-
public boolean isCacheable() {
129-
return false;
130-
}
131-
132-
/**
133-
* {@inheritDoc}
134-
*/
135-
public boolean isResultValid(EnforcerRule enforcerRule) {
136-
return false;
137-
}
138-
139-
/**
140-
* {@inheritDoc}
141-
*/
142-
public String getCacheId() {
143-
return "Does not matter as not cacheable";
144-
}
145118
}

0 commit comments

Comments
 (0)