You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by Jason van Zyl <ja...@sonatype.com> on 2009/11/04 11:09:08 UTC

Re: svn commit: r832677 - /maven/sandbox/trunk/maven/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java

Sweet.

On 2009-11-04, at 9:22 AM, stephenc@apache.org wrote:

> Author: stephenc
> Date: Wed Nov  4 08:22:50 2009
> New Revision: 832677
>
> URL: http://svn.apache.org/viewvc?rev=832677&view=rev
> Log:
> functional
>
> Modified:
>    maven/sandbox/trunk/maven/maven-plugin-enforcer/src/main/java/org/ 
> apache/maven/util/pluginenforcer/ 
> PluginEnforcingMavenLifecycleParticipant.java
>
> Modified: maven/sandbox/trunk/maven/maven-plugin-enforcer/src/main/ 
> java/org/apache/maven/util/pluginenforcer/ 
> PluginEnforcingMavenLifecycleParticipant.java
> URL: http://svn.apache.org/viewvc/maven/sandbox/trunk/maven/maven-plugin-enforcer/src/main/java/org/apache/maven/util/pluginenforcer/PluginEnforcingMavenLifecycleParticipant.java?rev=832677&r1=832676&r2=832677&view=diff
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> = 
> ======================================================================
> --- maven/sandbox/trunk/maven/maven-plugin-enforcer/src/main/java/ 
> org/apache/maven/util/pluginenforcer/ 
> PluginEnforcingMavenLifecycleParticipant.java (original)
> +++ maven/sandbox/trunk/maven/maven-plugin-enforcer/src/main/java/ 
> org/apache/maven/util/pluginenforcer/ 
> PluginEnforcingMavenLifecycleParticipant.java Wed Nov  4 08:22:50 2009
> @@ -20,10 +20,15 @@
>
> import org.apache.maven.AbstractMavenLifecycleParticipant;
> import org.apache.maven.MavenExecutionException;
> +import org.apache.maven.artifact.ArtifactUtils;
> import org.apache.maven.execution.MavenSession;
> +import org.apache.maven.model.Plugin;
> +import org.apache.maven.model.ReportPlugin;
> +import org.apache.maven.project.MavenProject;
> import org.codehaus.plexus.component.annotations.Component;
> import org.codehaus.plexus.component.annotations.Requirement;
> import org.codehaus.plexus.logging.Logger;
> +import org.codehaus.plexus.util.StringUtils;
>
> /**
>  * Enforces that a specific version of a plugin is used throughout a  
> build.
> @@ -38,10 +43,98 @@
>
>     @Requirement
>     private Logger logger;
> -
> -    public void afterProjectsRead( MavenSession mavenSession )
> +
> +    public void afterProjectsRead( MavenSession session )
>         throws MavenExecutionException
>     {
> -        logger.info( "Hello " + mavenSession.getUserProperties 
> ().getProperty("name", "world!!!" ));
> +        String config = session.getUserProperties().getProperty 
> ( "force.plugins" );
> +        if ( StringUtils.isEmpty( config ) )
> +        {
> +            logger.info( "Plugin Enforcer: Nothing to do (i.e. - 
> Dforce.plugins undefined)" );
> +            return;
> +        }
> +        logger.info( StringUtils.repeat( "-", 72 ) );
> +        logger.info( "Plugin Enforcer" );
> +        logger.info( StringUtils.repeat( "-", 72 ) );
> +        for ( String forcePlugin : config.split( "," ) )
> +        {
> +            if ( forcePlugin.isEmpty() )
> +            {
> +                continue;
> +            }
> +            String[] parts = forcePlugin.split( ":" );
> +            if ( parts.length < 2 || parts.length > 3 )
> +            {
> +                logger.warn( "\"" + forcePlugin + "\" does not  
> match the format [groupId:]artifactId:version" );
> +                continue;
> +            }
> +            String groupId = parts.length == 3 ? parts[0] :  
> "org.apache.maven.plugins";
> +            String artifactId = parts[parts.length - 2];
> +            String version = parts[parts.length - 1];
> +            logger.info( "Forcing " + ArtifactUtils.versionlessKey 
> ( groupId, artifactId ) + " to " + version );
> +            logger.info( "" );
> +            for ( MavenProject project : session.getProjects() )
> +            {
> +                String name = StringUtils.isEmpty( project.getName 
> () ) ?
> +                    ArtifactUtils.versionlessKey( project.getGroupId 
> (), project.getArtifactId() ) + ":"
> +                        + project.getVersion() : project.getName();
> +                boolean projectIdentified = false;
> +                for ( Plugin plugin : project.getPluginManagement 
> ().getPlugins() )
> +                {
> +                    if ( StringUtils.equals( groupId,  
> plugin.getGroupId() ) && StringUtils.equals( artifactId,
> + 
>                                                                                                    plugin.getArtifactId 
> () ) )
> +                    {
> +                        if ( !projectIdentified )
> +                        {
> +                            logger.info( "Project: " + name );
> +                            projectIdentified = true;
> +                        }
> +                        logger.info(
> +                            "Plugin Management: replacing version "  
> + plugin.getVersion() + " with " + version );
> +                        plugin.setVersion( version );
> +                    }
> +                }
> +                for ( Plugin plugin : project.getBuildPlugins() )
> +                {
> +                    if ( StringUtils.equals( groupId,  
> plugin.getGroupId() ) && StringUtils.equals( artifactId,
> + 
>                                                                                                    plugin.getArtifactId 
> () ) )
> +                    {
> +                        if ( !projectIdentified )
> +                        {
> +                            logger.info( "Project: " + name );
> +                            projectIdentified = true;
> +                        }
> +                        logger.info( "Build Plugins: replacing  
> version " + plugin.getVersion() + " with " + version );
> +                        plugin.setVersion( version );
> +                    }
> +                }
> +                // AFAIK this should be unnecessary, but just to be  
> safe
> +                for ( ReportPlugin plugin : project.getReportPlugins 
> () )
> +                {
> +                    if ( StringUtils.equals( groupId,  
> plugin.getGroupId() ) && StringUtils.equals( artifactId,
> + 
>                                                                                                    plugin.getArtifactId 
> () ) )
> +                    {
> +                        if ( !projectIdentified )
> +                        {
> +                            logger.info( "Project: " + name );
> +                            projectIdentified = true;
> +                        }
> +                        logger.info( "Report Plugins: replacing  
> version " + plugin.getVersion() + " with " + version );
> +                        plugin.setVersion( version );
> +                    }
> +                }
> +                if ( projectIdentified )
> +                {
> +                    logger.info( "" );
> +                }
> +                else
> +                {
> +                    logger.warn( "No replacements Project: " +  
> name );
> +
> +                    logger.info( "" );
> +                }
> +            }
> +        }
> +
>     }
> }
>
>

Thanks,

Jason

----------------------------------------------------------
Jason van Zyl
Founder,  Apache Maven
http://twitter.com/jvanzyl
----------------------------------------------------------


---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@maven.apache.org
For additional commands, e-mail: dev-help@maven.apache.org