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.Named;
22 import javax.inject.Singleton;
23
24 import org.apache.maven.plugin.descriptor.MojoDescriptor;
25 import org.apache.maven.plugin.descriptor.Parameter;
26 import org.apache.maven.shared.utils.logging.MessageUtils;
27 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
28 import org.codehaus.plexus.configuration.PlexusConfiguration;
29
30
31
32
33
34
35 @Singleton
36 @Named
37 class DeprecatedPluginValidator extends AbstractMavenPluginDescriptorSourcedParametersValidator {
38 @Override
39 protected String getParameterLogReason(Parameter parameter) {
40 return "is deprecated: " + parameter.getDeprecated();
41 }
42
43 @Override
44 protected void doValidate(
45 MojoDescriptor mojoDescriptor,
46 PlexusConfiguration pomConfiguration,
47 ExpressionEvaluator expressionEvaluator) {
48 if (mojoDescriptor.getDeprecated() != null) {
49 logDeprecatedMojo(mojoDescriptor);
50 }
51
52 if (mojoDescriptor.getParameters() == null) {
53 return;
54 }
55
56 mojoDescriptor.getParameters().stream()
57 .filter(parameter -> parameter.getDeprecated() != null)
58 .filter(Parameter::isEditable)
59 .forEach(parameter -> checkParameter(parameter, pomConfiguration, expressionEvaluator));
60 }
61
62 private void checkParameter(
63 Parameter parameter, PlexusConfiguration pomConfiguration, ExpressionEvaluator expressionEvaluator) {
64 PlexusConfiguration config = pomConfiguration.getChild(parameter.getName(), false);
65
66 if (isValueSet(config, expressionEvaluator)) {
67 logParameter(parameter);
68 }
69 }
70
71 private void logDeprecatedMojo(MojoDescriptor mojoDescriptor) {
72 String message = MessageUtils.buffer()
73 .warning("Goal '")
74 .warning(mojoDescriptor.getGoal())
75 .warning("' is deprecated: ")
76 .warning(mojoDescriptor.getDeprecated())
77 .toString();
78
79 logger.warn(message);
80 }
81 }