You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@maven.apache.org by jd...@apache.org on 2005/06/13 16:49:50 UTC

svn commit: r190413 - /maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit /maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin /maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin /maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor

Author: jdcasey
Date: Mon Jun 13 07:49:49 2005
New Revision: 190413

URL: http://svn.apache.org/viewcvs?rev=190413&view=rev
Log:
o Adding ${plugin.*} expression support for mojos. Specifically, added support for ${plugin.artifacts} to retrieve the plugin's classpath artifacts. NOTE: There may be artifacts which are FILTERED by the resolution process, since they are provided in the maven distro. NOT SURE HOW BEST TO RESOLVE THAT...but it'll cause problems with people forking certain mojos, undoubtedly.

May resolve: MNG-455


Modified:
    maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
    maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
    maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
    maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java

Modified: maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java?rev=190413&r1=190412&r2=190413&view=diff
==============================================================================
--- maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java (original)
+++ maven/components/trunk/maven-core-it-plugin/src/main/java/org/apache/maven/plugin/coreit/CoreItMojo.java Mon Jun 13 07:49:49 2005
@@ -22,6 +22,7 @@
 import java.io.IOException;
 import java.io.File;
 import java.io.FileWriter;
+import java.util.List;
 
 /**
  * @goal touch
@@ -38,6 +39,12 @@
      * @required
      */
     private String outputDirectory;
+
+    /** Test setting of plugin-artifacts on the PluginDescriptor instance.
+     * @parameter expression="${plugin.artifacts}"
+     * @required
+     */
+    private List pluginArtifacts;
 
     /**
      * @parameter expression="target/test-basedir-alignment"

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=190413&r1=190412&r2=190413&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Mon Jun 13 07:49:49 2005
@@ -185,7 +185,6 @@
         // TODO: this should be possibly outside
         if ( version == null )
         {
-
             Plugin pluginConfig = null;
 
             for ( Iterator it = project.getBuildPlugins().iterator(); it.hasNext(); )
@@ -299,6 +298,12 @@
             }
 
             container.createChildContainer( pluginKey, files, Collections.EMPTY_MAP, Collections.singletonList( this ) );
+            
+            // this plugin's descriptor should have been discovered by now, so we should be able to circle
+            // around and set the artifacts.
+            PluginDescriptor addedPlugin = (PluginDescriptor) pluginDescriptors.get( pluginKey );
+
+            addedPlugin.setArtifacts( new ArrayList( resolved.values() ) );
         }
         finally
         {
@@ -413,8 +418,11 @@
             //            PlexusConfiguration mergedConfiguration = mergeConfiguration( pomConfiguration,
             //                                                                          mojoDescriptor.getConfiguration() );
 
-            ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, pathTranslator,
+            ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session,
+                                                                                              pluginDescriptor,
+                                                                                              pathTranslator,
                                                                                               getLogger() );
+            
             checkRequiredParameters( mojoDescriptor, mergedConfiguration, expressionEvaluator, plugin );
 
             populatePluginFields( plugin, mojoDescriptor, mergedConfiguration, pluginContainer, expressionEvaluator );

Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java?rev=190413&r1=190412&r2=190413&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginParameterExpressionEvaluator.java Mon Jun 13 07:49:49 2005
@@ -17,6 +17,7 @@
  */
 
 import org.apache.maven.execution.MavenSession;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.path.PathTranslator;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
 import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluator;
@@ -39,9 +40,12 @@
 
     private final Logger logger;
 
-    public PluginParameterExpressionEvaluator( MavenSession context, PathTranslator pathTranslator, Logger logger )
+    private final PluginDescriptor pluginDescriptor;
+
+    public PluginParameterExpressionEvaluator( MavenSession context, PluginDescriptor pluginDescriptor, PathTranslator pathTranslator, Logger logger )
     {
         this.context = context;
+        this.pluginDescriptor = pluginDescriptor;
         this.pathTranslator = pathTranslator;
         this.logger = logger;
     }
