You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by rf...@apache.org on 2013/06/09 14:35:20 UTC

svn commit: r1491202 - in /maven/enforcer/trunk: enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/ enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/ maven-enforcer-plugin/src/it/mrm/repository/ maven-enforcer-plugin/sr...

Author: rfscholte
Date: Sun Jun  9 12:35:19 2013
New Revision: 1491202

URL: http://svn.apache.org/r1491202
Log:
[MENFORCER-126] requirePluginVersions misreports plugins with artifactIds defined through properties 

Added:
    maven/enforcer/trunk/maven-enforcer-plugin/src/it/mrm/repository/menforcer126_maven-plugin-1.0.pom
    maven/enforcer/trunk/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/
    maven/enforcer/trunk/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml
Modified:
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
    maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java

Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java?rev=1491202&r1=1491201&r2=1491202&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/RequirePluginVersions.java Sun Jun  9 12:35:19 2013
@@ -54,6 +54,7 @@ import org.apache.maven.model.BuildBase;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Plugin;
 import org.apache.maven.model.Profile;
+import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.plugin.InvalidPluginException;
 import org.apache.maven.plugin.MojoExecutionException;
 import org.apache.maven.plugin.PluginManager;
@@ -1039,7 +1040,8 @@ public class RequirePluginVersions
         {
             try
             {
-                plugins.addAll( PluginWrapper.addAll( model.getBuild().getPlugins(), model.getId() + ".build.plugins" ) );
+                List<Plugin> modelPlugins =  model.getBuild().getPlugins();
+                plugins.addAll( PluginWrapper.addAll( utils.resolvePlugins( modelPlugins ), model.getId() + ".build.plugins" ) );
             }
             catch ( NullPointerException e )
             {
@@ -1048,8 +1050,9 @@ public class RequirePluginVersions
 
             try
             {
+                List<ReportPlugin> modelReportPlugins =  model.getReporting().getPlugins();
                 // add the reporting plugins
-                plugins.addAll( PluginWrapper.addAll( model.getReporting().getPlugins(), model.getId() + ".reporting" ) );
+                plugins.addAll( PluginWrapper.addAll( utils.resolveReportPlugins( modelReportPlugins ), model.getId() + ".reporting" ) );
             }
             catch ( NullPointerException e )
             {
@@ -1058,7 +1061,8 @@ public class RequirePluginVersions
 
             try
             {
-                plugins.addAll( PluginWrapper.addAll( model.getBuild().getPluginManagement().getPlugins(),
+                List<Plugin> modelPlugins =  model.getBuild().getPluginManagement().getPlugins();
+                plugins.addAll( PluginWrapper.addAll( utils.resolvePlugins( modelPlugins ),
                                                       model.getId() + ".build.pluginManagement.plugins" ) );
             }
             catch ( NullPointerException e )
@@ -1073,7 +1077,8 @@ public class RequirePluginVersions
             {
                 try
                 {
-                    plugins.addAll( PluginWrapper.addAll( profile.getBuild().getPlugins(), model.getId()
+                    List<Plugin> modelPlugins =  profile.getBuild().getPlugins();
+                    plugins.addAll( PluginWrapper.addAll( utils.resolvePlugins( modelPlugins ), model.getId()
                         + ".profiles.profile[" + profile.getId() + "].build.plugins" ) );
                 }
                 catch ( NullPointerException e )
@@ -1083,8 +1088,9 @@ public class RequirePluginVersions
 
                 try
                 {
+                    List<ReportPlugin> modelReportPlugins =  profile.getReporting().getPlugins();
                     // add the reporting plugins
-                    plugins.addAll( PluginWrapper.addAll( profile.getReporting().getPlugins(), model.getId()
+                    plugins.addAll( PluginWrapper.addAll( utils.resolveReportPlugins( modelReportPlugins ), model.getId()
                         + "profile[" + profile.getId() + "].reporting.plugins" ) );
                 }
                 catch ( NullPointerException e )
@@ -1093,8 +1099,8 @@ public class RequirePluginVersions
                 }
                 try
                 {
-                    // add the reporting plugins
-                    plugins.addAll( PluginWrapper.addAll( profile.getBuild().getPluginManagement().getPlugins(),
+                    List<Plugin> modelPlugins =  profile.getBuild().getPluginManagement().getPlugins();
+                    plugins.addAll( PluginWrapper.addAll( utils.resolvePlugins( modelPlugins ),
                                                           model.getId() + "profile[" + profile.getId()
                                                               + "].build.pluginManagement.plugins" ) );
                 }

Modified: maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java?rev=1491202&r1=1491201&r2=1491202&view=diff
==============================================================================
--- maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java (original)
+++ maven/enforcer/trunk/enforcer-rules/src/main/java/org/apache/maven/plugins/enforcer/utils/EnforcerRuleUtils.java Sun Jun  9 12:35:19 2013
@@ -34,6 +34,8 @@ import org.apache.maven.artifact.resolve
 import org.apache.maven.enforcer.rule.api.EnforcerRuleHelper;
 import org.apache.maven.model.Model;
 import org.apache.maven.model.Parent;
+import org.apache.maven.model.Plugin;
+import org.apache.maven.model.ReportPlugin;
 import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.plugin.logging.Log;
 import org.apache.maven.project.MavenProject;
@@ -323,4 +325,53 @@ public class EnforcerRuleUtils
         return ( StringUtils.equals( groupId, modelGroup ) && StringUtils.equals( version, modelVersion ) && StringUtils
             .equals( artifactId, model.getArtifactId() ) );
     }
+    
+ 
+    private void resolve( Plugin plugin )
+    {
+        try
+        {
+            plugin.setGroupId( (String) helper.evaluate( plugin.getGroupId() ) );
+            plugin.setArtifactId( (String) helper.evaluate( plugin.getArtifactId() ) );
+            plugin.setVersion( (String) helper.evaluate( plugin.getVersion() ) );
+        }
+        catch ( ExpressionEvaluationException e )
+        {
+            // this should have gone already before
+        }
+    }
+    
+    private void resolve( ReportPlugin plugin )
+    {
+        try
+        {
+            plugin.setGroupId( (String) helper.evaluate( plugin.getGroupId() ) );
+            plugin.setArtifactId( (String) helper.evaluate( plugin.getArtifactId() ) );
+            plugin.setVersion( (String) helper.evaluate( plugin.getVersion() ) );
+        }
+        catch ( ExpressionEvaluationException e )
+        {
+            // this should have gone already before
+        }
+    }
+    
+    public List<Plugin> resolvePlugins( List<Plugin> plugins )
+    {
+        for( Plugin plugin : plugins )
+        {
+            resolve( plugin );
+        }
+        return plugins;
+    }
+    
+    public List<ReportPlugin> resolveReportPlugins( List<ReportPlugin> reportPlugins )
+    {
+        for( ReportPlugin plugin : reportPlugins )
+        {
+            resolve( plugin );
+        }
+        return reportPlugins;
+    }
+
+
 }

Added: maven/enforcer/trunk/maven-enforcer-plugin/src/it/mrm/repository/menforcer126_maven-plugin-1.0.pom
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/maven-enforcer-plugin/src/it/mrm/repository/menforcer126_maven-plugin-1.0.pom?rev=1491202&view=auto
==============================================================================
--- maven/enforcer/trunk/maven-enforcer-plugin/src/it/mrm/repository/menforcer126_maven-plugin-1.0.pom (added)
+++ maven/enforcer/trunk/maven-enforcer-plugin/src/it/mrm/repository/menforcer126_maven-plugin-1.0.pom Sun Jun  9 12:35:19 2013
@@ -0,0 +1,7 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.plugins.enforcer.its</groupId>
+  <artifactId>menforcer126_maven-plugin</artifactId>
+  <version>1.0</version>
+  <packaging>maven-plugin</packaging>
+</project>
\ No newline at end of file

Added: maven/enforcer/trunk/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml
URL: http://svn.apache.org/viewvc/maven/enforcer/trunk/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml?rev=1491202&view=auto
==============================================================================
--- maven/enforcer/trunk/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml (added)
+++ maven/enforcer/trunk/maven-enforcer-plugin/src/it/projects/require-plugin-versions-expressions/pom.xml Sun Jun  9 12:35:19 2013
@@ -0,0 +1,135 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>org.apache.maven.enforcer.its</groupId>
+  <artifactId>requirePluginVersions_Expressions</artifactId>
+  <version>1.0-SNAPSHOT</version>
+
+  <properties>
+    <expressionplugin.groupId>org.apache.maven.enforcer.its</expressionplugin.groupId>
+    <expressionplugin.artifactId>menforcer126_maven-plugin</expressionplugin.artifactId>
+    <expressionplugin.version>1.0</expressionplugin.version>
+  </properties>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-clean-plugin</artifactId>
+          <version>2.5</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-resources-plugin</artifactId>
+          <version>2.6</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <version>2.5.1</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-surefire-plugin</artifactId>
+          <version>2.12.4</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-jar-plugin</artifactId>
+          <version>2.4</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-install-plugin</artifactId>
+          <version>2.4</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-deploy-plugin</artifactId>
+          <version>2.7</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-site-plugin</artifactId>
+          <version>3.2</version>
+        </plugin>
+        <plugin>
+          <groupId>${expressionplugin.groupId}</groupId>
+          <artifactId>${expressionplugin.artifactId}</artifactId>
+          <version>${expressionplugin.version}</version>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-enforcer-plugin</artifactId>
+        <version>@project.version@</version>
+        <executions>
+          <execution>
+            <id>test</id>
+            <goals>
+              <goal>enforce</goal>
+            </goals>
+            <configuration>
+              <rules>
+                <requirePluginVersions>
+                  <banSnapshots>false</banSnapshots>
+                </requirePluginVersions>
+              </rules>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>${expressionplugin.groupId}</groupId>
+        <artifactId>${expressionplugin.artifactId}</artifactId>
+        <version>${expressionplugin.version}</version>
+      </plugin>
+    </plugins>
+  </build>
+
+  <reporting>
+    <plugins>
+      <plugin>
+        <groupId>${expressionplugin.groupId}</groupId>
+        <artifactId>${expressionplugin.artifactId}</artifactId>
+        <version>${expressionplugin.version}</version>
+      </plugin>
+    </plugins>
+  </reporting>
+
+  <profiles>
+    <profile>
+      <id>menforcer126</id>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>${expressionplugin.groupId}</groupId>
+              <artifactId>${expressionplugin.artifactId}</artifactId>
+              <version>${expressionplugin.version}</version>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+        <plugins>
+          <plugin>
+            <groupId>${expressionplugin.groupId}</groupId>
+            <artifactId>${expressionplugin.artifactId}</artifactId>
+            <version>${expressionplugin.version}</version>
+          </plugin>
+        </plugins>
+      </build>
+      <reporting>
+        <plugins>
+          <plugin>
+            <groupId>${expressionplugin.groupId}</groupId>
+            <artifactId>${expressionplugin.artifactId}</artifactId>
+            <version>${expressionplugin.version}</version>
+          </plugin>
+        </plugins>
+      </reporting>
+    </profile>
+  </profiles>
+
+</project>
\ No newline at end of file