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.List;
25 import java.util.Objects;
26 import java.util.function.Predicate;
27
28 import org.apache.maven.artifact.Artifact;
29 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
30 import org.apache.maven.enforcer.rules.utils.ArtifactUtils;
31 import org.apache.maven.execution.MavenSession;
32
33
34
35
36
37
38 @Named("bannedPlugins")
39 public final class BannedPlugins extends AbstractStandardEnforcerRule {
40
41
42
43
44
45
46
47
48 private List<String> excludes = null;
49
50
51
52
53
54
55
56
57
58
59 private List<String> includes = null;
60
61 private final MavenSession session;
62
63 @Inject
64 public BannedPlugins(MavenSession session) {
65 this.session = Objects.requireNonNull(session);
66 }
67
68 @Override
69 public void execute() throws EnforcerRuleException {
70 Predicate<Artifact> shouldExclude = ArtifactUtils.prepareDependencyArtifactMatcher(excludes);
71 Predicate<Artifact> shouldInclude = ArtifactUtils.prepareDependencyArtifactMatcher(includes);
72 String result = session.getCurrentProject().getPluginArtifacts().stream()
73 .filter(a -> !(!shouldExclude.test(a) || shouldInclude.test(a)))
74 .collect(
75 StringBuilder::new,
76 (messageBuilder, node) ->
77 messageBuilder.append(node.getId()).append(" <--- banned plugin"),
78 (m1, m2) -> m1.append(m2.toString()))
79 .toString();
80 if (!result.isEmpty()) {
81 throw new EnforcerRuleException(result);
82 }
83 }
84
85 @Override
86 public String toString() {
87 return String.format("BannedPlugins[excludes=%s, includes=%s]", excludes, includes);
88 }
89 }