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()