Author: olamy
Date: Sat Aug 1 22:01:51 2009
New Revision: 799937
URL: http://svn.apache.org/viewvc?rev=799937&view=rev
Log:
start working
Issue id: MNG-4162
Modified:
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
maven/components/branches/MNG-4162/pom.xml
Modified:
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=799937&r1=799936&r2=799937&view=diff
==============================================================================
---
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
(original)
+++
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
Sat Aug 1 22:01:51 2009
@@ -491,7 +491,7 @@
throw new PluginManagerException( plugin, "Could not create ClassRealm
for plugin " + baseRealmId, (Throwable) null );
}
- private Mojo getConfiguredMojo( MavenSession session, MavenProject
project, MojoExecution mojoExecution, ClassRealm pluginRealm )
+ public Mojo getConfiguredMojo( MavenSession session, MavenProject project,
MojoExecution mojoExecution, ClassRealm pluginRealm )
throws PluginConfigurationException, PluginManagerException
{
MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
@@ -564,6 +564,81 @@
}
}
+
+ public Object getConfiguredMojo(Class<?> clazz, MavenSession session,
MavenProject project, MojoExecution mojoExecution, ClassRealm pluginRealm )
+ throws PluginConfigurationException, PluginManagerException
+{
+ MojoDescriptor mojoDescriptor = mojoExecution.getMojoDescriptor();
+
+ PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor();
+
+ // We are forcing the use of the plugin realm for all lookups that might
occur during
+ // the lifecycle that is part of the lookup. Here we are specifically
trying to keep
+ // lookups that occur in contextualize calls in line with the right realm.
+ ClassRealm oldLookupRealm = container.setLookupRealm( pluginRealm );
+
+ ClassLoader oldClassLoader =
Thread.currentThread().getContextClassLoader();
+ Thread.currentThread().setContextClassLoader( pluginRealm );
+ container.setLookupRealm( pluginRealm );
+
+ try
+ {
+ Object mojo;
+
+ try
+ {
+ mojo = container.lookup( clazz, mojoDescriptor.getRoleHint() );
+ }
+ catch ( ComponentLookupException e )
+ {
+ throw new PluginContainerException( mojoDescriptor, pluginRealm,
"Unable to find the mojo '"
+ + mojoDescriptor.getGoal() + "' in the plugin '" +
pluginDescriptor.getId() + "'", e );
+ }
+
+ if ( mojo instanceof ContextEnabled )
+ {
+ //TODO: find somewhere better to put the plugin context.
+ Map<String, Object> pluginContext = session.getPluginContext(
pluginDescriptor, project );
+
+ if ( pluginContext != null )
+ {
+ pluginContext.put( "project", project );
+
+ pluginContext.put( "pluginDescriptor", pluginDescriptor );
+
+ ( (ContextEnabled) mojo ).setPluginContext( pluginContext );
+ }
+ }
+
+ // FIXME
+ //mojo.setLog( new DefaultLog( logger ) );
+
+ Xpp3Dom dom = mojoExecution.getConfiguration();
+
+ PlexusConfiguration pomConfiguration;
+
+ if ( dom == null )
+ {
+ pomConfiguration = new XmlPlexusConfiguration( "configuration" );
+ }
+ else
+ {
+ pomConfiguration = new XmlPlexusConfiguration( dom );
+ }
+
+ ExpressionEvaluator expressionEvaluator = new
PluginParameterExpressionEvaluator( session, mojoExecution );
+
+ populatePluginFields( (Mojo) mojo, mojoDescriptor, pluginRealm,
pomConfiguration, expressionEvaluator );
+
+ return mojo;
+ }
+ finally
+ {
+ Thread.currentThread().setContextClassLoader( oldClassLoader );
+ container.setLookupRealm( oldLookupRealm );
+ }
+
+}
// ----------------------------------------------------------------------
// Mojo Parameter Handling
Modified:
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL:
http://svn.apache.org/viewvc/maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=799937&r1=799936&r2=799937&view=diff
==============================================================================
---
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
(original)
+++
maven/components/branches/MNG-4162/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
Sat Aug 1 22:01:51 2009
@@ -22,6 +22,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;
/**
@@ -30,20 +31,30 @@
public interface PluginManager
{
// igorf: Way too many declared exceptions!
- PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository
localRepository, List<ArtifactRepository> remoteRepositories )
- throws PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException, CycleDetectedInPluginGraphException,
InvalidPluginDescriptorException;
+ PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository
localRepository,
+ List<ArtifactRepository> remoteRepositories )
+ throws PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException,
+ CycleDetectedInPluginGraphException, InvalidPluginDescriptorException;
// igorf: Way too many declared exceptions!
- MojoDescriptor getMojoDescriptor( String groupId, String artifactId,
String version, String goal, ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories )
- throws PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException, CycleDetectedInPluginGraphException,
MojoNotFoundException, InvalidPluginDescriptorException;
+ MojoDescriptor getMojoDescriptor( String groupId, String artifactId,
String version, String goal,
+ ArtifactRepository localRepository,
List<ArtifactRepository> remoteRepositories )
+ throws PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException,
+ CycleDetectedInPluginGraphException, MojoNotFoundException,
InvalidPluginDescriptorException;
// igorf: Way too many declared exceptions!
- MojoDescriptor getMojoDescriptor( Plugin plugin, String goal,
ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories
)
- throws PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException, CycleDetectedInPluginGraphException,
MojoNotFoundException, InvalidPluginDescriptorException;
+ MojoDescriptor getMojoDescriptor( Plugin plugin, String goal,
ArtifactRepository localRepository,
+ List<ArtifactRepository>
remoteRepositories )
+ throws PluginNotFoundException, PluginResolutionException,
PluginDescriptorParsingException,
+ CycleDetectedInPluginGraphException, MojoNotFoundException,
InvalidPluginDescriptorException;
void executeMojo( MavenSession session, MojoExecution execution )
throws MojoFailureException, MojoExecutionException,
PluginConfigurationException, PluginManagerException;
- ClassRealm getPluginRealm( MavenSession session, PluginDescriptor
pluginDescriptor )
+ ClassRealm getPluginRealm( MavenSession session, PluginDescriptor
pluginDescriptor )
throws PluginManagerException;
+
+ Object getConfiguredMojo( Class<?> clazz, MavenSession session,
MavenProject project,
+ MojoExecution mojoExecution, ClassRealm
pluginRealm )
+ throws PluginConfigurationException, PluginManagerException;
}
\ No newline at end of file
Modified: maven/components/branches/MNG-4162/pom.xml
URL:
http://svn.apache.org/viewvc/maven/components/branches/MNG-4162/pom.xml?rev=799937&r1=799936&r2=799937&view=diff
==============================================================================
--- maven/components/branches/MNG-4162/pom.xml (original)
+++ maven/components/branches/MNG-4162/pom.xml Sat Aug 1 22:01:51 2009
@@ -450,12 +450,16 @@
</profile>
<profile>
<id>m2e</id>
+ <properties>
+ <m2BuildDirectory>target</m2BuildDirectory>
+ </properties>
<activation>
<property>
<name>m2e.version</name>
</property>
</activation>
<build>
+ <directory>${m2BuildDirectory}</directory>
<plugins>
<plugin>
<groupId>org.maven.ide.eclipse</groupId>