You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by be...@apache.org on 2009/07/01 16:55:06 UTC
svn commit: r790202 - in /maven/components/trunk:
maven-core/src/main/java/org/apache/maven/lifecycle/
maven-core/src/main/java/org/apache/maven/project/
maven-model-builder/src/main/java/org/apache/maven/model/validation/
maven-model-builder/src/test/...
Author: bentmann
Date: Wed Jul 1 14:55:06 2009
New Revision: 790202
URL: http://svn.apache.org/viewvc?rev=790202&view=rev
Log:
[MNG-4173] Remove automatic version resolution for POM plugins
o Reduced validation error to warning because this change seems to cause troubles for many projects out there
o Extended lifecylce executor to take care of non-versioned plugins
Modified:
maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=790202&r1=790201&r2=790202&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Wed Jul 1 14:55:06 2009
@@ -630,88 +630,96 @@
//
if ( plugin.getVersion() == null )
{
- File artifactMetadataFile;
-
- String localPath;
-
- // Search in the local repositiory for a version
- //
- // maven-metadata-local.xml
- //
- localPath = plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata-" + session.getLocalRepository().getId() + ".xml";
-
- artifactMetadataFile = new File( session.getLocalRepository().getBasedir(), localPath );
-
- if ( !artifactMetadataFile.exists() /* || user requests snapshot updates */ )
- {
- // Search in remote repositories for a version.
- //
- // maven-metadata-{central|nexus|...}.xml
- //
- //TODO: we should cycle through the repositories but take the repository which actually
- // satisfied the prefix.
- for ( ArtifactRepository repository : project.getPluginArtifactRepositories() )
- {
- localPath = plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata-" + repository.getId() + ".xml";
+ resolvePluginVersion( plugin, session.getLocalRepository(), project.getPluginArtifactRepositories() );
+ }
+
+ return pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), project.getPluginArtifactRepositories() );
+ }
- artifactMetadataFile = new File( session.getLocalRepository().getBasedir(), localPath );
+ private void resolvePluginVersion( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ throws PluginNotFoundException
+ {
+ File artifactMetadataFile = null;
+
+ String localPath;
+
+ // Search in remote repositories for a (released) version.
+ //
+ // maven-metadata-{central|nexus|...}.xml
+ //
+ //TODO: we should cycle through the repositories but take the repository which actually
+ // satisfied the prefix.
+ for ( ArtifactRepository repository : remoteRepositories )
+ {
+ localPath = plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata-" + repository.getId() + ".xml";
- if ( !artifactMetadataFile.exists() )
- {
- try
- {
- String remotePath = plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata.xml";
+ artifactMetadataFile = new File( localRepository.getBasedir(), localPath );
- repositorySystem.retrieve( repository, artifactMetadataFile, remotePath, session.getRequest().getTransferListener() );
- }
- catch ( TransferFailedException e )
- {
- continue;
- }
- catch ( ResourceDoesNotExistException e )
- {
- continue;
- }
- }
+ if ( !artifactMetadataFile.exists() /* || user requests snapshot updates */)
+ {
+ try
+ {
+ String remotePath = plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata.xml";
- break;
+ repositorySystem.retrieve( repository, artifactMetadataFile, remotePath, null );
+ }
+ catch ( TransferFailedException e )
+ {
+ continue;
+ }
+ catch ( ResourceDoesNotExistException e )
+ {
+ continue;
}
}
- if ( artifactMetadataFile.exists() )
- {
- try
- {
- Metadata pluginMetadata = readMetadata( artifactMetadataFile );
+ break;
+ }
- String release = pluginMetadata.getVersioning().getRelease();
+ // Search in the local repositiory for a (development) version
+ //
+ // maven-metadata-local.xml
+ //
+ if ( artifactMetadataFile == null || !artifactMetadataFile.exists() )
+ {
+ localPath =
+ plugin.getGroupId().replace( '.', '/' ) + "/" + plugin.getArtifactId() + "/maven-metadata-"
+ + localRepository.getId() + ".xml";
- if ( release != null )
- {
- plugin.setVersion( release );
- }
- else
- {
- String latest = pluginMetadata.getVersioning().getLatest();
-
- if ( latest != null )
- {
- plugin.setVersion( latest );
- }
- }
+ artifactMetadataFile = new File( localRepository.getBasedir(), localPath );
+ }
+
+ if ( artifactMetadataFile.exists() )
+ {
+ try
+ {
+ Metadata pluginMetadata = readMetadata( artifactMetadataFile );
+
+ String release = pluginMetadata.getVersioning().getRelease();
+
+ if ( release != null )
+ {
+ plugin.setVersion( release );
}
- catch ( RepositoryMetadataReadException e )
+ else
{
- logger.warn( "Error reading plugin metadata: ", e );
+ String latest = pluginMetadata.getVersioning().getLatest();
+
+ if ( latest != null )
+ {
+ plugin.setVersion( latest );
+ }
}
}
- else
+ catch ( RepositoryMetadataReadException e )
{
- throw new PluginNotFoundException( plugin, null );
+ logger.warn( "Error reading plugin metadata: ", e );
}
}
-
- return pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), project.getPluginArtifactRepositories() );
+ else
+ {
+ throw new PluginNotFoundException( plugin, null );
+ }
}
private void injectPluginDeclarationFromProject( Plugin plugin, MavenProject project )
@@ -857,6 +865,18 @@
private void populateDefaultConfigurationForPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws LifecycleExecutionException
{
+ if ( plugin.getVersion() == null )
+ {
+ try
+ {
+ resolvePluginVersion( plugin, localRepository, remoteRepositories );
+ }
+ catch ( PluginNotFoundException e )
+ {
+ throw new LifecycleExecutionException( "Error resolving version for plugin " + plugin, e );
+ }
+ }
+
for( PluginExecution pluginExecution : plugin.getExecutions() )
{
for( String goal : pluginExecution.getGoals() )
Modified: maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java?rev=790202&r1=790201&r2=790202&view=diff
==============================================================================
--- maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java (original)
+++ maven/components/trunk/maven-core/src/main/java/org/apache/maven/project/DefaultProjectBuilder.java Wed Jul 1 14:55:06 2009
@@ -36,6 +36,7 @@
import org.apache.maven.model.ModelBuildingException;
import org.apache.maven.model.ModelBuildingRequest;
import org.apache.maven.model.ModelBuildingResult;
+import org.apache.maven.model.ModelProblem;
import org.apache.maven.model.Profile;
import org.apache.maven.model.UrlModelSource;
import org.apache.maven.model.resolution.ModelResolver;
@@ -102,6 +103,17 @@
throw new ProjectBuildingException( "[unknown]", "Failed to build project for " + pomFile, pomFile, e );
}
+ if ( localProject && !result.getProblems().isEmpty() && logger.isWarnEnabled() )
+ {
+ logger.warn( "One or more problems were encoutered while building the effective model:" );
+ for ( ModelProblem problem : result.getProblems() )
+ {
+ logger.warn( problem.getMessage() );
+ }
+ logger.warn( "It is highly recommended to fix these problems"
+ + ", otherwise the project will fail to build with future Maven versions." );
+ }
+
Model model = result.getEffectiveModel();
File parentPomFile = result.getRawModel( result.getModelIds().get( 1 ) ).getPomFile();
Modified: maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java?rev=790202&r1=790201&r2=790202&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java (original)
+++ maven/components/trunk/maven-model-builder/src/main/java/org/apache/maven/model/validation/DefaultModelValidator.java Wed Jul 1 14:55:06 2009
@@ -219,7 +219,7 @@
validateStringNotEmpty( "build.plugins.plugin.groupId", result, false, p.getGroupId() );
- validateStringNotEmpty( "build.plugins.plugin.version", result, false, p.getVersion(), p.getKey() );
+ validateStringNotEmpty( "build.plugins.plugin.version", result, true, p.getVersion(), p.getKey() );
}
validateResources( result, build.getResources(), "build.resources.resource" );
@@ -236,7 +236,7 @@
validateStringNotEmpty( "reporting.plugins.plugin.groupId", result,false, p.getGroupId() );
- validateStringNotEmpty( "reporting.plugins.plugin.version", result, false, p.getVersion(), p.getKey() );
+ validateStringNotEmpty( "reporting.plugins.plugin.version", result, true, p.getVersion(), p.getKey() );
}
}
Modified: maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java
URL: http://svn.apache.org/viewvc/maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java?rev=790202&r1=790201&r2=790202&view=diff
==============================================================================
--- maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java (original)
+++ maven/components/trunk/maven-model-builder/src/test/java/org/apache/maven/model/validation/DefaultModelValidatorTest.java Wed Jul 1 14:55:06 2009
@@ -240,10 +240,10 @@
{
ModelValidationResult result = validate( "missing-plugin-version-pom.xml" );
- assertEquals( 1, result.getErrors().size() );
+ assertEquals( 1, result.getWarnings().size() );
assertEquals( "'build.plugins.plugin.version' is missing for org.apache.maven.plugins:maven-it-plugin",
- result.getErrors().get( 0 ) );
+ result.getWarnings().get( 0 ) );
}
public void testMissingRepositoryId()