You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by st...@apache.org on 2009/11/04 09:22:51 UTC

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

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( "" );
+                }
+            }
+        }
+
     }
 }



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

Posted by Jason van Zyl <ja...@sonatype.com>.
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