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.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
26 import org.codehaus.plexus.configuration.PlexusConfiguration;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33
34
35 @Named
36 @Singleton
37 public class ReadOnlyPluginParametersValidator extends AbstractMavenPluginParametersValidator {
38 private static final Logger LOGGER = LoggerFactory.getLogger(ReadOnlyPluginParametersValidator.class);
39
40 @Override
41 protected Logger getLogger() {
42 return LOGGER;
43 }
44
45 @Override
46 protected String getParameterLogReason(Parameter parameter) {
47 return "is read-only, must not be used in configuration";
48 }
49
50 @Override
51 public void validate(
52 MojoDescriptor mojoDescriptor,
53 PlexusConfiguration pomConfiguration,
54 ExpressionEvaluator expressionEvaluator) {
55 if (!LOGGER.isWarnEnabled()) {
56 return;
57 }
58
59 mojoDescriptor.getParameters().stream()
60 .filter(parameter -> !parameter.isEditable())
61 .forEach(parameter -> checkParameter(parameter, pomConfiguration, expressionEvaluator));
62 }
63
64 protected void checkParameter(
65 Parameter parameter, PlexusConfiguration pomConfiguration, ExpressionEvaluator expressionEvaluator) {
66 PlexusConfiguration config = pomConfiguration.getChild(parameter.getName(), false);
67
68 if (isValueSet(config, expressionEvaluator)) {
69 logParameter(parameter);
70 }
71 }
72 }