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 org.apache.maven.execution.MavenSession;
26 import org.apache.maven.plugin.PluginValidationManager;
27 import org.apache.maven.plugin.descriptor.MojoDescriptor;
28 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
29 import org.codehaus.plexus.configuration.PlexusConfiguration;
30
31 import static java.util.Objects.requireNonNull;
32
33
34
35
36
37
38 @Singleton
39 @Named
40 class PluginDescriptorRequirementsValidator implements MavenPluginConfigurationValidator {
41
42 private final PluginValidationManager pluginValidationManager;
43
44 @Inject
45 PluginDescriptorRequirementsValidator(PluginValidationManager pluginValidationManager) {
46 this.pluginValidationManager = requireNonNull(pluginValidationManager);
47 }
48
49 @Override
50 public void validate(
51 MavenSession mavenSession,
52 MojoDescriptor mojoDescriptor,
53 Class<?> mojoClass,
54 PlexusConfiguration pomConfiguration,
55 ExpressionEvaluator expressionEvaluator) {
56 if (!mojoDescriptor.getRequirements().isEmpty()) {
57 pluginValidationManager.reportPluginMojoValidationIssue(
58 PluginValidationManager.IssueLocality.EXTERNAL,
59 mavenSession,
60 mojoDescriptor,
61 mojoClass,
62 "Plugin uses Plexus Component requirements (@Component annotation). "
63 + "Use Maven 4 Dependency Injection (for v4 plugins) or JSR 330 annotations (for v3 plugins) to inject dependencies instead.");
64 }
65 }
66 }