brett 2005/04/08 02:54:19
Modified: maven-core/src/main/java/org/apache/maven/lifecycle Tag:
MAVEN-2_0-ALPHA_1-branch
DefaultLifecycleExecutor.java
Log:
need to look for pluginManagement sections in the project, parent and super
model to be able to have versions other than 1.0-SNAPSHOT for non configured
plugins.
Revision Changes Path
No revision
No revision
1.31.2.1 +84 -21
maven-components/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
Index: DefaultLifecycleExecutor.java
===================================================================
RCS file:
/home/cvs/maven-components/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java,v
retrieving revision 1.31
retrieving revision 1.31.2.1
diff -u -r1.31 -r1.31.2.1
--- DefaultLifecycleExecutor.java 24 Mar 2005 13:05:36 -0000 1.31
+++ DefaultLifecycleExecutor.java 8 Apr 2005 09:54:19 -0000 1.31.2.1
@@ -16,14 +16,17 @@
* limitations under the License.
*/
+import org.apache.maven.MavenConstants;
import org.apache.maven.artifact.handler.ArtifactHandler;
import org.apache.maven.artifact.handler.manager.ArtifactHandlerManager;
import org.apache.maven.artifact.resolver.ArtifactResolver;
import org.apache.maven.execution.MavenExecutionResponse;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Goal;
+import org.apache.maven.model.Model;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginManagement;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
import org.apache.maven.monitor.event.EventDispatcher;
import org.apache.maven.monitor.event.MavenEvents;
import org.apache.maven.plugin.AbstractPlugin;
@@ -31,11 +34,15 @@
import org.apache.maven.plugin.PluginManager;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.apache.maven.project.DefaultMavenProjectBuilder;
import org.apache.maven.project.MavenProject;
import org.apache.maven.project.MavenProjectBuilder;
import org.codehaus.plexus.logging.AbstractLogEnabled;
import org.codehaus.plexus.logging.Logger;
+import org.codehaus.plexus.personality.plexus.lifecycle.phase.Initializable;
+import java.io.InputStreamReader;
+import java.net.URL;
import java.util.Date;
import java.util.HashMap;
import java.util.Iterator;
@@ -49,7 +56,7 @@
*/
public class DefaultLifecycleExecutor
extends AbstractLogEnabled
- implements LifecycleExecutor
+ implements LifecycleExecutor, Initializable
{
// ----------------------------------------------------------------------
// Components
@@ -65,6 +72,9 @@
private List phases;
+ // TODO: remove
+ private Model superModel;
+
// ----------------------------------------------------------------------
//
// ----------------------------------------------------------------------
@@ -114,14 +124,6 @@
artifactHandler.additionalPlugin() );
injectHandlerPluginConfiguration( project,
additionalPluginGroupId, additionalPluginArtifactId );
-
- Plugin plugin = new Plugin();
-
- plugin.setGroupId( additionalPluginGroupId );
-
- plugin.setArtifactId( additionalPluginArtifactId );
-
- processPluginPhases( plugin, session, phaseMap );
}
}
@@ -161,33 +163,73 @@
private void injectHandlerPluginConfiguration( MavenProject project,
String groupId, String artifactId )
{
- PluginManagement pluginManagement = project.getPluginManagement();
+ // TODO: this is a bit of a hack to get the version from plugin
management - please fix
- if ( pluginManagement != null )
- {
- List pluginList = pluginManagement.getPlugins();
+ Plugin plugin = findPlugin( project.getPlugins(), groupId,
artifactId );
- Plugin handlerPlugin = null;
+ if ( plugin == null )
+ {
+ plugin = new Plugin();
+ plugin.setGroupId( groupId );
+ plugin.setArtifactId( artifactId );
+ project.addPlugin( plugin );
+ }
- for ( Iterator it = pluginList.iterator(); it.hasNext(); )
+ if ( plugin.getVersion() == null )
+ {
+ while ( project != null )
{
- Plugin plugin = (Plugin) it.next();
+ PluginManagement pluginManagement =
project.getPluginManagement();
- if ( groupId.equals( plugin.getGroupId() ) &&
artifactId.equals( plugin.getArtifactId() ) )
+ if ( pluginManagement != null )
{
- handlerPlugin = plugin;
+ Plugin management = findPlugin(
pluginManagement.getPlugins(), groupId, artifactId );
+ if ( management != null && management.getVersion() !=
null )
+ {
+ plugin.setVersion( management.getVersion() );
+ break;
+ }
+ }
+ project = project.getParent();
+ }
+
+ if ( plugin.getVersion() == null )
+ {
+ PluginManagement pluginManagement =
superModel.getBuild().getPluginManagement();
- break;
+ if ( pluginManagement != null )
+ {
+ Plugin management = findPlugin(
pluginManagement.getPlugins(), groupId, artifactId );
+ if ( management != null && management.getVersion() !=
null )
+ {
+ plugin.setVersion( management.getVersion() );
+ }
}
}
- if ( handlerPlugin != null )
+ if ( plugin.getVersion() == null )
{
- project.addPlugin( handlerPlugin );
+ // TODO: this has probably supplanted the default in the
plugin manager
+ plugin.setVersion( "1.0-SNAPSHOT" );
}
}
}
+ private static Plugin findPlugin( List plugins, String groupId, String
artifactId )
+ {
+ Plugin plugin = null;
+
+ for ( Iterator i = plugins.iterator(); i.hasNext() && plugin ==
null; )
+ {
+ Plugin p = (Plugin) i.next();
+ if ( groupId.equals( p.getGroupId() ) && artifactId.equals(
p.getArtifactId() ) )
+ {
+ plugin = p;
+ }
+ }
+ return plugin;
+ }
+
// TODO: don't throw Exception
private void processPluginConfiguration( MavenProject project,
MavenSession mavenSession, Map phaseMap )
throws Exception
@@ -319,6 +361,19 @@
if ( mojoDescriptor == null )
{
+ String groupId = AbstractPlugin.getDefaultPluginGroupId();
+
+ String pluginId = task;
+
+ if ( pluginId.indexOf( ":" ) > 0 )
+ {
+ pluginId = pluginId.substring( 0, pluginId.indexOf( ":" ) );
+ }
+
+ String artifactId = AbstractPlugin.getDefaultPluginArtifactId(
pluginId );
+
+ injectHandlerPluginConfiguration( session.getProject(), groupId,
artifactId );
+
pluginManager.verifyPluginForGoal( task, session );
mojoDescriptor = pluginManager.getMojoDescriptor( task );
@@ -401,4 +456,12 @@
{
return phases;
}
+
+ public void initialize()
+ throws Exception
+ {
+ // TODO: get rid of this and the interface...
+ URL url = DefaultMavenProjectBuilder.class.getResource( "pom-" +
MavenConstants.MAVEN_MODEL_VERSION + ".xml" );
+ superModel = new MavenXpp3Reader().read( new InputStreamReader(
url.openStream() ) );
+ }
}
\ No newline at end of file