@@ -99,6 +103,30 @@
                 else
                 {
                     value = ReflectionValueExtractor.evaluate( expression.substring( 1 ), context.getProject() );
+                }
+            }
+            catch ( Exception e )
+            {
+                // TODO: don't catch exception
+                throw new ExpressionEvaluationException( "Error evaluating plugin parameter expression: " + expression,
+                                                         e );
+            }
+        }
+        else if ( expression.startsWith( "plugin" ) )
+        {
+            try
+            {
+                int pathSeparator = expression.indexOf( "/" );
+
+                if ( pathSeparator > 0 )
+                {
+                    String pathExpression = expression.substring( 1, pathSeparator );
+                    value = ReflectionValueExtractor.evaluate( pathExpression, pluginDescriptor );
+                    value = value + expression.substring( pathSeparator );
+                }
+                else
+                {
+                    value = ReflectionValueExtractor.evaluate( expression.substring( 1 ), pluginDescriptor );
                 }
             }
             catch ( Exception e )

Modified: maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java?rev=190413&r1=190412&r2=190413&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java (original)
+++ maven/components/trunk/maven-core/src/test/java/org/apache/maven/plugin/PluginParameterExpressionEvaluatorTest.java Mon Jun 13 07:49:49 2005
@@ -16,12 +16,15 @@
  * limitations under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.DefaultArtifact;
 import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
 import org.apache.maven.execution.MavenSession;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.Model;
 import org.apache.maven.monitor.event.DefaultEventDispatcher;
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.settings.Settings;
 import org.codehaus.plexus.PlexusContainer;
@@ -30,6 +33,7 @@
 
 import java.io.File;
 import java.util.Collections;
+import java.util.List;
 
 /**
  * @author <a href="mailto:jason@maven.org">Jason van Zyl </a>
@@ -53,7 +57,7 @@
         MavenProject project = new MavenProject( model );
         project.setFile( new File( "pom.xml" ).getCanonicalFile() );
 
-        ExpressionEvaluator expressionEvaluator = createExpressionEvaluator( project );
+        ExpressionEvaluator expressionEvaluator = createExpressionEvaluator( project, null );
 
         Object value = expressionEvaluator.evaluate( "${project.build.directory}/classes" );
         String actual = new File( value.toString() ).getCanonicalPath();
@@ -61,8 +65,7 @@
         assertEquals( expected, actual );
     }
 
-    private static MavenSession createSession( MavenProject project, PlexusContainer container,
-                                               ArtifactRepository repo )
+    private static MavenSession createSession( MavenProject project, PlexusContainer container, ArtifactRepository repo )
     {
         return new MavenSession( project, container, new Settings(), repo, new DefaultEventDispatcher(),
                                  Collections.EMPTY_LIST );
@@ -71,7 +74,7 @@
     public void testLocalRepositoryExtraction()
         throws Exception
     {
-        ExpressionEvaluator expressionEvaluator = createExpressionEvaluator( createDefaultProject() );
+        ExpressionEvaluator expressionEvaluator = createExpressionEvaluator( createDefaultProject(), null );
         Object value = expressionEvaluator.evaluate( "${localRepository}" );
 
         assertEquals( "local", ( (ArtifactRepository) value ).getId() );
@@ -87,19 +90,43 @@
         Model model = new Model();
         model.setBuild( build );
 
-        ExpressionEvaluator expressionEvaluator = createExpressionEvaluator( new MavenProject( model ) );
+        ExpressionEvaluator expressionEvaluator = createExpressionEvaluator( new MavenProject( model ), null );
 
         Object value = expressionEvaluator.evaluate( "${project.build.directory}/${project.build.finalName}" );
 
         assertEquals( "expected-directory/expected-finalName", value );
     }
 
+    public void testShouldExtractPluginArtifacts()
+        throws Exception
+    {
+        PluginDescriptor pd = new PluginDescriptor();
+
+        Artifact artifact = new DefaultArtifact( "testGroup", "testArtifact", "1.0", Artifact.SCOPE_COMPILE, "jar" );
+
+        pd.setArtifacts( Collections.singletonList( artifact ) );
+
+        ExpressionEvaluator ee = createExpressionEvaluator( createDefaultProject(), pd );
+
+        Object value = ee.evaluate( "${plugin.artifacts}" );
+
+        assertTrue( value instanceof List );
+
+        List artifacts = (List) value;
+
+        assertEquals( 1, artifacts.size() );
+
+        Artifact result = (Artifact) artifacts.get( 0 );
+
+        assertEquals( "testGroup", result.getGroupId() );
+    }
+
     private MavenProject createDefaultProject()
     {
         return new MavenProject( new Model() );
     }
 
-    private ExpressionEvaluator createExpressionEvaluator( MavenProject project )
+    private ExpressionEvaluator createExpressionEvaluator( MavenProject project, PluginDescriptor pluginDescriptor )
         throws Exception
     {
         ArtifactRepositoryLayout repoLayout = (ArtifactRepositoryLayout) lookup( ArtifactRepositoryLayout.ROLE,
@@ -110,8 +137,8 @@
         PlexusContainer container = getContainer();
         MavenSession session = createSession( project, container, repo );
 
-        ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, null,
-                                                                                          container.getLogger() );
+        ExpressionEvaluator expressionEvaluator = new PluginParameterExpressionEvaluator( session, pluginDescriptor,
+                                                                                          null, container.getLogger() );
         return expressionEvaluator;
     }
 }

Modified: maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java
URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java?rev=190413&r1=190412&r2=190413&view=diff
==============================================================================
--- maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java (original)
+++ maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java Mon Jun 13 07:49:49 2005
@@ -40,6 +40,8 @@
     private String source;
 
     private boolean inheritedByDefault = true;
+    
+    private List artifacts;
 
     // ----------------------------------------------------------------------
     //
@@ -188,6 +190,16 @@
     public void setInheritedByDefault( boolean inheritedByDefault )
     {
         this.inheritedByDefault = inheritedByDefault;
+    }
+    
+    public List getArtifacts()
+    {
+        return artifacts;
+    }
+
+    public void setArtifacts( List artifacts )
+    {
+        this.artifacts = artifacts;
     }
 
     public boolean equals( Object object )



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