You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by if...@apache.org on 2014/12/26 19:28:24 UTC

maven git commit: MNG-5742 fixed null ComponentDescriptor#realm for extensions plugins

Repository: maven
Updated Branches:
  refs/heads/master 6f1571a1a -> 6ab41ee8d


MNG-5742 fixed null ComponentDescriptor#realm for extensions plugins

Signed-off-by: Igor Fedorenko <if...@apache.org>


Project: http://git-wip-us.apache.org/repos/asf/maven/repo
Commit: http://git-wip-us.apache.org/repos/asf/maven/commit/6ab41ee8
Tree: http://git-wip-us.apache.org/repos/asf/maven/tree/6ab41ee8
Diff: http://git-wip-us.apache.org/repos/asf/maven/diff/6ab41ee8

Branch: refs/heads/master
Commit: 6ab41ee8d3f82af456031b13d3a3e1d5834043dc
Parents: 6f1571a
Author: Igor Fedorenko <if...@apache.org>
Authored: Fri Dec 26 13:27:46 2014 -0500
Committer: Igor Fedorenko <if...@apache.org>
Committed: Fri Dec 26 13:27:51 2014 -0500

----------------------------------------------------------------------
 .../internal/DefaultMavenPluginManager.java     |  9 ++++--
 .../apache/maven/plugin/PluginManagerTest.java  | 21 +++++++++++++
 .../pom.xml                                     | 31 ++++++++++++++++++++
 3 files changed, 59 insertions(+), 2 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/maven/blob/6ab41ee8/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
----------------------------------------------------------------------
diff --git a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
index c815920..5704276 100644
--- a/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
+++ b/maven-core/src/main/java/org/apache/maven/plugin/internal/DefaultMavenPluginManager.java
@@ -390,8 +390,6 @@ public class DefaultMavenPluginManager
         RepositorySystemSession repositorySession = session.getRepositorySession();
         if ( plugin.isExtensions() )
         {
-            // TODO discover components in #setupExtensionsRealm
-
             ExtensionRealmCache.CacheRecord extensionRecord;
             try
             {
@@ -406,6 +404,11 @@ public class DefaultMavenPluginManager
 
             pluginRealm = extensionRecord.realm;
             pluginArtifacts = extensionRecord.artifacts;
+
+            for ( ComponentDescriptor<?> componentDescriptor : pluginDescriptor.getComponents() )
+            {
+                componentDescriptor.setRealm( pluginRealm );
+            }
         }
         else
         {
@@ -877,6 +880,8 @@ public class DefaultMavenPluginManager
         {
             ClassRealm extensionRealm = classRealmManager.createExtensionRealm( plugin, toAetherArtifacts( artifacts ) );
 
+            // TODO figure out how to use the same PluginDescriptor when running mojos
+
             PluginDescriptor pluginDescriptor = null;
             if ( plugin.isExtensions() && !artifacts.isEmpty() )
             {

http://git-wip-us.apache.org/repos/asf/maven/blob/6ab41ee8/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
----------------------------------------------------------------------
diff --git a/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java b/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
index bc87702..025e772 100644
--- a/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
+++ b/maven-core/src/test/java/org/apache/maven/plugin/PluginManagerTest.java
@@ -30,6 +30,7 @@ import org.apache.maven.model.Plugin;
 import org.apache.maven.plugin.descriptor.MojoDescriptor;
 import org.apache.maven.plugin.descriptor.PluginDescriptor;
 import org.apache.maven.project.MavenProject;
+import org.codehaus.plexus.classworlds.realm.ClassRealm;
 import org.codehaus.plexus.component.annotations.Requirement;
 import org.codehaus.plexus.component.repository.ComponentDescriptor;
 
@@ -318,4 +319,24 @@ public class PluginManagerTest
             assertNotNull( descriptor.getImplementationClass() );
         }
     }
+
+    public void testBuildExtensionsPluginLoading()
+        throws Exception
+    {
+        RepositoryRequest repositoryRequest = new DefaultRepositoryRequest();
+        repositoryRequest.setLocalRepository( getLocalRepository() );
+        repositoryRequest.setRemoteRepositories( getPluginArtifactRepositories() );
+
+        // prime realm cache
+        MavenSession session = createMavenSession( getProject( "project-with-build-extensions-plugin" ) );
+        MavenProject project = session.getCurrentProject();
+        Plugin plugin = project.getPlugin( "org.apache.maven.its.plugins:maven-it-plugin" );
+
+        PluginDescriptor pluginDescriptor =
+            pluginManager.loadPlugin( plugin, session.getCurrentProject().getRemotePluginRepositories(),
+                                      session.getRepositorySession() );
+        ClassRealm pluginRealm = pluginManager.getPluginRealm( session, pluginDescriptor );
+        
+        assertEquals(pluginRealm, pluginDescriptor.getComponents().get(0).getRealm());
+    }
 }

http://git-wip-us.apache.org/repos/asf/maven/blob/6ab41ee8/maven-core/src/test/projects/plugin-manager/project-with-build-extensions-plugin/pom.xml
----------------------------------------------------------------------
diff --git a/maven-core/src/test/projects/plugin-manager/project-with-build-extensions-plugin/pom.xml b/maven-core/src/test/projects/plugin-manager/project-with-build-extensions-plugin/pom.xml
new file mode 100644
index 0000000..d4e34a5
--- /dev/null
+++ b/maven-core/src/test/projects/plugin-manager/project-with-build-extensions-plugin/pom.xml
@@ -0,0 +1,31 @@
+<project>
+  <modelVersion>4.0.0</modelVersion>
+
+  <groupId>org.apache.maven.test</groupId>
+  <artifactId>project-with-build-extensions-plugin</artifactId>
+  <version>1.0</version>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.its.plugins</groupId>
+        <artifactId>maven-it-plugin</artifactId>
+        <version>0.1</version>
+        <extensions>true</extensions>
+        <executions>
+          <execution>
+            <id>load</id>
+            <phase>validate</phase>
+            <configuration>
+              <resourcePaths>maven-core-it.properties</resourcePaths>
+              <pluginClassLoaderOutput>target/pcl.properties</pluginClassLoaderOutput>
+            </configuration>
+            <goals>
+              <goal>load</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+</project>