Author: jdcasey
Date: Tue Nov 27 09:59:22 2007
New Revision: 598720
URL: http://svn.apache.org/viewvc?rev=598720&view=rev
Log:
Wiring plugin-as-extension back into the new extension scanning stuff.
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.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/version/DefaultPluginVersionManager.java
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultBuildExtensionScanner.java
Tue Nov 27 09:59:22 2007
@@ -25,6 +25,7 @@
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
import org.apache.maven.model.Parent;
+import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.loader.PluginLoader;
import org.apache.maven.profiles.ProfileManager;
import org.apache.maven.profiles.activation.DefaultProfileActivationContext;
@@ -273,6 +274,9 @@
private void checkModelBuildForExtensions( Model model,
MavenExecutionRequest request, List remoteRepositories )
throws ExtensionScanningException
{
+ // FIXME: Fix the log level here.
+ getLogger().info( "Checking " + model.getId() + " for extensions." );
+
Build build = model.getBuild();
if ( build != null )
@@ -300,6 +304,31 @@
{
throw new ExtensionScanningException( "Cannot resolve
pre-scanned extension artifact: "
+ extension.getGroupId() + ":" +
extension.getArtifactId() + ": " + e.getMessage(), model, extension, e );
+ }
+ }
+ }
+
+ List plugins = build.getPlugins();
+
+ if ( ( plugins != null ) && !plugins.isEmpty() )
+ {
+ for ( Iterator extensionIterator = plugins.iterator();
extensionIterator.hasNext(); )
+ {
+ Plugin plugin = (Plugin) extensionIterator.next();
+
+ if ( plugin.isExtensions() )
+ {
+ getLogger().debug( "Adding plugin: " + plugin.getKey()
+ " as an extension(from model: " + model.getId() + ")" );
+
+ try
+ {
+ extensionManager.addPluginAsExtension( plugin,
model, remoteRepositories, request );
+ }
+ catch ( ExtensionManagerException e )
+ {
+ throw new ExtensionScanningException( "Cannot
resolve pre-scanned plugin artifact (for use as an extension): "
+ + plugin.getKey() + ": " + e.getMessage(),
model, plugin, e );
+ }
}
}
}
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/DefaultExtensionManager.java
Tue Nov 27 09:59:22 2007
@@ -63,6 +63,7 @@
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable;
+import java.util.Collections;
import java.util.Iterator;
import java.util.LinkedHashSet;
import java.util.List;
@@ -160,6 +161,8 @@
MavenExecutionRequest request )
throws ExtensionManagerException
{
+ getLogger().debug( "Adding plugin: " + plugin.getKey() + " as an
extension." );
+
Parent originatingParent = originatingModel.getParent();
String groupId = originatingModel.getGroupId();
@@ -178,9 +181,17 @@
version = originatingParent.getVersion();
}
+ String pluginVersion = plugin.getVersion();
+
+ // TODO: Forbid this?
+ if ( pluginVersion == null )
+ {
+ pluginVersion = Artifact.RELEASE_VERSION;
+ }
+
Artifact pluginArtifact = artifactFactory.createBuildArtifact(
plugin.getGroupId(),
plugin.getArtifactId(),
-
plugin.getVersion(), "maven-plugin" );
+
pluginVersion, "maven-plugin" );
getLogger().debug( "Starting extension-addition process for: " +
pluginArtifact );
@@ -195,6 +206,10 @@
&& coreFilter.include( pluginArtifact ) )
{
MavenProject dummyProject = new MavenProject( originatingModel );
+
+ dummyProject.setPluginArtifactRepositories( remoteRepositories );
+ dummyProject.setRemoteArtifactRepositories( Collections.EMPTY_LIST
);
+
EventDispatcher dispatcher = new DefaultEventDispatcher(
request.getEventMonitors() );
MavenSession session = new MavenSession( container, request,
dispatcher, null );
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionManager.java
Tue Nov 27 09:59:22 2007
@@ -22,6 +22,7 @@
import org.apache.maven.execution.MavenExecutionRequest;
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
import org.apache.maven.project.MavenProject;
import java.util.List;
@@ -34,12 +35,22 @@
*/
public interface ExtensionManager
{
- void addExtension( Extension extension, MavenProject project,
MavenExecutionRequest request )
+ void addExtension( Extension extension,
+ MavenProject project,
+ MavenExecutionRequest request )
throws ExtensionManagerException;
void registerWagons();
- void addExtension( Extension extension, Model originatingModel, List
remoteRepositories,
+ void addExtension( Extension extension,
+ Model originatingModel,
+ List remoteRepositories,
MavenExecutionRequest request )
+ throws ExtensionManagerException;
+
+ void addPluginAsExtension( Plugin plugin,
+ Model originatingModel,
+ List remoteRepositories,
+ MavenExecutionRequest request )
throws ExtensionManagerException;
}
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/extension/ExtensionScanningException.java
Tue Nov 27 09:59:22 2007
@@ -2,6 +2,7 @@
import org.apache.maven.model.Extension;
import org.apache.maven.model.Model;
+import org.apache.maven.model.Plugin;
import org.apache.maven.project.ProjectBuildingException;
import org.apache.maven.project.interpolation.ModelInterpolationException;
@@ -76,6 +77,16 @@
{
super( message, cause );
this.pomFile = pomFile;
+ }
+
+ public ExtensionScanningException( String message,
+ Model model,
+ Plugin plugin,
+ ExtensionManagerException cause )
+ {
+ super( message, cause );
+ modelId = model.getId();
+ extensionId = plugin.getGroupId() + ":" + plugin.getArtifactId();
}
public File getPomFile()
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=598720&r1=598719&r2=598720&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
Tue Nov 27 09:59:22 2007
@@ -162,15 +162,20 @@
ArtifactNotFoundException, InvalidPluginException,
PluginManagerException, PluginNotFoundException,
PluginVersionNotFoundException
{
+ String pluginVersion = plugin.getVersion();
+
// TODO: this should be possibly outside
// All version-resolution logic has been moved to
DefaultPluginVersionManager.
- if ( plugin.getVersion() == null )
+ getLogger().debug( "Resolving plugin: " + plugin.getKey() + " with
version: " + pluginVersion );
+ if ( ( pluginVersion == null ) || Artifact.LATEST_VERSION.equals(
pluginVersion ) || Artifact.RELEASE_VERSION.equals( pluginVersion ) )
{
getLogger().debug( "Resolving version for plugin: " +
plugin.getKey() );
- String version = pluginVersionManager.resolvePluginVersion(
plugin.getGroupId(),
+ pluginVersion = pluginVersionManager.resolvePluginVersion(
plugin.getGroupId(),
plugin.getArtifactId(),
project, session );
- plugin.setVersion( version );
+ plugin.setVersion( pluginVersion );
+
+ getLogger().debug( "Resolved to version: " + pluginVersion );
}
return verifyVersionedPlugin( plugin, project, session );
@@ -379,8 +384,14 @@
if ( pluginDescriptor == null )
{
+ if ( ( pluginRealm != null ) && getLogger().isDebugEnabled() )
+ {
+ getLogger().debug( "Plugin Realm: " );
+ pluginRealm.display();
+ }
+
throw new IllegalStateException( "The PluginDescriptor for the
plugin "
- + projectPlugin.getKey() + "
was not found" );
+ + projectPlugin.getKey() + "
was not found. Should have been in realm: " + pluginRealm );
}
pluginDescriptor.setPluginArtifact( pluginArtifact );
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
(original)
+++
maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java
Tue Nov 27 09:59:22 2007
@@ -41,10 +41,8 @@
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.util.StringUtils;
-import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
-import java.util.Map;
public class DefaultPluginVersionManager
extends AbstractLogEnabled
@@ -85,6 +83,7 @@
{
// first pass...if the plugin is specified in the pom, try to retrieve
the version from there.
String version = getVersionFromPluginConfig( groupId, artifactId,
project, resolveAsReportPlugin );
+
getLogger().debug( "Version from POM: " + version );
// NOTE: We CANNOT check the current project version here, so delay it
until later.
@@ -107,7 +106,7 @@
// third pass...we're always checking for latest install/deploy, so
retrieve the version for LATEST metadata and
// also set that resolved version as the <useVersion/> in settings.xml.
- if ( StringUtils.isEmpty( version ) )
+ if ( StringUtils.isEmpty( version ) || Artifact.LATEST_VERSION.equals(
version ) )
{
// 1. resolve the version to be used
version = resolveMetaVersion( groupId, artifactId, project,
localRepository, Artifact.LATEST_VERSION );
@@ -116,7 +115,7 @@
// final pass...retrieve the version for RELEASE and also set that
resolved version as the <useVersion/>
// in settings.xml.
- if ( StringUtils.isEmpty( version ) )
+ if ( StringUtils.isEmpty( version ) ||
Artifact.RELEASE_VERSION.equals( version ) )
{
// 1. resolve the version to be used
version = resolveMetaVersion( groupId, artifactId, project,
localRepository, Artifact.RELEASE_VERSION );
@@ -143,7 +142,7 @@
{
if ( project.getReportPlugins() != null )
{
- for ( Iterator it = project.getReportPlugins().iterator();
it.hasNext() && version == null; )
+ for ( Iterator it = project.getReportPlugins().iterator();
it.hasNext() && ( version == null ); )
{
ReportPlugin plugin = (ReportPlugin) it.next();
@@ -158,7 +157,7 @@
{
if ( project.getBuildPlugins() != null )
{
- for ( Iterator it = project.getBuildPlugins().iterator();
it.hasNext() && version == null; )
+ for ( Iterator it = project.getBuildPlugins().iterator();
it.hasNext() && ( version == null ); )
{
Plugin plugin = (Plugin) it.next();
@@ -208,14 +207,14 @@
{
boolean pluginValid = false;
- while ( !pluginValid && artifactVersion != null )
+ while ( !pluginValid && ( artifactVersion != null ) )
{
pluginValid = true;
MavenProject pluginProject;
try
{
artifact = artifactFactory.createProjectArtifact( groupId,
artifactId, artifactVersion );
-
+
pluginProject = mavenProjectBuilder.buildFromRepository(
artifact, project.getPluginArtifactRepositories(), localRepository );
}
catch ( ProjectBuildingException e )
@@ -225,7 +224,7 @@
}
// if we don't have the required Maven version, then ignore an
update
- if ( pluginProject.getPrerequisites() != null &&
pluginProject.getPrerequisites().getMaven() != null )
+ if ( ( pluginProject.getPrerequisites() != null ) && (
pluginProject.getPrerequisites().getMaven() != null ) )
{
DefaultArtifactVersion requiredVersion =
new DefaultArtifactVersion(
pluginProject.getPrerequisites().getMaven() );
Modified:
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
URL:
http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=598720&r1=598719&r2=598720&view=diff
==============================================================================
---
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
(original)
+++
maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml
Tue Nov 27 09:59:22 2007
@@ -249,6 +249,9 @@
<implementation>org.apache.maven.extension.DefaultExtensionManager</implementation>
<requirements>
<requirement>
+ <role>org.apache.maven.plugin.PluginManager</role>
+ </requirement>
+ <requirement>
<role>org.apache.maven.ArtifactFilterManager</role>
</requirement>
<requirement>