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