[ 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)