You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@maven.apache.org by jv...@apache.org on 2009/05/19 20:53:08 UTC
svn commit: r776412 - in /maven/components/branches/MNG-2766: ./
maven-compat/src/main/java/org/apache/maven/artifact/
maven-compat/src/main/java/org/apache/maven/artifact/manager/
maven-compat/src/main/java/org/apache/maven/artifact/resolver/ maven-co...
Author: jvanzyl
Date: Tue May 19 18:53:07 2009
New Revision: 776412
URL: http://svn.apache.org/viewvc?rev=776412&view=rev
Log:
o first pass at setting up error handling for each possible error condition
- this resulted in cleaning up some exceptions in plexus so that they might message could be surfaced in Maven
o move the plugin prefix searching to the lifecycle executor and get it out of the plugin manager
o add capability to the RepositorySystem to get plain resources from a repository. I'm going simple with the repository group
metadata and I will just get the file directly as the only implementation is the plugin group metadata. the system is
not easily or generally extensible so i'll just take what I need
Added:
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java (with props)
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java (contents, props changed)
- copied, changed from r775655, maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java (with props)
maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java (with props)
Removed:
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/ArtifactStatus.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/CredentialsChangeRequest.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/CredentialsDataSource.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/CredentialsDataSourceException.java
Modified:
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java
maven/components/branches/MNG-2766/pom.xml
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/DefaultWagonManager.java Tue May 19 18:53:07 2009
@@ -139,7 +139,7 @@
putRemoteFile( repository, source, repository.pathOfRemoteRepositoryMetadata( artifactMetadata ), null );
}
- private void putRemoteFile( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor )
+ public void putRemoteFile( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor )
throws TransferFailedException
{
String protocol = repository.getProtocol();
@@ -427,7 +427,7 @@
getRemoteFile( repository, destination, remotePath, null, checksumPolicy, true );
}
- private void getRemoteFile( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor, String checksumPolicy, boolean force )
+ public void getRemoteFile( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor, String checksumPolicy, boolean force )
throws TransferFailedException, ResourceDoesNotExistException
{
String protocol = repository.getProtocol();
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/manager/WagonManager.java Tue May 19 18:53:07 2009
@@ -89,4 +89,11 @@
throws TransferFailedException, ResourceDoesNotExistException;
Set<String> getSupportProtocols();
+
+ void getRemoteFile( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor, String checksumPolicy, boolean force )
+ throws TransferFailedException, ResourceDoesNotExistException;
+
+ void putRemoteFile( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor )
+ throws TransferFailedException;
+
}
Modified: maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java (original)
+++ maven/components/branches/MNG-2766/maven-compat/src/main/java/org/apache/maven/artifact/resolver/ArtifactNotFoundException.java Tue May 19 18:53:07 2009
@@ -1,22 +1,18 @@
package org.apache.maven.artifact.resolver;
/*
- * Licensed to the Apache Software Foundation (ASF) under one
- * or more contributor license agreements. See the NOTICE file
- * distributed with this work for additional information
- * regarding copyright ownership. The ASF licenses this file
- * to you 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.
+ * Licensed to the Apache Software Foundation (ASF) under one or more contributor license
+ * agreements. See the NOTICE file distributed with this work for additional information regarding
+ * copyright ownership. The ASF licenses this file to you 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 java.util.List;
@@ -26,99 +22,44 @@
import org.apache.maven.wagon.ResourceDoesNotExistException;
/**
- * @author <a href="mailto:jason@maven.org">Jason van Zyl</a>
- * @version $Id$
+ * @author Jason van Zyl
*/
public class ArtifactNotFoundException
extends AbstractArtifactResolutionException
{
private String downloadUrl;
- protected ArtifactNotFoundException( String message,
- Artifact artifact,
- List<ArtifactRepository> remoteRepositories )
+ protected ArtifactNotFoundException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories )
{
super( message, artifact, remoteRepositories );
}
- public ArtifactNotFoundException( String message,
- Artifact artifact )
+ public ArtifactNotFoundException( String message, Artifact artifact )
{
- this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
- artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact.getDependencyTrail() );
+ this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(), null, artifact.getDownloadUrl(), artifact
+ .getDependencyTrail() );
}
- protected ArtifactNotFoundException( String message,
- Artifact artifact,
- List<ArtifactRepository> remoteRepositories,
- ResourceDoesNotExistException cause )
- {
- this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
- artifact.getClassifier(),
- remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(), cause );
- }
-
- @Deprecated
- protected ArtifactNotFoundException( String message,
- Artifact artifact,
- List<ArtifactRepository> remoteRepositories,
- Throwable cause )
- {
- this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(),
- artifact.getClassifier(),
- remoteRepositories, artifact.getDownloadUrl(), artifact.getDependencyTrail(), cause );
- }
-
- @Deprecated
- public ArtifactNotFoundException( String message,
- String groupId,
- String artifactId,
- String version,
- String type,
- String classifier,
- List<ArtifactRepository> remoteRepositories,
- String downloadUrl,
- List path,
- Throwable cause )
- {
- super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
- downloadUrl, path ), groupId, artifactId,
- version, type, classifier, remoteRepositories, null, cause );
-
- this.downloadUrl = downloadUrl;
+ protected ArtifactNotFoundException( String message, Artifact artifact, List<ArtifactRepository> remoteRepositories, ResourceDoesNotExistException cause )
+ {
+ this( message, artifact.getGroupId(), artifact.getArtifactId(), artifact.getVersion(), artifact.getType(), artifact.getClassifier(), remoteRepositories, artifact.getDownloadUrl(), artifact
+ .getDependencyTrail(), cause );
}
- public ArtifactNotFoundException( String message,
- String groupId,
- String artifactId,
- String version,
- String type,
- String classifier,
- List<ArtifactRepository> remoteRepositories,
- String downloadUrl,
- List path,
- ResourceDoesNotExistException cause )
- {
- super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
- downloadUrl, path ), groupId, artifactId,
- version, type, classifier, remoteRepositories, null, cause );
+ public ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type, String classifier, List<ArtifactRepository> remoteRepositories,
+ String downloadUrl, List path, ResourceDoesNotExistException cause )
+ {
+ super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier, downloadUrl, path ), groupId, artifactId, version, type, classifier, remoteRepositories,
+ null, cause );
this.downloadUrl = downloadUrl;
}
- private ArtifactNotFoundException( String message,
- String groupId,
- String artifactId,
- String version,
- String type,
- String classifier,
- List<ArtifactRepository> remoteRepositories,
- String downloadUrl,
- List path )
- {
- super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier,
- downloadUrl, path ), groupId, artifactId,
- version, type, classifier, remoteRepositories, null );
+ private ArtifactNotFoundException( String message, String groupId, String artifactId, String version, String type, String classifier, List<ArtifactRepository> remoteRepositories,
+ String downloadUrl, List path )
+ {
+ super( constructMissingArtifactMessage( message, "", groupId, artifactId, version, type, classifier, downloadUrl, path ), groupId, artifactId, version, type, classifier, remoteRepositories,
+ null );
this.downloadUrl = downloadUrl;
}
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/exception/DefaultExceptionHandler.java Tue May 19 18:53:07 2009
@@ -1,13 +1,25 @@
package org.apache.maven.exception;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.plugin.CycleDetectedInPluginGraphException;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.MojoNotFoundException;
+import org.apache.maven.plugin.PluginDescriptorParsingException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.PluginResolutionException;
import org.codehaus.plexus.component.annotations.Component;
/*
+- test projects for each of these
+- how to categorize the problems so that the id of the problem can be match to a page with descriptive help and the test project
+- nice little sample projects that could be run in the core as well as integration tests
+
All Possible Errors
-- bad command line parameter
+- invalid lifecycle phase (maybe same as bad CLI param, though you were talking about embedder too)
+- <module> specified is not found
- malformed settings
- malformed POM
- local repository not writable
@@ -16,10 +28,16 @@
- extension metadata missing
- extension artifact missing
- artifact metadata retrieval problem
-- version range violation
+- version range violation
- circular dependency
- artifact missing
- artifact retrieval exception
+- md5 checksum doesn't match for local artifact, need to redownload this
+- POM doesn't exist for a goal that requires one
+- parent POM missing (in both the repository + relative path)
+- component not found
+
+Plugins:
- plugin metadata missing
- plugin metadata retrieval problem
- plugin artifact missing
@@ -29,23 +47,13 @@
- plugin configuration problem
- plugin execution failure due to something that is know to possibly go wrong (like compilation failure)
- plugin execution error due to something that is not expected to go wrong (the compiler executable missing)
-- md5 checksum doesn't match for local artifact, need to redownload this
- asking to use a plugin for which you do not have a version defined - tools to easily select versions
-
-brett:
-- transitive dependency problems - tracking down
-- invalid lifecycle phase (maybe same as bad CLI param, though you were talking about embedder too)
-- <module> specified is not found
-- POM doesn't exist for a goal that requires one
- goal not found in a plugin (probably could list the ones that are)
-- parent POM missing (in both the repository + relative path)
-brian:
-- component not found
-- missing goal in plugin
-- removing the scripting options from the core
*/
+//PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException;
+
@Component(role=ExceptionHandler.class)
public class DefaultExceptionHandler
implements ExceptionHandler
@@ -56,7 +64,40 @@
String reference = "http://";
- if ( exception instanceof MojoFailureException )
+ // Plugin problems
+ if ( exception instanceof PluginNotFoundException )
+ {
+ message = exception.getMessage();
+ }
+ else if ( exception instanceof PluginResolutionException )
+ {
+ message = exception.getMessage();
+ }
+ else if ( exception instanceof PluginDescriptorParsingException )
+ {
+ message = exception.getMessage();
+ }
+ else if ( exception instanceof CycleDetectedInPluginGraphException )
+ {
+ message = exception.getMessage();
+ }
+
+ // Project dependency downloading problems.
+ else if ( exception instanceof ArtifactNotFoundException )
+ {
+ message = exception.getMessage();
+ }
+ else if ( exception instanceof ArtifactResolutionException )
+ {
+ message = ((MojoExecutionException)exception).getLongMessage();
+ }
+
+ // Mojo problems
+ else if ( exception instanceof MojoNotFoundException )
+ {
+ message = exception.getMessage();
+ }
+ else if ( exception instanceof MojoFailureException )
{
message = ((MojoFailureException)exception).getLongMessage();
}
@@ -64,6 +105,7 @@
{
message = ((MojoExecutionException)exception).getLongMessage();
}
+
else
{
message = exception.getMessage();
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java Tue May 19 18:53:07 2009
@@ -39,10 +39,14 @@
import org.apache.maven.lifecycle.mapping.LifecycleMapping;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.PluginExecution;
+import org.apache.maven.plugin.CycleDetectedInPluginGraphException;
import org.apache.maven.plugin.MojoExecution;
-import org.apache.maven.plugin.PluginLoaderException;
+import org.apache.maven.plugin.MojoNotFoundException;
+import org.apache.maven.plugin.PluginDescriptorParsingException;
import org.apache.maven.plugin.PluginManager;
+import org.apache.maven.plugin.PluginNotFoundException;
import org.apache.maven.plugin.PluginParameterExpressionEvaluator;
+import org.apache.maven.plugin.PluginResolutionException;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.Parameter;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
@@ -60,9 +64,6 @@
//TODO: The configuration for the lifecycle needs to be externalized so that I can use the annotations
// properly for the wiring and reference and external source for the lifecycle configuration.
-//TODO: Inside an IDE we are replacing the notion of our reactor with a workspace. In both of these cases
-// we need to layer these as local repositories.
-//TODO: Cache the lookups of the PluginDescriptors
//TODO: check for online status in the build plan and die if necessary
//TODO if ( mojoDescriptor.isProjectRequired() && !session.isUsingPOMsFromFilesystem() )
//{
@@ -125,7 +126,7 @@
goals = Collections.singletonList( goal );
}
}
-
+
for ( MavenProject currentProject : session.getProjects() )
{
logger.info( "Building " + currentProject.getName() );
@@ -142,7 +143,7 @@
{
lifecyclePlan = calculateLifecyclePlan( goal, session );
}
- catch ( LifecycleExecutionException e )
+ catch ( Exception e )
{
session.getResult().addException( e );
return;
@@ -157,12 +158,12 @@
{
downloadProjectDependencies( session, Artifact.SCOPE_TEST /**mojoDescriptor.isDependencyResolutionRequired()*/ );
}
- catch ( ArtifactResolutionException e )
+ catch ( ArtifactNotFoundException e )
{
session.getResult().addException( e );
return;
}
- catch ( ArtifactNotFoundException e )
+ catch ( ArtifactResolutionException e )
{
session.getResult().addException( e );
return;
@@ -221,7 +222,7 @@
// 4. Bind those mojos found in the lifecycle mapping for the packaging to the lifecycle
// 5. Bind mojos specified in the project itself to the lifecycle
public List<MojoExecution> calculateLifecyclePlan( String lifecyclePhase, MavenSession session )
- throws LifecycleExecutionException
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException
{
// Extract the project from the session
MavenProject project = session.getCurrentProject();
@@ -311,18 +312,17 @@
phaseToMojoMapping.get( execution.getPhase() ).add( s );
}
}
- // if not then i need to grab the mojo descriptor and look at
- // the phase that is specified
+ // if not then i need to grab the mojo descriptor and look at the phase that is specified
else
{
for( String goal : execution.getGoals() )
{
String s = plugin.getGroupId() + ":" + plugin.getArtifactId() + ":" + plugin.getVersion() + ":" + goal;
- MojoDescriptor md = getMojoDescriptor( s, session.getCurrentProject(), session.getLocalRepository() );
+ MojoDescriptor mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), project.getRemoteArtifactRepositories() );
- if ( md.getPhase() != null && phaseToMojoMapping.get( md.getPhase() ) != null )
+ if ( mojoDescriptor.getPhase() != null && phaseToMojoMapping.get( mojoDescriptor.getPhase() ) != null )
{
- phaseToMojoMapping.get( md.getPhase() ).add( s );
+ phaseToMojoMapping.get( mojoDescriptor.getPhase() ).add( s );
}
}
}
@@ -334,13 +334,7 @@
// We are only interested in the phases that correspond to the lifecycle we are trying to run. If we are running the "clean"
// lifecycle we are not interested in goals -- like "generate-sources -- that belong to the default lifecycle.
//
-
- // We only want to execute up to and including the specified lifecycle phase.
- // if ( phase.equals( lifecyclePhase ) )
- //{
- // break;
- //}
-
+
List<String> phasesWithMojosToExecute = new ArrayList<String>();
for( String phase : phaseToMojoMapping.keySet() )
@@ -365,7 +359,10 @@
//
// org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process
//
- MojoDescriptor mojoDescriptor = getMojoDescriptor( mojo, project, session.getLocalRepository() );
+
+ String[] s = StringUtils.split( mojo, ":" );
+
+ MojoDescriptor mojoDescriptor = getMojoDescriptor( mojo, session );
MojoExecution mojoExecution = new MojoExecution( mojoDescriptor );
@@ -426,12 +423,14 @@
}
// org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process
- MojoDescriptor getMojoDescriptor( String task, MavenProject project, ArtifactRepository localRepository )
- throws LifecycleExecutionException
+ MojoDescriptor getMojoDescriptor( String task, MavenSession session )
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException
{
- String goal;
+ MavenProject project = session.getCurrentProject();
- Plugin plugin;
+ String goal = null;
+
+ Plugin plugin = null;
StringTokenizer tok = new StringTokenizer( task, ":" );
int numTokens = tok.countTokens();
@@ -450,30 +449,7 @@
// Maven plugin deployment we will find the right PluginDescriptor from the remote
// repository.
- plugin = pluginManager.findPluginForPrefix( prefix, localRepository, project.getRemoteArtifactRepositories() );
-
- // Search plugin in the current POM
- if ( plugin == null )
- {
- for ( Plugin buildPlugin : project.getBuildPlugins() )
- {
- PluginDescriptor desc;
-
- try
- {
- desc = pluginManager.loadPlugin( buildPlugin, localRepository, project.getRemoteArtifactRepositories() );
- }
- catch ( PluginLoaderException e )
- {
- throw new LifecycleExecutionException( "Error loading PluginDescriptor.", e );
- }
-
- if ( prefix.equals( desc.getGoalPrefix() ) )
- {
- plugin = buildPlugin;
- }
- }
- }
+ plugin = findPluginForPrefix( prefix, session );
}
else if ( numTokens == 3 || numTokens == 4 )
{
@@ -488,63 +464,10 @@
goal = tok.nextToken();
}
- else
- {
- String message = "Invalid task '" + task + "': you must specify a valid lifecycle phase, or" + " a goal in the format plugin:goal or pluginGroupId:pluginArtifactId:pluginVersion:goal";
- throw new LifecycleExecutionException( message );
- }
- for ( Plugin buildPlugin : project.getBuildPlugins() )
- {
- if ( buildPlugin.getKey().equals( plugin.getKey() ) )
- {
- if ( plugin.getVersion() == null || plugin.getVersion().equals( buildPlugin.getVersion() ) )
- {
- plugin = buildPlugin;
- }
- break;
- }
- }
-
- MojoDescriptor mojoDescriptor;
-
- try
- {
- mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, localRepository, project.getRemoteArtifactRepositories() );
- }
- catch ( PluginLoaderException e )
- {
- throw new LifecycleExecutionException( "Error loading MojoDescriptor.", e );
- }
-
- return mojoDescriptor;
+ return pluginManager.getMojoDescriptor( plugin, goal, session.getLocalRepository(), project.getRemoteArtifactRepositories() );
}
-
- // org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process
- MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, MavenProject project, ArtifactRepository localRepository )
- throws LifecycleExecutionException
- {
- Plugin plugin = new Plugin();
- plugin.setGroupId( groupId );
- plugin.setArtifactId( artifactId );
- plugin.setVersion( version );
-
- MojoDescriptor mojoDescriptor;
-
- //need to do the active project thing as the site plugin is referencing itself
-
- try
- {
- mojoDescriptor = pluginManager.getMojoDescriptor( plugin, goal, localRepository, project.getRemoteArtifactRepositories() );
- }
- catch ( PluginLoaderException e )
- {
- throw new LifecycleExecutionException( "Error loading MojoDescriptor.", e );
- }
- return mojoDescriptor;
- }
-
public void initialize()
throws InitializationException
{
@@ -660,7 +583,7 @@
}
}
- public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, MavenProject project, ArtifactRepository localRepository )
+ public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws LifecycleExecutionException
{
for( Plugin p : plugins )
@@ -669,25 +592,51 @@
{
for( String goal : e.getGoals() )
{
- Xpp3Dom dom = getDefaultPluginConfiguration( p.getGroupId(), p.getArtifactId(), p.getVersion(), goal, project, localRepository );
+ Xpp3Dom dom = getDefaultPluginConfiguration( p.getGroupId(), p.getArtifactId(), p.getVersion(), goal, localRepository, remoteRepositories );
e.setConfiguration( Xpp3Dom.mergeXpp3Dom( (Xpp3Dom) e.getConfiguration(), dom, Boolean.TRUE ) );
}
}
}
}
- public Xpp3Dom getDefaultPluginConfiguration( String groupId, String artifactId, String version, String goal, MavenProject project, ArtifactRepository localRepository )
+ private Xpp3Dom getDefaultPluginConfiguration( String groupId, String artifactId, String version, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws LifecycleExecutionException
{
- return convert( getMojoDescriptor( groupId, artifactId, version, goal, project, localRepository ) );
+ MojoDescriptor mojoDescriptor;
+
+ try
+ {
+ mojoDescriptor = pluginManager.getMojoDescriptor( groupId, artifactId, version, goal, localRepository, remoteRepositories );
+ }
+ catch ( PluginNotFoundException e )
+ {
+ throw new LifecycleExecutionException( "Error getting default plugin information: ", e );
+ }
+ catch ( PluginResolutionException e )
+ {
+ throw new LifecycleExecutionException( "Error getting default plugin information: ", e );
+ }
+ catch ( PluginDescriptorParsingException e )
+ {
+ throw new LifecycleExecutionException( "Error getting default plugin information: ", e );
+ }
+ catch ( CycleDetectedInPluginGraphException e )
+ {
+ throw new LifecycleExecutionException( "Error getting default plugin information: ", e );
+ }
+ catch ( MojoNotFoundException e )
+ {
+ throw new LifecycleExecutionException( "Error getting default plugin information: ", e );
+ }
+
+ return convert( mojoDescriptor );
}
public Xpp3Dom getMojoConfiguration( MojoDescriptor mojoDescriptor )
{
return convert( mojoDescriptor );
}
-
-
+
Xpp3Dom convert( MojoDescriptor mojoDescriptor )
{
Xpp3Dom dom = new Xpp3Dom( "configuration" );
@@ -988,5 +937,17 @@
ArtifactResolutionResult result = repositorySystem.resolve( request );
resolutionErrorHandler.throwErrors( request, result );
project.setArtifacts( result.getArtifacts() );
+ }
+
+ // This would ideally be kept up
+ public Plugin findPluginForPrefix( String prefix, MavenSession session )
+ {
+ // [prefix]:[goal]
+ //
+ // eclipse:eclipse
+ // idea:idea
+
+ return null;
+ //return getByPrefix( prefix, session.getPluginGroups(), project.getRemoteArtifactRepositories(), session.getLocalRepository() );
}
}
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/lifecycle/LifecycleExecutor.java Tue May 19 18:53:07 2009
@@ -26,9 +26,14 @@
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.CycleDetectedInPluginGraphException;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.MojoNotFoundException;
+import org.apache.maven.plugin.PluginDescriptorParsingException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.PluginResolutionException;
import org.apache.maven.project.MavenProject;
import org.codehaus.plexus.util.xml.Xpp3Dom;
@@ -48,7 +53,7 @@
* @throws LifecycleExecutionException
*/
List<MojoExecution> calculateLifecyclePlan( String lifecyclePhase, MavenSession session )
- throws LifecycleExecutionException;
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException;
// For a given project packaging find all the plugins that are bound to any registered
// lifecycles. The project builder needs to now what default plugin information needs to be
@@ -64,11 +69,8 @@
// Given a set of {@link org.apache.maven.Plugin} objects where the GAV is set we can lookup the plugin
// descriptor and populate the default configuration.
//
- void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, MavenProject project, ArtifactRepository localRepository )
+ void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws LifecycleExecutionException;
void execute( MavenSession session );
-
- Xpp3Dom getDefaultPluginConfiguration( String groupId, String artifactId, String version, String goal, MavenProject project, ArtifactRepository localRepository )
- throws LifecycleExecutionException;
}
Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java?rev=776412&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java Tue May 19 18:53:07 2009
@@ -0,0 +1,47 @@
+package org.apache.maven.plugin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.model.Plugin;
+import org.codehaus.plexus.component.composition.CycleDetectedInComponentGraphException;
+
+/**
+ * Exception occurring trying to resolve a plugin.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public class CycleDetectedInPluginGraphException
+ extends Exception
+{
+ private final Plugin plugin;
+
+ public CycleDetectedInPluginGraphException( Plugin plugin, CycleDetectedInComponentGraphException e )
+ {
+ super( "A cycle was detected in the component graph of the plugin: " + plugin.getArtifactId() );
+
+ this.plugin = plugin;
+ }
+
+ public Plugin getPlugin()
+ {
+ return plugin;
+ }
+}
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/CycleDetectedInPluginGraphException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java Tue May 19 18:53:07 2009
@@ -55,6 +55,7 @@
import org.codehaus.plexus.classworlds.realm.ClassRealm;
import org.codehaus.plexus.component.annotations.Component;
import org.codehaus.plexus.component.annotations.Requirement;
+import org.codehaus.plexus.component.composition.CycleDetectedInComponentGraphException;
import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.component.configurator.ComponentConfigurator;
import org.codehaus.plexus.component.configurator.ConfigurationListener;
@@ -66,7 +67,6 @@
import org.codehaus.plexus.component.repository.ComponentSetDescriptor;
import org.codehaus.plexus.component.repository.exception.ComponentLifecycleException;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-import org.codehaus.plexus.component.repository.exception.ComponentRepositoryException;
import org.codehaus.plexus.configuration.PlexusConfiguration;
import org.codehaus.plexus.configuration.PlexusConfigurationException;
import org.codehaus.plexus.configuration.xml.XmlPlexusConfiguration;
@@ -114,17 +114,25 @@
pluginDescriptors = new HashMap<String, PluginDescriptor>();
}
- // This should be template method code for allowing subclasses to assist in contributing search/hint information
- public Plugin findPluginForPrefix( String prefix, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ private String pluginKey( Plugin plugin )
{
- //Use the plugin managers capabilities to get information to augement the request
-
- return null;
- //return getByPrefix( prefix, session.getPluginGroups(), project.getRemoteArtifactRepositories(), session.getLocalRepository() );
+ return plugin.getGroupId() + ":" + plugin.getArtifactId() + ":" + plugin.getVersion();
}
+ /**
+ *
+ * @param plugin
+ * @param localRepository
+ * @param remoteRepositories
+ * @return PluginDescriptor The component descriptor for the Maven plugin.
+ * @throws PluginNotFoundException The plugin could not be found in any repositories.
+ * @throws PluginResolutionException The plugin could be found but could not be resolved.
+ * @throws PlexusConfigurationException A discovered component descriptor cannot be read, or or can't be parsed correctly. Shouldn't
+ * happen but if someone has made a descriptor by hand it's possible.
+ * @throws CycleDetectedInComponentGraphException A cycle has been detected in the component graph for a plugin that has been dynamically loaded.
+ */
public PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
- throws PluginLoaderException
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException
{
PluginDescriptor pluginDescriptor = getPluginDescriptor( plugin );
@@ -133,40 +141,8 @@
if ( pluginDescriptor != null && pluginDescriptor.getClassRealm() != null )
{
return pluginDescriptor;
- }
-
- try
- {
- return addPlugin( plugin, localRepository, remoteRepositories );
- }
- catch ( ArtifactResolutionException e )
- // PluginResolutionException - a problem that occurs resolving the plugin artifact or its deps
- {
- throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
- }
- catch ( ArtifactNotFoundException e )
- // PluginNotFoundException - the plugin itself cannot be found in any repositories
- {
- throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
- }
- catch ( PluginContainerException e )
- {
- throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
- }
- catch ( PluginVersionNotFoundException e )
- {
- throw new PluginLoaderException( plugin, "Failed to load plugin. Reason: " + e.getMessage(), e );
- }
- }
-
- private String pluginKey( Plugin plugin )
- {
- return plugin.getGroupId() + ":" + plugin.getArtifactId() + ":" + plugin.getVersion();
- }
-
- protected PluginDescriptor addPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
- throws ArtifactNotFoundException, ArtifactResolutionException, PluginContainerException, PluginVersionNotFoundException
- {
+ }
+
Artifact pluginArtifact = repositorySystem.createPluginArtifact( plugin );
ArtifactResolutionRequest request = new ArtifactResolutionRequest()
@@ -176,7 +152,15 @@
ArtifactResolutionResult result = repositorySystem.resolve( request );
- resolutionErrorHandler.throwErrors( request, result );
+ try
+ {
+ resolutionErrorHandler.throwErrors( request, result );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new PluginResolutionException( plugin, e );
+ }
+
ClassRealm pluginRealm = pluginClassLoaderCache.get( constructPluginKey( plugin ) );
@@ -187,7 +171,20 @@
pluginRealm = container.createChildRealm( pluginKey( plugin ) );
- Set<Artifact> pluginArtifacts = getPluginArtifacts( pluginArtifact, plugin, localRepository, remoteRepositories );
+ Set<Artifact> pluginArtifacts;
+
+ try
+ {
+ pluginArtifacts = getPluginArtifacts( pluginArtifact, plugin, localRepository, remoteRepositories );
+ }
+ catch ( ArtifactNotFoundException e )
+ {
+ throw new PluginNotFoundException( plugin, e );
+ }
+ catch ( ArtifactResolutionException e )
+ {
+ throw new PluginResolutionException( plugin, e );
+ }
for ( Artifact a : pluginArtifacts )
{
@@ -200,23 +197,23 @@
// Not going to happen
}
}
-
+
try
{
container.discoverComponents( pluginRealm );
}
catch ( PlexusConfigurationException e )
{
- throw new PluginContainerException( plugin, pluginRealm, "Error scanning plugin realm for components.", e );
+ throw new PluginDescriptorParsingException( plugin, e );
}
- catch ( ComponentRepositoryException e )
+ catch ( CycleDetectedInComponentGraphException e )
{
- throw new PluginContainerException( plugin, pluginRealm, "Error scanning plugin realm for components.", e );
+ throw new CycleDetectedInPluginGraphException( plugin, e );
}
pluginClassLoaderCache.put( constructPluginKey( plugin ), pluginRealm );
- PluginDescriptor pluginDescriptor = getPluginDescriptor( plugin );
+ pluginDescriptor = getPluginDescriptor( plugin );
pluginDescriptor.setArtifacts( new ArrayList<Artifact>( pluginArtifacts ) );
return pluginDescriptor;
@@ -493,9 +490,19 @@
}
}
- public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository,
- List<ArtifactRepository> remoteRepositories )
- throws PluginLoaderException
+ public MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException
+ {
+ Plugin plugin = new Plugin();
+ plugin.setGroupId( groupId );
+ plugin.setArtifactId( artifactId );
+ plugin.setVersion( version );
+
+ return getMojoDescriptor( plugin, goal, localRepository, remoteRepositories );
+ }
+
+ public MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException
{
PluginDescriptor pluginDescriptor = loadPlugin( plugin, localRepository, remoteRepositories );
@@ -503,7 +510,7 @@
if ( mojoDescriptor == null )
{
- throw new PluginLoaderException( plugin, "Failed to load plugin mojo. Reason: Unknown mojo: " + goal );
+ throw new MojoNotFoundException( goal, pluginDescriptor );
}
return mojoDescriptor;
Copied: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java (from r775655, maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java)
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java?p2=maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java&p1=maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java&r1=775655&r2=776412&rev=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java Tue May 19 18:53:07 2009
@@ -19,47 +19,24 @@
* under the License.
*/
+import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
import org.codehaus.plexus.component.configurator.ComponentConfigurationException;
import org.codehaus.plexus.component.configurator.expression.ExpressionEvaluationException;
import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+import org.codehaus.plexus.configuration.PlexusConfigurationException;
/**
* @author Jason van Zyl
- * @version $Id$
*/
-public class PluginConfigurationException
+public class PluginDescriptorParsingException
extends Exception
{
- private PluginDescriptor pluginDescriptor;
+ private Plugin plugin;
- private String originalMessage;
-
- public PluginConfigurationException( PluginDescriptor pluginDescriptor, String originalMessage )
- {
- super( originalMessage );
- this.pluginDescriptor = pluginDescriptor;
- this.originalMessage = originalMessage;
- }
-
- public PluginConfigurationException( PluginDescriptor pluginDescriptor, String originalMessage, ExpressionEvaluationException cause )
+ public PluginDescriptorParsingException( Plugin plugin, PlexusConfigurationException e )
{
- super( cause );
- this.pluginDescriptor = pluginDescriptor;
- this.originalMessage = originalMessage;
+ super( e );
+ this.plugin = plugin;
}
-
- public PluginConfigurationException( PluginDescriptor pluginDescriptor, String originalMessage, ComponentConfigurationException cause )
- {
- super( cause );
- this.pluginDescriptor = pluginDescriptor;
- this.originalMessage = originalMessage;
- }
-
- public PluginConfigurationException( PluginDescriptor pluginDescriptor, String originalMessage, ComponentLookupException cause )
- {
- super( cause );
- this.pluginDescriptor = pluginDescriptor;
- this.originalMessage = originalMessage;
- }
}
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java
------------------------------------------------------------------------------
cvs2svn:cvs-rev = 1.3
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginDescriptorParsingException.java
------------------------------------------------------------------------------
--- svn:mergeinfo (added)
+++ svn:mergeinfo Tue May 19 18:53:07 2009
@@ -0,0 +1,7 @@
+/maven/components/branches/MNG-3932-1/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:746145-746157
+/maven/components/branches/maven-2.0.10-RC/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:680477
+/maven/components/branches/maven-2.0.x/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:679206,708871,720042,726541,727548,727998,728264,728940,729060,729738,729785,730631
+/maven/components/branches/maven-2.1.x/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:739385,741841,747468,747683,748815,749612,766523,768817
+/maven/components/branches/sisbell-plugin-manager/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:738973-739966
+/maven/components/sisbell-plugin-manager/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:738757-738972
+/maven/components/trunk/maven-core/src/main/java/org/apache/maven/plugin/PluginConfigurationException.java:751453-767358,767708-768832
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java Tue May 19 18:53:07 2009
@@ -18,12 +18,16 @@
import java.util.List;
import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.descriptor.MojoDescriptor;
import org.apache.maven.plugin.descriptor.PluginDescriptor;
+import org.codehaus.plexus.component.composition.CycleDetectedInComponentGraphException;
import org.codehaus.plexus.component.discovery.ComponentDiscoverer;
import org.codehaus.plexus.component.discovery.ComponentDiscoveryListener;
+import org.codehaus.plexus.configuration.PlexusConfigurationException;
/**
* @author Jason van Zyl
@@ -33,17 +37,24 @@
{
// - find the plugin [extension point: any client may wish to do whatever they choose]
// - load the plugin into a classloader [extension point: we want to take them from a repository, some may take from disk or whatever]
- // - configure the plugin [extension point]
+ // - configure the plugin [extension point] -- actually this should happen before the plugin manager gets anything i.e. do whatever you want to get the information
// - execute the plugin
-
- Plugin findPluginForPrefix( String prefix, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories );
-
+
+ // Use more meaningful exceptions
+ // plugin not found
+ // plugin resolution exception
+ // plugin configuration can't be parsed -- and this may be a result of client insertion of configuration
+ // plugin component deps have a cycle -- this should be prevented for the most part but client code may inject an override component which itself has a cycle
PluginDescriptor loadPlugin( Plugin plugin, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
- throws PluginLoaderException;
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException;
+
+ MojoDescriptor getMojoDescriptor( String groupId, String artifactId, String version, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException;
MojoDescriptor getMojoDescriptor( Plugin plugin, String goal, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
- throws PluginLoaderException;
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException;
+ // Why do we have a plugin execution exception as well?
void executeMojo( MavenSession session, MojoExecution execution )
throws MojoFailureException, MojoExecutionException, PluginConfigurationException, PluginExecutionException;
}
\ No newline at end of file
Added: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java?rev=776412&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java (added)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java Tue May 19 18:53:07 2009
@@ -0,0 +1,48 @@
+package org.apache.maven.plugin;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements. See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership. The ASF licenses this file
+ * to you 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.resolver.AbstractArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.model.Plugin;
+
+/**
+ * Exception occurring trying to resolve a plugin.
+ *
+ * @author <a href="mailto:brett@apache.org">Brett Porter</a>
+ * @version $Id$
+ */
+public class PluginResolutionException
+ extends AbstractArtifactResolutionException
+{
+ private final Plugin plugin;
+
+ public PluginResolutionException( Plugin plugin, ArtifactResolutionException e )
+ {
+ super( "Plugin could not be resolved: " + e.getMessage(), e.getGroupId(), e.getArtifactId(), e.getVersion(), "maven-plugin",null, e.getRemoteRepositories(), null, e.getCause() );
+ this.plugin = plugin;
+ }
+
+ public Plugin getPlugin()
+ {
+ return plugin;
+ }
+}
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/plugin/PluginResolutionException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java Tue May 19 18:53:07 2009
@@ -192,7 +192,7 @@
{
pluginConfigurationExpander.expandPluginConfiguration( project.getModel() );
- lifecycle.populateDefaultConfigurationForPlugins( project.getModel().getBuild().getPlugins(), project, configuration.getLocalRepository() );
+ lifecycle.populateDefaultConfigurationForPlugins( project.getModel().getBuild().getPlugins(), configuration.getLocalRepository(), project.getRemoteArtifactRepositories() );
}
}
catch ( IOException e )
Modified: maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/MavenProject.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/MavenProject.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/MavenProject.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/main/java/org/apache/maven/project/MavenProject.java Tue May 19 18:53:07 2009
@@ -587,17 +587,13 @@
list.add( getBuild().getTestOutputDirectory() );
list.add( getBuild().getOutputDirectory() );
-
- System.out.println( ">>>>> " + getArtifacts() );
for ( Artifact a : getArtifacts() )
{
if ( a.getArtifactHandler().isAddedToClasspath() )
{
File file = a.getFile();
-
- System.out.println( ">> " + a.getArtifactId() );
-
+
if ( file == null )
{
throw new DependencyResolutionRequiredException( a );
Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/lifecycle/LifecycleExecutorTest.java Tue May 19 18:53:07 2009
@@ -6,7 +6,6 @@
import org.apache.maven.AbstractCoreMavenComponentTestCase;
import org.apache.maven.exception.ExceptionHandler;
-import org.apache.maven.exception.ExceptionSummary;
import org.apache.maven.execution.MavenSession;
import org.apache.maven.model.Plugin;
import org.apache.maven.plugin.MojoExecution;
@@ -93,7 +92,7 @@
{
File pom = getProject( "project-with-additional-lifecycle-elements" );
MavenSession session = createMavenSession( pom );
- MojoDescriptor mojoDescriptor = lifecycleExecutor.getMojoDescriptor( "org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process", session.getCurrentProject(), session.getLocalRepository() );
+ MojoDescriptor mojoDescriptor = lifecycleExecutor.getMojoDescriptor( "org.apache.maven.plugins:maven-remote-resources-plugin:1.0:process", session );
Xpp3Dom dom = lifecycleExecutor.convert( mojoDescriptor );
System.out.println( dom );
}
Modified: maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java (original)
+++ maven/components/branches/MNG-2766/maven-core/src/test/java/org/apache/maven/project/EmptyLifecycleExecutor.java Tue May 19 18:53:07 2009
@@ -29,9 +29,14 @@
import org.apache.maven.lifecycle.LifecycleExecutionException;
import org.apache.maven.lifecycle.LifecycleExecutor;
import org.apache.maven.model.Plugin;
+import org.apache.maven.plugin.CycleDetectedInPluginGraphException;
import org.apache.maven.plugin.MojoExecution;
import org.apache.maven.plugin.MojoExecutionException;
import org.apache.maven.plugin.MojoFailureException;
+import org.apache.maven.plugin.MojoNotFoundException;
+import org.apache.maven.plugin.PluginDescriptorParsingException;
+import org.apache.maven.plugin.PluginNotFoundException;
+import org.apache.maven.plugin.PluginResolutionException;
import org.codehaus.plexus.util.xml.Xpp3Dom;
/**
@@ -45,7 +50,7 @@
{
public List<MojoExecution> calculateLifecyclePlan( String lifecyclePhase, MavenSession session )
- throws LifecycleExecutionException
+ throws PluginNotFoundException, PluginResolutionException, PluginDescriptorParsingException, CycleDetectedInPluginGraphException, MojoNotFoundException
{
return Collections.emptyList();
}
@@ -71,10 +76,8 @@
return Collections.emptySet();
}
- public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, MavenProject project,
- ArtifactRepository localRepository )
+ public void populateDefaultConfigurationForPlugins( Collection<Plugin> plugins, ArtifactRepository localRepository, List<ArtifactRepository> remoteRepositories )
throws LifecycleExecutionException
{
}
-
}
Added: maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java?rev=776412&view=auto
==============================================================================
--- maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java (added)
+++ maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java Tue May 19 18:53:07 2009
@@ -0,0 +1,27 @@
+package org.apache.maven.plugin;
+
+import org.apache.maven.plugin.descriptor.PluginDescriptor;
+
+public class MojoNotFoundException
+ extends Exception
+{
+ private String goal;
+
+ private PluginDescriptor pluginDescriptor;
+
+ public MojoNotFoundException( String goal, PluginDescriptor pluginDescriptor )
+ {
+ this.goal = goal;
+ this.pluginDescriptor = pluginDescriptor;
+ }
+
+ public String getGoal()
+ {
+ return goal;
+ }
+
+ public PluginDescriptor getPluginDescriptor()
+ {
+ return pluginDescriptor;
+ }
+}
Propchange: maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java
------------------------------------------------------------------------------
svn:eol-style = native
Propchange: maven/components/branches/MNG-2766/maven-plugin-api/src/main/java/org/apache/maven/plugin/MojoNotFoundException.java
------------------------------------------------------------------------------
svn:keywords = Author Date Id Revision
Modified: maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java (original)
+++ maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/LegacyRepositorySystem.java Tue May 19 18:53:07 2009
@@ -25,6 +25,7 @@
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.manager.WagonManager;
import org.apache.maven.artifact.repository.ArtifactRepository;
import org.apache.maven.artifact.repository.ArtifactRepositoryFactory;
import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
@@ -38,7 +39,10 @@
import org.apache.maven.model.Plugin;
import org.apache.maven.model.Repository;
import org.apache.maven.model.RepositoryPolicy;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
import org.apache.maven.wagon.authentication.AuthenticationInfo;
+import org.apache.maven.wagon.events.TransferListener;
import org.apache.maven.wagon.proxy.ProxyInfo;
import org.apache.maven.wagon.repository.RepositoryPermissions;
import org.codehaus.plexus.component.annotations.Component;
@@ -66,6 +70,9 @@
@Requirement
private MirrorBuilder mirrorBuilder;
+ @Requirement
+ private WagonManager wagonManager;
+
public Artifact createArtifact( String groupId, String artifactId, String version, String scope, String type )
{
return artifactFactory.createArtifact( groupId, artifactId, version, scope, type );
@@ -347,4 +354,16 @@
// ArtifactResolutionResult result = artifactCollector.
return null;
}
+
+ public void retrieve( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor )
+ throws TransferFailedException, ResourceDoesNotExistException
+ {
+ wagonManager.getRemoteFile( repository, destination, remotePath, downloadMonitor, ArtifactRepositoryPolicy.CHECKSUM_POLICY_WARN, true );
+ }
+
+ public void publish( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor )
+ throws TransferFailedException
+ {
+ wagonManager.putRemoteFile( repository, source, remotePath, downloadMonitor );
+ }
}
Modified: maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java (original)
+++ maven/components/branches/MNG-2766/maven-repository/src/main/java/org/apache/maven/repository/RepositorySystem.java Tue May 19 18:53:07 2009
@@ -16,9 +16,7 @@
*/
import java.io.File;
-import java.io.IOException;
import java.util.List;
-import java.util.Set;
import org.apache.maven.artifact.Artifact;
import org.apache.maven.artifact.InvalidRepositoryException;
@@ -28,6 +26,9 @@
import org.apache.maven.model.Dependency;
import org.apache.maven.model.Plugin;
import org.apache.maven.model.Repository;
+import org.apache.maven.wagon.ResourceDoesNotExistException;
+import org.apache.maven.wagon.TransferFailedException;
+import org.apache.maven.wagon.events.TransferListener;
/**
* @author Jason van Zyl
@@ -72,19 +73,23 @@
ArtifactResolutionResult resolve( ArtifactResolutionRequest request );
- /**
- * this is the new metadata-based entry point into repository system. By default - it will transitively resolve metadata
- * for the supplied root GAV and return a flat set of dependency metadatas. Tweaking the request allows user to ask for
- * various formats of the response - resolved tree, resolved graph or dirty tree. Only the resolved tree is implemented now
- * in MercuryRepositorySystem, LegacyRepositorySystem ignores this call for now.
- *
- * @param request - supplies all necessary details for the resolution configuration
- * @return
- */
MetadataResolutionResult resolveMetadata( MetadataResolutionRequest request );
//TODO: remove the request should already be processed to select the mirror for the request instead of the processing happen internally.
// Mirrors
void addMirror( String id, String mirrorOf, String url );
- List<ArtifactRepository> getMirrors( List<ArtifactRepository> repositories );
+ List<ArtifactRepository> getMirrors( List<ArtifactRepository> repositories );
+
+ // Install
+
+ // Deploy
+
+ // Map types of artifacts
+
+ // Raw file transfers
+ void publish( ArtifactRepository repository, File source, String remotePath, TransferListener downloadMonitor )
+ throws TransferFailedException;
+
+ void retrieve( ArtifactRepository repository, File destination, String remotePath, TransferListener downloadMonitor )
+ throws TransferFailedException, ResourceDoesNotExistException;
}
Modified: maven/components/branches/MNG-2766/pom.xml
URL: http://svn.apache.org/viewvc/maven/components/branches/MNG-2766/pom.xml?rev=776412&r1=776411&r2=776412&view=diff
==============================================================================
--- maven/components/branches/MNG-2766/pom.xml (original)
+++ maven/components/branches/MNG-2766/pom.xml Tue May 19 18:53:07 2009
@@ -51,7 +51,7 @@
<doxiaVersion>1.0-alpha-9</doxiaVersion>
<easyMockVersion>1.2_Java1.3</easyMockVersion>
<junitVersion>3.8.1</junitVersion>
- <plexusVersion>1.0-beta-3.0.7</plexusVersion>
+ <plexusVersion>1.0-beta-3.0.8-SNAPSHOT</plexusVersion>
<plexusInterpolationVersion>1.1</plexusInterpolationVersion>
<plexusPluginManagerVersion>1.0-alpha-1</plexusPluginManagerVersion>
<plexusUtilsVersion>1.5.8</plexusUtilsVersion>