Author: brett Date: Thu Jul 21 22:07:47 2005 New Revision: 220239 URL: http://svn.apache.org/viewcvs?rev=220239&view=rev Log: PR: MNG-625 allow a plugin to specify the minimum Maven version (will apply for both building and its execution - this should be separated later).
If you are running an older version then it will not prompt to update when found, and will fail if it is encountered with a hardcoded version. Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java (with props) maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java (with props) Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.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 maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java?rev=220239&r1=220238&r2=220239&view=diff ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java (original) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/DefaultMaven.java Thu Jul 21 22:07:47 2005 @@ -19,11 +19,11 @@ import org.apache.maven.artifact.manager.WagonManager; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.resolver.ArtifactResolutionException; -import org.apache.maven.artifact.versioning.ArtifactVersion; import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.execution.MavenExecutionRequest; import org.apache.maven.execution.MavenExecutionResponse; import org.apache.maven.execution.MavenSession; +import org.apache.maven.execution.RuntimeInformation; import org.apache.maven.lifecycle.LifecycleExecutionException; import org.apache.maven.lifecycle.LifecycleExecutor; import org.apache.maven.model.Profile; @@ -53,19 +53,16 @@ import org.codehaus.plexus.context.ContextException; import org.codehaus.plexus.logging.AbstractLogEnabled; import org.codehaus.plexus.personality.plexus.lifecycle.phase.Contextualizable; -import org.codehaus.plexus.util.IOUtil; import org.codehaus.plexus.util.dag.CycleDetectedException; import org.codehaus.plexus.util.xml.pull.XmlPullParserException; import java.io.File; import java.io.IOException; -import java.io.InputStream; import java.util.ArrayList; import java.util.Date; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.Properties; /** * @author <a href="mailto:[EMAIL PROTECTED]">Jason van Zyl </a> @@ -90,7 +87,13 @@ protected MavenProfilesBuilder profilesBuilder; - private ArtifactVersion mavenVersion; + protected RuntimeInformation runtimeInformation; + + private static final long MB = 1024 * 1024; + + private static final int MS_PER_SEC = 1000; + + private static final int SEC_PER_MIN = 60; // ---------------------------------------------------------------------- // Project execution @@ -99,15 +102,6 @@ public MavenExecutionResponse execute( MavenExecutionRequest request ) throws ReactorException { - try - { - mavenVersion = getMavenVersion(); - } - catch ( IOException e ) - { - throw new ReactorException( "Unable to determine the executing version of Maven", e ); - } - if ( request.getSettings().isOffline() ) { getLogger().info( "Maven is running in offline mode." ); @@ -222,25 +216,6 @@ } } - private DefaultArtifactVersion getMavenVersion() - throws IOException - { - InputStream resourceAsStream = null; - try - { - Properties properties = new Properties(); - resourceAsStream = getClass().getClassLoader().getResourceAsStream( - "META-INF/maven/org.apache.maven/maven-core/pom.properties" ); - properties.load( resourceAsStream ); - - return new DefaultArtifactVersion( properties.getProperty( "version" ) ); - } - finally - { - IOUtil.close( resourceAsStream ); - } - } - private List collectProjects( List files, ArtifactRepository localRepository, boolean recursive, Settings settings ) throws ProjectBuildingException, ReactorException, IOException, ArtifactResolutionException { @@ -255,7 +230,7 @@ if ( project.getPrerequesites() != null && project.getPrerequesites().getMaven() != null ) { DefaultArtifactVersion version = new DefaultArtifactVersion( project.getPrerequesites().getMaven() ); - if ( mavenVersion.compareTo( version ) < 0 ) + if ( runtimeInformation.getApplicationVersion().compareTo( version ) < 0 ) { throw new ProjectBuildingException( "Unable to build project '" + project.getFile() + "; it requires Maven version " + version.toString() ); @@ -301,7 +276,7 @@ dispatcher.dispatchStart( event, project.getId() ); - MavenExecutionResponse response = null; + MavenExecutionResponse response; try { // Actual meat of the code. @@ -613,14 +588,13 @@ getLogger().info( "Finished at: " + finish ); - final long mb = 1024 * 1024; - + //noinspection CallToSystemGC System.gc(); Runtime r = Runtime.getRuntime(); getLogger().info( - "Final Memory: " + ( ( r.totalMemory() - r.freeMemory() ) / mb ) + "M/" + ( r.totalMemory() / mb ) + "M" ); + "Final Memory: " + ( r.totalMemory() - r.freeMemory() ) / MB + "M/" + r.totalMemory() / MB + "M" ); } protected void line() @@ -630,11 +604,11 @@ protected static String formatTime( long ms ) { - long secs = ms / 1000; + long secs = ms / MS_PER_SEC; - long min = secs / 60; + long min = secs / SEC_PER_MIN; - secs = secs % 60; + secs = secs % SEC_PER_MIN; String msg = ""; Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java?rev=220239&view=auto ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java (added) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java Thu Jul 21 22:07:47 2005 @@ -0,0 +1,60 @@ +package org.apache.maven.execution; + +/* + * Copyright 2001-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.artifact.versioning.ArtifactVersion; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.codehaus.plexus.util.IOUtil; + +import java.io.InputStream; +import java.io.IOException; +import java.util.Properties; + +/** + * Describes runtime information about the application. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a> + * @version $Id$ + */ +public class DefaultRuntimeInformation + implements RuntimeInformation +{ + private ArtifactVersion applicationVersion; + + public ArtifactVersion getApplicationVersion() + throws IOException + { + if ( applicationVersion == null ) + { + InputStream resourceAsStream = null; + try + { + Properties properties = new Properties(); + resourceAsStream = getClass().getClassLoader().getResourceAsStream( + "META-INF/maven/org.apache.maven/maven-core/pom.properties" ); + properties.load( resourceAsStream ); + + applicationVersion = new DefaultArtifactVersion( properties.getProperty( "version" ) ); + } + finally + { + IOUtil.close( resourceAsStream ); + } + } + return applicationVersion; + } +} Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/DefaultRuntimeInformation.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Added: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java?rev=220239&view=auto ============================================================================== --- maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java (added) +++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java Thu Jul 21 22:07:47 2005 @@ -0,0 +1,33 @@ +package org.apache.maven.execution; + +/* + * Copyright 2001-2005 The Apache Software Foundation. + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +import org.apache.maven.artifact.versioning.ArtifactVersion; + +import java.io.IOException; + +/** + * Describes runtime information about the application. + * + * @author <a href="mailto:[EMAIL PROTECTED]">Brett Porter</a> + * @version $Id$ + */ +public interface RuntimeInformation +{ + ArtifactVersion getApplicationVersion() + throws IOException; +} Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java ------------------------------------------------------------------------------ svn:eol-style = native Propchange: maven/components/trunk/maven-core/src/main/java/org/apache/maven/execution/RuntimeInformation.java ------------------------------------------------------------------------------ svn:keywords = "Author Date Id Revision" Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=220239&r1=220238&r2=220239&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 Thu Jul 21 22:07:47 2005 @@ -19,8 +19,8 @@ import org.apache.maven.artifact.Artifact; import org.apache.maven.artifact.factory.ArtifactFactory; import org.apache.maven.artifact.metadata.ArtifactMetadataRetrievalException; -import org.apache.maven.artifact.metadata.ResolutionGroup; import org.apache.maven.artifact.metadata.ArtifactMetadataSource; +import org.apache.maven.artifact.metadata.ResolutionGroup; import org.apache.maven.artifact.repository.ArtifactRepository; import org.apache.maven.artifact.repository.metadata.RepositoryMetadataManagementException; import org.apache.maven.artifact.resolver.ArtifactResolutionException; @@ -29,9 +29,11 @@ import org.apache.maven.artifact.resolver.filter.ArtifactFilter; import org.apache.maven.artifact.resolver.filter.ExclusionSetFilter; import org.apache.maven.artifact.resolver.filter.ScopeArtifactFilter; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; import org.apache.maven.artifact.versioning.InvalidVersionSpecificationException; import org.apache.maven.artifact.versioning.VersionRange; import org.apache.maven.execution.MavenSession; +import org.apache.maven.execution.RuntimeInformation; import org.apache.maven.model.Plugin; import org.apache.maven.model.ReportPlugin; import org.apache.maven.model.ReportSet; @@ -49,6 +51,8 @@ import org.apache.maven.plugin.version.PluginVersionManager; import org.apache.maven.plugin.version.PluginVersionResolutionException; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.project.path.PathTranslator; import org.apache.maven.reporting.MavenReport; import org.apache.maven.settings.Settings; @@ -73,6 +77,7 @@ import org.codehaus.plexus.util.xml.Xpp3Dom; import java.io.File; +import java.io.IOException; import java.lang.reflect.Field; import java.net.URL; import java.util.ArrayList; @@ -110,6 +115,10 @@ protected ArtifactMetadataSource metadataSource; protected MavenPluginMappingBuilder pluginMappingBuilder; + + protected RuntimeInformation runtimeInformation; + + protected MavenProjectBuilder mavenProjectBuilder; // END component requirements public DefaultPluginManager() @@ -141,9 +150,9 @@ try { - mappingManager = pluginMappingBuilder.refreshPluginMappingManager( session - .getPluginMappingManager(), project.getPluginArtifactRepositories(), session - .getLocalRepository() ); + mappingManager = pluginMappingBuilder.refreshPluginMappingManager( session.getPluginMappingManager(), + project.getPluginArtifactRepositories(), + session.getLocalRepository() ); } catch ( RepositoryMetadataManagementException e ) { @@ -165,14 +174,12 @@ throws ArtifactResolutionException, PluginManagerException, PluginVersionResolutionException { // TODO: this should be possibly outside - // [HTTP-301] All version-resolution logic has been moved to DefaultPluginVersionManager. :) + // All version-resolution logic has been moved to DefaultPluginVersionManager. if ( plugin.getVersion() == null ) { - String groupId = plugin.getGroupId(); - String artifactId = plugin.getArtifactId(); - - plugin.setVersion( - pluginVersionManager.resolvePluginVersion( groupId, artifactId, project, settings, localRepository ) ); + String version = pluginVersionManager.resolvePluginVersion( plugin.getGroupId(), plugin.getArtifactId(), + project, settings, localRepository ); + plugin.setVersion( version ); } // TODO: this might result in an artifact "RELEASE" being resolved continuously @@ -181,13 +188,11 @@ try { VersionRange versionRange = VersionRange.createFromVersionSpec( plugin.getVersion() ); - Artifact pluginArtifact = artifactFactory.createPluginArtifact( plugin.getGroupId(), - plugin.getArtifactId(), versionRange ); - // I think this ensures the plugin is not resolved multiple times - // TODO: put it back -// plugin.setVersion( pluginArtifact.getBaseVersion() ); + checkRequiredMavenVersion( plugin, localRepository, project.getPluginArtifactRepositories() ); + Artifact pluginArtifact = artifactFactory.createPluginArtifact( plugin.getGroupId(), + plugin.getArtifactId(), versionRange ); addPlugin( plugin, pluginArtifact, project, localRepository ); project.addPlugin( plugin ); @@ -225,6 +230,42 @@ } return pluginCollector.getPluginDescriptor( plugin ); + } + + /** + * @todo would be better to store this in the plugin descriptor, but then it won't be available to the version + * manager which executes before the plugin is instantiated + */ + private void checkRequiredMavenVersion( Plugin plugin, ArtifactRepository localRepository, List remoteRepositories ) + throws PluginVersionResolutionException, PluginManagerException + { + try + { + Artifact artifact = artifactFactory.createProjectArtifact( plugin.getGroupId(), plugin.getArtifactId(), + plugin.getVersion() ); + MavenProject project = mavenProjectBuilder.buildFromRepository( artifact, remoteRepositories, + localRepository ); + // if we don't have the required Maven version, then ignore an update + if ( project.getPrerequesites() != null && project.getPrerequesites().getMaven() != null ) + { + DefaultArtifactVersion requiredVersion = new DefaultArtifactVersion( + project.getPrerequesites().getMaven() ); + if ( runtimeInformation.getApplicationVersion().compareTo( requiredVersion ) < 0 ) + { + throw new PluginVersionResolutionException( plugin.getGroupId(), plugin.getArtifactId(), + "Plugin requires Maven version " + requiredVersion ); + } + } + } + catch ( ProjectBuildingException e ) + { + throw new PluginVersionResolutionException( plugin.getGroupId(), plugin.getArtifactId(), + "Unable to build project for plugin", e ); + } + catch ( IOException e ) + { + throw new PluginManagerException( "Unable to determine Maven version for comparison", e ); + } } protected void addPlugin( Plugin plugin, Artifact pluginArtifact, MavenProject project, Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/version/DefaultPluginVersionManager.java?rev=220239&r1=220238&r2=220239&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 Thu Jul 21 22:07:47 2005 @@ -24,6 +24,8 @@ import org.apache.maven.artifact.resolver.ArtifactResolver; import org.apache.maven.artifact.transform.LatestArtifactTransformation; import org.apache.maven.artifact.transform.ReleaseArtifactTransformation; +import org.apache.maven.artifact.versioning.DefaultArtifactVersion; +import org.apache.maven.execution.RuntimeInformation; import org.apache.maven.model.Plugin; import org.apache.maven.model.ReportPlugin; import org.apache.maven.plugin.registry.MavenPluginRegistryBuilder; @@ -32,6 +34,8 @@ import org.apache.maven.plugin.registry.TrackableBase; import org.apache.maven.plugin.registry.io.xpp3.PluginRegistryXpp3Writer; import org.apache.maven.project.MavenProject; +import org.apache.maven.project.MavenProjectBuilder; +import org.apache.maven.project.ProjectBuildingException; import org.apache.maven.settings.RuntimeInfo; import org.apache.maven.settings.Settings; import org.codehaus.plexus.components.inputhandler.InputHandler; @@ -68,6 +72,10 @@ private ArtifactMetadataSource metadataSource; + private MavenProjectBuilder mavenProjectBuilder; + + private RuntimeInformation runtimeInformation; + public String resolvePluginVersion( String groupId, String artifactId, MavenProject project, Settings settings, ArtifactRepository localRepository ) throws PluginVersionResolutionException @@ -86,7 +94,7 @@ // determine the behavior WRT prompting the user and installing plugin updates. Boolean pluginUpdateOverride = settingsRTInfo.getPluginUpdateOverride(); - // second pass...if we're using the plugin registry, and the plugin is listed in the plugin-registry.xml, use + // second pass...if we're using the plugin registry, and the plugin is listed in the plugin-registry.xml, use // the version from <useVersion/>. if ( StringUtils.isEmpty( version ) && settings.isUsePluginRegistry() ) { @@ -140,7 +148,7 @@ ( !Boolean.FALSE.equals( rtCheckLatest ) && Boolean.valueOf( pluginRegistry.getCheckLatest() ) .booleanValue() ); - // third pass...if we're checking for latest install/deploy, retrieve the version for LATEST metadata and also + // third pass...if we're checking for latest install/deploy, retrieve the version for LATEST metadata and also // set that resolved version as the <useVersion/> in settings.xml. if ( StringUtils.isEmpty( version ) && checkLatestMetadata ) { @@ -148,15 +156,18 @@ version = resolveMetaVersion( groupId, artifactId, project.getPluginArtifactRepositories(), localRepository, LatestArtifactTransformation.LATEST_VERSION ); - // 2. Set the updatedVersion so the user will be prompted whether to make this version permanent. - updatedVersion = version; + if ( version != null ) + { + // 2. Set the updatedVersion so the user will be prompted whether to make this version permanent. + updatedVersion = version; - // 3. Persist this version without prompting. - forcePersist = true; - promptToPersist = false; + // 3. Persist this version without prompting. + forcePersist = true; + promptToPersist = false; + } } - // final pass...retrieve the version for RELEASE and also set that resolved version as the <useVersion/> + // final pass...retrieve the version for RELEASE and also set that resolved version as the <useVersion/> // in settings.xml. if ( StringUtils.isEmpty( version ) ) { @@ -164,12 +175,15 @@ version = resolveMetaVersion( groupId, artifactId, project.getPluginArtifactRepositories(), localRepository, ReleaseArtifactTransformation.RELEASE_VERSION ); - // 2. Set the updatedVersion so the user will be prompted whether to make this version permanent. - updatedVersion = version; + if ( version != null ) + { + // 2. Set the updatedVersion so the user will be prompted whether to make this version permanent. + updatedVersion = version; - // 3. Persist this version without prompting. - forcePersist = true; - promptToPersist = false; + // 3. Persist this version without prompting. + forcePersist = true; + promptToPersist = false; + } } // if we still haven't found a version, then fail early before we get into the update goop. @@ -183,7 +197,7 @@ if ( settings.isUsePluginRegistry() ) { // determine whether this build is running in interactive mode - // If it's not, then we'll defer to the autoUpdate setting from the registry + // If it's not, then we'll defer to the autoUpdate setting from the registry // for a decision on updating the plugin in the registry...rather than prompting // the user. boolean inInteractiveMode = settings.isInteractiveMode(); @@ -599,8 +613,8 @@ private String resolveMetaVersion( String groupId, String artifactId, List remoteRepositories, ArtifactRepository localRepository, String metaVersionId ) + throws PluginVersionResolutionException { - // TODO: check - this was SCOPE_RUNTIME before, now is null Artifact artifact = artifactFactory.createProjectArtifact( groupId, artifactId, metaVersionId ); String version = null; @@ -608,13 +622,43 @@ { metadataSource.retrieve( artifact, localRepository, remoteRepositories ); - version = artifact.getVersion(); + MavenProject project = mavenProjectBuilder.buildFromRepository( artifact, remoteRepositories, + localRepository ); + + boolean pluginValid = true; + + // if we don't have the required Maven version, then ignore an update + if ( project.getPrerequesites() != null && project.getPrerequesites().getMaven() != null ) + { + DefaultArtifactVersion requiredVersion = new DefaultArtifactVersion( + project.getPrerequesites().getMaven() ); + if ( runtimeInformation.getApplicationVersion().compareTo( requiredVersion ) < 0 ) + { + getLogger().info( "Ignoring available plugin update: " + artifact.getVersion() + + " as it requires Maven version " + requiredVersion ); + pluginValid = false; + } + } + + if ( pluginValid ) + { + version = artifact.getVersion(); + } } catch ( ArtifactMetadataRetrievalException e ) { getLogger().debug( "Failed to resolve " + metaVersionId + " version", e ); } - + catch ( ProjectBuildingException e ) + { + throw new PluginVersionResolutionException( groupId, artifactId, + "Unable to build resolve plugin project information", e ); + } + catch ( IOException e ) + { + throw new PluginVersionResolutionException( groupId, artifactId, + "Unable to determine Maven version for comparison", e ); + } return version; } Modified: maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-core/src/main/resources/META-INF/plexus/components.xml?rev=220239&r1=220238&r2=220239&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 Thu Jul 21 22:07:47 2005 @@ -25,6 +25,12 @@ <requirement> <role>org.apache.maven.plugin.mapping.MavenPluginMappingBuilder</role> </requirement> + <requirement> + <role>org.apache.maven.execution.RuntimeInformation</role> + </requirement> + <requirement> + <role>org.apache.maven.project.MavenProjectBuilder</role> + </requirement> </requirements> </component> @@ -55,13 +61,21 @@ <requirement> <role>org.apache.maven.profiles.MavenProfilesBuilder</role> </requirement> + <requirement> + <role>org.apache.maven.execution.RuntimeInformation</role> + </requirement> </requirements> </component> + + <component> + <role>org.apache.maven.execution.RuntimeInformation</role> + <implementation>org.apache.maven.execution.DefaultRuntimeInformation</implementation> + </component> <!-- - | - |PluginConfigurationDiagnoser - | - --> + | + |PluginConfigurationDiagnoser + | + --> <component> <role>org.apache.maven.usability.ErrorDiagnoser</role> <role-hint>PluginConfigurationDiagnoser</role-hint> @@ -223,6 +237,12 @@ </requirement> <requirement> <role>org.codehaus.plexus.components.inputhandler.InputHandler</role> + </requirement> + <requirement> + <role>org.apache.maven.project.MavenProjectBuilder</role> + </requirement> + <requirement> + <role>org.apache.maven.execution.RuntimeInformation</role> </requirement> </requirements> </component> Modified: maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java?rev=220239&r1=220238&r2=220239&view=diff ============================================================================== --- maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java (original) +++ maven/components/trunk/maven-plugin-descriptor/src/main/java/org/apache/maven/plugin/descriptor/PluginDescriptor.java Thu Jul 21 22:07:47 2005 @@ -139,17 +139,11 @@ return constructPluginKey( groupId, artifactId, version ); } - /** - * @todo remove - harcoding. - */ public static String getDefaultPluginArtifactId( String id ) { return "maven-" + id + "-plugin"; } - /** - * @todo remove - harcoding. - */ public static String getDefaultPluginGroupId() { return "org.apache.maven.plugins"; Modified: maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java URL: http://svn.apache.org/viewcvs/maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java?rev=220239&r1=220238&r2=220239&view=diff ============================================================================== --- maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java (original) +++ maven/components/trunk/maven-project/src/main/java/org/apache/maven/project/artifact/MavenMetadataSource.java Thu Jul 21 22:07:47 2005 @@ -57,20 +57,17 @@ * Retrieve the metadata for the project from the repository. * Uses the ProjectBuilder, to enable post-processing and inheritance calculation before retrieving the * associated artifacts. - * - * @todo this a very thin wrapper around a project builder - is it needed? */ public ResolutionGroup retrieve( Artifact artifact, ArtifactRepository localRepository, List remoteRepositories ) throws ArtifactMetadataRetrievalException { - List dependencies; MavenProject p; Artifact pomArtifact; boolean done = false; do { - // TODO: only metadata is really needed - resolve as metadata + // TODO: can we just modify the original? pomArtifact = artifactFactory.createProjectArtifact( artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getScope() ); @@ -121,12 +118,11 @@ } while ( !done ); - dependencies = p.getDependencies(); artifact.setDownloadUrl( pomArtifact.getDownloadUrl() ); try { - Set artifacts = createArtifacts( artifactFactory, dependencies, artifact.getScope(), + Set artifacts = createArtifacts( artifactFactory, p.getDependencies(), artifact.getScope(), artifact.getDependencyFilter() ); return new ResolutionGroup( artifacts, p.getRemoteArtifactRepositories() ); --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]