1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.maven.plugin.internal;
20
21 import javax.inject.Inject;
22 import javax.inject.Named;
23 import javax.inject.Singleton;
24
25 import java.util.Set;
26 import java.util.stream.Collectors;
27
28 import org.apache.maven.execution.MavenSession;
29 import org.apache.maven.plugin.PluginValidationManager;
30 import org.apache.maven.plugin.descriptor.MojoDescriptor;
31
32
33
34
35
36
37 @Singleton
38 @Named
39 class MavenScopeDependenciesValidator extends AbstractMavenPluginDependenciesValidator {
40
41 @Inject
42 MavenScopeDependenciesValidator(PluginValidationManager pluginValidationManager) {
43 super(pluginValidationManager);
44 }
45
46 @Override
47 protected void doValidate(MavenSession mavenSession, MojoDescriptor mojoDescriptor) {
48 Set<String> mavenArtifacts = mojoDescriptor.getPluginDescriptor().getDependencies().stream()
49 .filter(d -> "org.apache.maven".equals(d.getGroupId()))
50 .filter(d -> !expectedProvidedScopeExclusions.contains(d.getGroupId() + ":" + d.getArtifactId()))
51 .filter(d -> d.getVersion().startsWith("3."))
52 .map(d -> d.getGroupId() + ":" + d.getArtifactId() + ":" + d.getVersion())
53 .collect(Collectors.toSet());
54
55 if (!mavenArtifacts.isEmpty()) {
56 pluginValidationManager.reportPluginValidationIssue(
57 mavenSession,
58 mojoDescriptor,
59 "Plugin should declare these Maven artifacts in `provided` scope: " + mavenArtifacts);
60 }
61 }
62 }