grrrrreat! I like it :) Regards,
Hervé Le samedi 14 janvier 2017, 13:39:47 CET [email protected] a écrit : > Author: rfscholte > Date: Sat Jan 14 13:39:47 2017 > New Revision: 1778770 > > URL: http://svn.apache.org/viewvc?rev=1778770&view=rev > Log: > [MPLUGIN-319] @since values ignored in report > New strategy where we don't need a parameter anymore (who would change it?) > > Added: > > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/ > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/plugin/ > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/plugin/descriptor/ > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/plugin/descriptor/MNG6109PluginDescriptorBuilder.java Modified: > > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugin/plugin/PluginReport.java > > Modified: > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugin/plugin/PluginReport.java URL: > http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-plugin/s > rc/main/java/org/apache/maven/plugin/plugin/PluginReport.java?rev=1778770&r1 > =1778769&r2=1778770&view=diff > =========================================================================== > === --- > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugin/plugin/PluginReport.java (original) +++ > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugin/plugin/PluginReport.java Sat Jan 14 13:39:47 2017 @@ -47,6 +47,7 @@ > import org.apache.maven.plugins.annotati > import org.apache.maven.plugins.annotations.LifecyclePhase; > import org.apache.maven.plugins.annotations.Mojo; > import org.apache.maven.plugins.annotations.Parameter; > +import > org.apache.maven.plugins.plugin.descriptor.MNG6109PluginDescriptorBuilder; > import org.apache.maven.project.MavenProject; > import org.apache.maven.reporting.AbstractMavenReport; > import org.apache.maven.reporting.AbstractMavenReportRenderer; > @@ -195,18 +196,6 @@ public class PluginReport > */ > @Component > private RuntimeInformation rtInfo; > - > - /** > - * Maven version range where <code>META-INF/maven/plugin.xml</code> > should be used to get plugin info: - * when running with a Maven > version not in the range, plugin info is extracted directly from plugin > source. - * Reading <code>META-INF/maven/plugin.xml</code> gives > accurate <code>since</code> only with Maven-3.4.0+ - * (see MNG-6109). > - * For cases where missing <code>since</code> info is not an issue, > this version range spec can be changed - * to avoid extracting info > from plugin source once again. > - * @since 3.5.1 > - */ > - @Parameter( defaultValue = "(3.3.9,)" ) > - private String usePluginXmlMavenVersionRange; > > /** > * {@inheritDoc} > @@ -271,26 +260,20 @@ public class PluginReport > private PluginDescriptor extractPluginDescriptor() > throws MavenReportException > { > - if ( !usePluginXml() ) > + PluginDescriptorBuilder builder = getPluginDescriptorBuilder(); > + > + try > { > - getLog().debug( "Mojo configured to avoid plugin.xml > (MNG-6109): fall back to mojoScanner" ); + return builder.build( > new FileReader( new File( project.getBuild().getOutputDirectory(), + > > "META-INF/maven/plugin.xml" ) ) ); } > - else > + catch ( FileNotFoundException e ) > { > - PluginDescriptorBuilder builder = new > PluginDescriptorBuilder(); - try > - { > - return builder.build( new FileReader( new File( > project.getBuild().getOutputDirectory(), - > "META-INF/maven/plugin.xml" ) ) ); - > } > - catch ( FileNotFoundException e ) > - { > - getLog().debug( "Failed to read META-INF/maven/plugin.xml, > fall back to mojoScanner" ); - } > - catch ( PlexusConfigurationException e ) > - { > - getLog().debug( "Failed to read META-INF/maven/plugin.xml, > fall back to mojoScanner" ); - } > + getLog().debug( "Failed to read META-INF/maven/plugin.xml, fall > back to mojoScanner" ); + } > + catch ( PlexusConfigurationException e ) > + { > + getLog().debug( "Failed to read META-INF/maven/plugin.xml, fall > back to mojoScanner" ); } > > // Copy from AbstractGeneratorMojo#execute() > @@ -348,23 +331,35 @@ public class PluginReport > } > > /** > - * Check if META-INF/maven/plugin.xml should be used (as expected > initially) or not (because of Maven - * MNG-6109 bug that won't give > accurate since info when reading plugin.xml). - * @return true if > runing Maven version is in configured usePluginXmlMavenVersionRange range + > * Return the pluginDescriptorBuilder to use based on the Maven version: > either use the original from the + * maven-plugin-api or a patched > version for Maven versions before the MNG-6109 fix + * (because of > Maven MNG-6109 bug that won't give accurate 'since' info when reading > plugin.xml). + * > + * @return the proper pluginDescriptorBuilder > * @see https://issues.apache.org/jira/browse/MNG-6109 > * @see https://issues.apache.org/jira/browse/MPLUGIN-319 > */ > - private boolean usePluginXml() > + private PluginDescriptorBuilder getPluginDescriptorBuilder() > { > + PluginDescriptorBuilder pluginDescriptorBuilder; > try > { > - VersionRange versionRange = VersionRange.createFromVersionSpec( > usePluginXmlMavenVersionRange ); - return > versionRange.containsVersion( rtInfo.getApplicationVersion() ); + > VersionRange versionRange = VersionRange.createFromVersionSpec( "(3.3.9,)" > ); + if ( versionRange.containsVersion( > rtInfo.getApplicationVersion() ) ) + { > + pluginDescriptorBuilder = new PluginDescriptorBuilder(); > + } > + else > + { > + pluginDescriptorBuilder = new > MNG6109PluginDescriptorBuilder(); + } > } > catch ( InvalidVersionSpecificationException e ) > { > - return false; > + return new MNG6109PluginDescriptorBuilder(); > } > + > + return pluginDescriptorBuilder; > } > > /** > > Added: > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/plugin/descriptor/MNG6109PluginDescriptorBuilder.java URL: > http://svn.apache.org/viewvc/maven/plugin-tools/trunk/maven-plugin-plugin/s > rc/main/java/org/apache/maven/plugins/plugin/descriptor/MNG6109PluginDescrip > torBuilder.java?rev=1778770&view=auto > =========================================================================== > === --- > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/plugin/descriptor/MNG6109PluginDescriptorBuilder.java (added) +++ > maven/plugin-tools/trunk/maven-plugin-plugin/src/main/java/org/apache/maven > /plugins/plugin/descriptor/MNG6109PluginDescriptorBuilder.java Sat Jan 14 > 13:39:47 2017 @@ -0,0 +1,61 @@ > +package org.apache.maven.plugins.plugin.descriptor; > + > +/* > + * Licensed to the Apache Software Foundation (ASF) under one > + * or more contributor license agreements. See the NOTICE file > + * distributed with this work for additional information > + * regarding copyright ownership. The ASF licenses this file > + * to you under the Apache License, Version 2.0 (the > + * "License"); you may not use this file except in compliance > + * with the License. You may obtain a copy of the License at > + * > + * http://www.apache.org/licenses/LICENSE-2.0 > + * > + * Unless required by applicable law or agreed to in writing, > + * software distributed under the License is distributed on an > + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY > + * KIND, either express or implied. See the License for the > + * specific language governing permissions and limitations > + * under the License. > + */ > + > +import org.apache.maven.plugin.descriptor.MojoDescriptor; > +import org.apache.maven.plugin.descriptor.PluginDescriptor; > +import org.apache.maven.plugin.descriptor.PluginDescriptorBuilder; > +import org.codehaus.plexus.configuration.PlexusConfiguration; > +import org.codehaus.plexus.configuration.PlexusConfigurationException; > + > +/** > + * Reads the plugin descriptor and adds the fix for MNG-6109 when using > Maven-3.3.9 and before. + * Class can be removed once Maven 3.5.0 is the > prerequisite for this plugin. + * > + * @author Robert Scholte > + * @since 3.5.1 > + */ > +public class MNG6109PluginDescriptorBuilder extends PluginDescriptorBuilder > +{ > + > + @Override > + public MojoDescriptor buildComponentDescriptor( PlexusConfiguration c, > PluginDescriptor pluginDescriptor ) + throws > PlexusConfigurationException > + { > + MojoDescriptor mojoDescriptor = super.buildComponentDescriptor( c, > pluginDescriptor ); + > + // > ---------------------------------------------------------------------- + > // Parameters > + // > ---------------------------------------------------------------------- + > + PlexusConfiguration[] parameterConfigurations = c.getChild( > "parameters" ).getChildren( "parameter" ); + > + for ( PlexusConfiguration d : parameterConfigurations ) > + { > + String parameterName = d.getChild( "name" ).getValue(); > + > + String parameterSince = d.getChild( "since" ).getValue(); > + > + mojoDescriptor.getParameterMap().get( parameterName ).setSince( > parameterSince ); + } > + > + return mojoDescriptor; > + } > +} --------------------------------------------------------------------- To unsubscribe, e-mail: [email protected] For additional commands, e-mail: [email protected]
