[
https://issues.apache.org/jira/browse/MNG-7468?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=17537692#comment-17537692
]
ASF GitHub Bot commented on MNG-7468:
-------------------------------------
michael-o commented on code in PR #741:
URL: https://github.com/apache/maven/pull/741#discussion_r874000540
##########
maven-core/src/main/java/org/apache/maven/lifecycle/internal/DefaultLifecycleExecutionPlanCalculator.java:
##########
@@ -358,6 +368,61 @@ private void finalizeMojoConfiguration( MojoExecution
mojoExecution )
mojoExecution.setConfiguration( finalConfiguration );
}
+ private void checkUnKnownMojoConfigurationParameters( MojoExecution
mojoExecution )
+ throws PluginConfigurationException
+ {
+ if ( mojoExecution.getConfiguration() == null ||
mojoExecution.getConfiguration().getChildCount() == 0 )
+ {
+ return;
+ }
+
+ // first stem get parameter names of current goal
+ Set<String> parametersNames = new HashSet<>();
+ for ( Parameter p : mojoExecution.getMojoDescriptor().getParameters() )
+ {
+ parametersNames.add( p.getName() );
+ if ( p.getAlias() != null )
+ {
+ parametersNames.add( p.getAlias() );
+ }
+ }
+
+ Set<String> unknownParameters = stream(
mojoExecution.getConfiguration().getChildren() )
+ .map( Xpp3Dom::getName )
+ .filter( name -> !parametersNames.contains( name ) )
+ .collect( Collectors.toSet() );
+
+ if ( unknownParameters.isEmpty() )
+ {
+ return;
+ }
+
+ // second step get parameter names of all plugin goals
+ parametersNames.clear();
+ for ( MojoDescriptor md :
mojoExecution.getMojoDescriptor().getPluginDescriptor().getMojos() )
+ {
+ for ( Parameter p : md.getParameters() )
+ {
+ parametersNames.add( p.getName() );
+ if ( p.getAlias() != null )
+ {
+ parametersNames.add( p.getAlias() );
+ }
+ }
+ }
+
+ unknownParameters = stream(
mojoExecution.getConfiguration().getChildren() )
+ .map( Xpp3Dom::getName )
+ .filter( name -> !parametersNames.contains( name ) )
+ .collect( Collectors.toSet() );
+
+ if ( !unknownParameters.isEmpty() )
+ {
+ String message = "Unknown plugin configuration parameters: " +
unknownParameters;
+ throw new PluginConfigurationException(
mojoExecution.getMojoDescriptor().getPluginDescriptor(), message );
Review Comment:
Important question. Consider that you have a plugin with n mojos, they share
some parameters, but goals have their own. I if do not configure the plugin in
general I cannot select the mojo the config should go. Will this fail on a per
usecase basis?
> Unsupported plugins parameters in configuration should be verified
> ------------------------------------------------------------------
>
> Key: MNG-7468
> URL: https://issues.apache.org/jira/browse/MNG-7468
> Project: Maven
> Issue Type: New Feature
> Components: Plugins and Lifecycle
> Reporter: Slawomir Jaranowski
> Assignee: Slawomir Jaranowski
> Priority: Major
> Fix For: 3.9.0, 4.0.0-alpha-1, 4.0.0
>
>
> Currently we can provide any xml tags in plugin configuration even if plugin
> Mojo doesn't support specific parameters.
> eg we can have:
> {code:xml}
> <plugin>
> <artifactId>example-maven-plugin</artifactId>
> <version>1.1.1</version>
> <configuration>
> <xxx>zzzz</xxx>
> </configuration>
> </plugin>
> {code}
> With example configuration Mojo is executed without any warning.
> Simply if parameters is not supported - build should break with some of
> invalid plugin configuration exception ...
--
This message was sent by Atlassian Jira
(v8.20.7#820007)