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.dependency;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23
24 import java.util.function.Predicate;
25
26 import org.apache.maven.artifact.Artifact;
27 import org.apache.maven.enforcer.rule.api.EnforcerRuleException;
28 import org.apache.maven.enforcer.rules.utils.ArtifactUtils;
29 import org.apache.maven.execution.MavenSession;
30
31
32
33
34
35
36 @Named("bannedDependencies")
37 public final class BannedDependencies extends BannedDependenciesBase {
38
39 private Predicate<Artifact> shouldExclude;
40 private Predicate<Artifact> shouldInclude;
41
42 @Inject
43 BannedDependencies(MavenSession session, ResolverUtil resolverUtil) {
44 super(session, resolverUtil);
45 }
46
47 @Override
48 public void execute() throws EnforcerRuleException {
49 shouldExclude = ArtifactUtils.prepareDependencyArtifactMatcher(getExcludes());
50 shouldInclude = ArtifactUtils.prepareDependencyArtifactMatcher(getIncludes());
51 super.execute();
52 }
53
54 @Override
55 protected boolean validate(Artifact artifact) {
56 return !shouldExclude.test(artifact) || shouldInclude.test(artifact);
57 }
58
59 @Override
60 protected String getErrorMessage() {
61 return "banned via the exclude/include list";
62 }
63
64 @Override
65 public String toString() {
66 return String.format(
67 "BannedDependencies[message=%s, excludes=%s, includes=%s, searchTransitive=%b]",
68 getMessage(), getExcludes(), getIncludes(), isSearchTransitive());
69 }
70 }