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>