mirror of
https://github.com/apache/maven.git
synced 2025-02-22 18:04:52 +00:00
o for milos' test i am now adding the component to the container programmatically so we don't need to manually stuff an artifact handler into
the artifact handler manager git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@587648 13f79535-47bb-0310-9956-ffa450edef68
This commit is contained in:
parent
90e62086d1
commit
7f8b8699a5
@ -1400,9 +1400,8 @@ public Object getPluginComponent( Plugin plugin,
|
|||||||
|
|
||||||
if ( pluginRealm == null )
|
if ( pluginRealm == null )
|
||||||
{
|
{
|
||||||
getLogger().warn(
|
getLogger().warn( "getPluginComponent(" + plugin + ", " + role + "): descriptor is missing classRealm" );
|
||||||
"getPluginComponent(" + plugin + ", " + role
|
|
||||||
+ "): descriptor is missing classRealm" );
|
|
||||||
pluginRealm = container.getLookupRealm();
|
pluginRealm = container.getLookupRealm();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,16 +1,17 @@
|
|||||||
package org.apache.maven.embedder;
|
package org.apache.maven.embedder;
|
||||||
|
|
||||||
import org.apache.maven.execution.MavenExecutionRequest;
|
import org.apache.maven.artifact.handler.ArtifactHandler;
|
||||||
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
import org.apache.maven.execution.DefaultMavenExecutionRequest;
|
||||||
|
import org.apache.maven.execution.MavenExecutionRequest;
|
||||||
import org.apache.maven.execution.MavenExecutionResult;
|
import org.apache.maven.execution.MavenExecutionResult;
|
||||||
import org.apache.maven.model.Plugin;
|
import org.apache.maven.model.Plugin;
|
||||||
import org.apache.maven.plugin.PluginManagerException;
|
import org.apache.maven.plugin.PluginManagerException;
|
||||||
import org.apache.maven.project.MavenProject;
|
import org.apache.maven.project.MavenProject;
|
||||||
import org.apache.maven.artifact.handler.ArtifactHandler;
|
import org.codehaus.plexus.component.repository.ComponentDescriptor;
|
||||||
|
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
|
||||||
|
|
||||||
import java.io.File;
|
import java.io.File;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.HashMap;
|
|
||||||
|
|
||||||
/** @author Jason van Zyl */
|
/** @author Jason van Zyl */
|
||||||
public class MavenEmbedderProjectWithExtensionReadingTest
|
public class MavenEmbedderProjectWithExtensionReadingTest
|
||||||
@ -24,7 +25,25 @@ public void testProjectWithExtensionsReading()
|
|||||||
|
|
||||||
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
|
||||||
|
|
||||||
MavenExecutionResult result = new ExtendableMavenEmbedder( classLoader ).readProjectWithDependencies( request );
|
MavenEmbedder embedder = new ExtendableMavenEmbedder( classLoader );
|
||||||
|
|
||||||
|
// Here we take the artifact handler and programmatically place it into the container
|
||||||
|
|
||||||
|
ComponentDescriptor cd = new ComponentDescriptor();
|
||||||
|
|
||||||
|
cd.setRole( ArtifactHandler.ROLE );
|
||||||
|
|
||||||
|
cd.setRoleHint( "mkleint" );
|
||||||
|
|
||||||
|
cd.setImplementation( MyArtifactHandler.class.getName() );
|
||||||
|
|
||||||
|
embedder.getPlexusContainer().addComponentDescriptor( cd );
|
||||||
|
|
||||||
|
// At this point the artifact handler will be inside the container and
|
||||||
|
// Maven internally will pick up the artifact handler and use it accordingly to
|
||||||
|
// create the classpath appropriately.
|
||||||
|
|
||||||
|
MavenExecutionResult result = embedder.readProjectWithDependencies( request );
|
||||||
|
|
||||||
assertNoExceptions( result );
|
assertNoExceptions( result );
|
||||||
|
|
||||||
@ -48,13 +67,17 @@ public ExtendableMavenEmbedder( ClassLoader classLoader )
|
|||||||
protected Map getPluginExtensionComponents( Plugin plugin )
|
protected Map getPluginExtensionComponents( Plugin plugin )
|
||||||
throws PluginManagerException
|
throws PluginManagerException
|
||||||
{
|
{
|
||||||
Map toReturn = new HashMap();
|
try
|
||||||
|
{
|
||||||
|
return getPlexusContainer().lookupMap( ArtifactHandler.ROLE );
|
||||||
|
}
|
||||||
|
catch ( ComponentLookupException e )
|
||||||
|
{
|
||||||
|
e.printStackTrace();
|
||||||
|
|
||||||
MyArtifactHandler handler = new MyArtifactHandler();
|
throw new PluginManagerException( plugin, null );
|
||||||
|
}
|
||||||
|
|
||||||
toReturn.put( "mkleint", handler );
|
|
||||||
|
|
||||||
return toReturn;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
protected void verifyPlugin( Plugin plugin,
|
protected void verifyPlugin( Plugin plugin,
|
||||||
@ -64,43 +87,4 @@ protected void verifyPlugin( Plugin plugin,
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
private class MyArtifactHandler
|
|
||||||
implements ArtifactHandler
|
|
||||||
{
|
|
||||||
|
|
||||||
public String getExtension()
|
|
||||||
{
|
|
||||||
return "jar";
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getDirectory()
|
|
||||||
{
|
|
||||||
throw new UnsupportedOperationException( "Not supported yet." );
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getClassifier()
|
|
||||||
{
|
|
||||||
return null;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getPackaging()
|
|
||||||
{
|
|
||||||
return "mkleint";
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isIncludesDependencies()
|
|
||||||
{
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
|
||||||
public String getLanguage()
|
|
||||||
{
|
|
||||||
return "java";
|
|
||||||
}
|
|
||||||
|
|
||||||
public boolean isAddedToClasspath()
|
|
||||||
{
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@ -0,0 +1,43 @@
|
|||||||
|
package org.apache.maven.embedder;
|
||||||
|
|
||||||
|
import org.apache.maven.artifact.handler.ArtifactHandler;
|
||||||
|
|
||||||
|
/** @author Jason van Zyl */
|
||||||
|
public class MyArtifactHandler
|
||||||
|
implements ArtifactHandler
|
||||||
|
{
|
||||||
|
public String getExtension()
|
||||||
|
{
|
||||||
|
return "jar";
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDirectory()
|
||||||
|
{
|
||||||
|
throw new UnsupportedOperationException( "Not supported yet." );
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getClassifier()
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPackaging()
|
||||||
|
{
|
||||||
|
return "mkleint";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isIncludesDependencies()
|
||||||
|
{
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getLanguage()
|
||||||
|
{
|
||||||
|
return "java";
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean isAddedToClasspath()
|
||||||
|
{
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
}
|
Loading…
x
Reference in New Issue
Block a user