From 1f97932050aa7c3872fb243c9154cdc512696fec Mon Sep 17 00:00:00 2001 From: Brett Leslie Porter Date: Thu, 13 Oct 2005 09:51:36 +0000 Subject: [PATCH] PR: MNG-122 cleanup artifact/plugin not found exception git-svn-id: https://svn.apache.org/repos/asf/maven/components/trunk@320704 13f79535-47bb-0310-9956-ffa450edef68 --- .../maven/archetype/DefaultArchetype.java | 4 +- .../maven/artifact/ant/DependenciesTask.java | 5 +- .../ant/InstallWagonProviderTask.java | 5 +- .../lifecycle/DefaultLifecycleExecutor.java | 80 ++++++------ .../maven/plugin/DefaultPluginManager.java | 6 +- .../apache/maven/plugin/PluginManager.java | 4 +- .../maven/plugin/PluginNotFoundException.java | 7 +- .../plugins/projecthelp/DescribeMojo.java | 8 +- .../project/DefaultMavenProjectBuilder.java | 115 +++++++++--------- 9 files changed, 118 insertions(+), 116 deletions(-) diff --git a/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java b/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java index 73bc0c6945..f30984a6f8 100644 --- a/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java +++ b/maven-archetype/maven-archetype-core/src/main/java/org/apache/maven/archetype/DefaultArchetype.java @@ -102,11 +102,11 @@ public void createArchetype( String archetypeGroupId, String archetypeArtifactId } catch ( ArtifactResolutionException e ) { - throw new ArchetypeDescriptorException( "Cannot download archetype.", e ); + throw new ArchetypeDescriptorException( "Error attempting to download archetype: " + e.getMessage(), e ); } catch ( ArtifactNotFoundException e ) { - throw new ArchetypeNotFoundException( "Cannot download archetype.", e ); + throw new ArchetypeNotFoundException( "Archetype does not exist: " + e.getMessage(), e ); } // --------------------------------------------------------------------- diff --git a/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java b/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java index 0ba96e632b..9614e5db02 100755 --- a/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java +++ b/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java @@ -166,12 +166,11 @@ protected void doExecute() } catch ( ArtifactResolutionException e ) { - throw new BuildException( "Unable to resolve artifact", e ); + throw new BuildException( "Unable to resolve artifact: " + e.getMessage(), e ); } catch ( ArtifactNotFoundException e ) { - // TODO: improve handling - throw new BuildException( "Unable to locate artifact", e ); + throw new BuildException( "Dependency not found: " + e.getMessage(), e ); } catch ( InvalidDependencyVersionException e ) { diff --git a/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java b/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java index ee10da670c..5851cb8430 100644 --- a/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java +++ b/maven-artifact-ant/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java @@ -103,11 +103,12 @@ public void doExecute() } catch ( ArtifactResolutionException e ) { - throw new BuildException( "Unable to locate wagon provider in remote repository", e ); + throw new BuildException( "Error downloading wagon provider from the remote repository: " + e.getMessage(), + e ); } catch ( ArtifactNotFoundException e ) { - throw new BuildException( "Unable to locate wagon provider in remote repository", e ); + throw new BuildException( "Unable to locate wagon provider in remote repository: " + e.getMessage(), e ); } log( "Installing provider: " + providerArtifact ); diff --git a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java index 2f931998e8..a2ec5a1723 100644 --- a/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java +++ b/maven-core/src/main/java/org/apache/maven/lifecycle/DefaultLifecycleExecutor.java @@ -42,6 +42,7 @@ import org.apache.maven.plugin.PluginConfigurationException; import org.apache.maven.plugin.PluginManager; import org.apache.maven.plugin.PluginManagerException; +import org.apache.maven.plugin.PluginNotFoundException; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.PluginDescriptor; import org.apache.maven.plugin.lifecycle.Execution; @@ -168,6 +169,10 @@ public MavenExecutionResponse execute( MavenSession session, ReactorManager rm, { response.setException( e ); } + catch ( PluginNotFoundException e ) + { + response.setException( e ); + } finally { response.setFinish( new Date() ); @@ -177,7 +182,8 @@ public MavenExecutionResponse execute( MavenSession session, ReactorManager rm, } private void findExtensions( MavenSession session ) - throws ArtifactNotFoundException, ArtifactResolutionException, LifecycleExecutionException + throws ArtifactNotFoundException, ArtifactResolutionException, LifecycleExecutionException, + PluginNotFoundException { for ( Iterator i = session.getSortedProjects().iterator(); i.hasNext(); ) { @@ -205,7 +211,7 @@ private void executeTaskSegments( List taskSegments, ReactorManager rm, MavenSes MavenProject rootProject, EventDispatcher dispatcher, MavenExecutionResponse response ) throws ArtifactNotFoundException, MojoExecutionException, LifecycleExecutionException, MojoFailureException, - ArtifactResolutionException + ArtifactResolutionException, PluginNotFoundException { for ( Iterator it = taskSegments.iterator(); it.hasNext(); ) { @@ -341,7 +347,7 @@ private void executeGoalAndHandleFailures( String task, MavenSession session, Ma MavenExecutionResponse response, EventDispatcher dispatcher, String event, ReactorManager rm, long buildStartTime, String target ) throws LifecycleExecutionException, MojoExecutionException, MojoFailureException, ArtifactNotFoundException, - ArtifactResolutionException + ArtifactResolutionException, PluginNotFoundException { try { @@ -423,7 +429,8 @@ else if ( ReactorManager.FAIL_AT_END.equals( rm.getFailureBehavior() ) ) } private List segmentTaskListByAggregationNeeds( List tasks, MavenSession session, MavenProject project ) - throws LifecycleExecutionException + throws LifecycleExecutionException, ArtifactNotFoundException, PluginNotFoundException, + ArtifactResolutionException { List segments = new ArrayList(); @@ -454,24 +461,8 @@ private List segmentTaskListByAggregationNeeds( List tasks, MavenSession session } else { - MojoDescriptor mojo = null; - try - { - // definitely a CLI goal, can use prefix - mojo = getMojoDescriptor( task, session, project, task, true ); - } - catch ( ArtifactResolutionException e ) - { - getLogger().info( - "Cannot find mojo descriptor for: \'" + task + "\' - Treating as non-aggregator." ); - getLogger().debug( "", e ); - } - catch ( ArtifactNotFoundException e ) - { - getLogger().info( - "Cannot find mojo descriptor for: \'" + task + "\' - Treating as non-aggregator." ); - getLogger().debug( "", e ); - } + // definitely a CLI goal, can use prefix + MojoDescriptor mojo = getMojoDescriptor( task, session, project, task, true ); // if the mojo descriptor was found, determine aggregator status according to: // 1. whether the mojo declares itself an aggregator @@ -526,7 +517,7 @@ private List segmentTaskListByAggregationNeeds( List tasks, MavenSession session private void executeGoal( String task, MavenSession session, MavenProject project, MavenExecutionResponse response ) throws LifecycleExecutionException, ArtifactNotFoundException, MojoExecutionException, - ArtifactResolutionException, MojoFailureException, InvalidDependencyVersionException + ArtifactResolutionException, MojoFailureException, InvalidDependencyVersionException, PluginNotFoundException { if ( getPhaseToLifecycleMap().containsKey( task ) ) { @@ -545,7 +536,7 @@ private void executeGoal( String task, MavenSession session, MavenProject projec private void executeGoalWithLifecycle( String task, MavenSession session, Map lifecycleMappings, MavenProject project, MavenExecutionResponse response, Lifecycle lifecycle ) throws ArtifactResolutionException, LifecycleExecutionException, MojoExecutionException, MojoFailureException, - ArtifactNotFoundException, InvalidDependencyVersionException + ArtifactNotFoundException, InvalidDependencyVersionException, PluginNotFoundException { List goals = processGoalChain( task, lifecycleMappings, lifecycle ); @@ -562,7 +553,7 @@ private void executeGoalWithLifecycle( String task, MavenSession session, Map li private void executeStandaloneGoal( String task, MavenSession session, MavenProject project, MavenExecutionResponse response ) throws ArtifactResolutionException, LifecycleExecutionException, MojoExecutionException, MojoFailureException, - ArtifactNotFoundException, InvalidDependencyVersionException + ArtifactNotFoundException, InvalidDependencyVersionException, PluginNotFoundException { // guaranteed to come from the CLI and not be part of a phase MojoDescriptor mojoDescriptor = getMojoDescriptor( task, session, project, task, true ); @@ -571,7 +562,7 @@ private void executeStandaloneGoal( String task, MavenSession session, MavenProj private void executeGoals( List goals, MavenSession session, MavenProject project, MavenExecutionResponse response ) throws LifecycleExecutionException, MojoExecutionException, ArtifactResolutionException, MojoFailureException, - ArtifactNotFoundException, InvalidDependencyVersionException + ArtifactNotFoundException, InvalidDependencyVersionException, PluginNotFoundException { for ( Iterator i = goals.iterator(); i.hasNext(); ) { @@ -615,7 +606,8 @@ private void executeGoals( List goals, MavenSession session, MavenProject projec } private List getReports( MavenProject project, MojoExecution mojoExecution, MavenSession session ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException, + PluginNotFoundException { List reportPlugins = project.getReportPlugins(); @@ -701,7 +693,8 @@ private List getReports( MavenProject project, MojoExecution mojoExecution, Mave private List getReports( ReportPlugin reportPlugin, ReportSet reportSet, MavenProject project, MavenSession session, MojoExecution mojoExecution ) - throws ArtifactResolutionException, ArtifactNotFoundException, LifecycleExecutionException + throws ArtifactResolutionException, ArtifactNotFoundException, LifecycleExecutionException, + PluginNotFoundException { PluginDescriptor pluginDescriptor = verifyReportPlugin( reportPlugin, project, session ); @@ -751,7 +744,7 @@ private List getReports( ReportPlugin reportPlugin, ReportSet reportSet, MavenPr private void forkLifecycle( MojoDescriptor mojoDescriptor, MavenSession session, MavenProject project, MavenExecutionResponse response ) throws LifecycleExecutionException, MojoExecutionException, ArtifactResolutionException, MojoFailureException, - ArtifactNotFoundException, InvalidDependencyVersionException + ArtifactNotFoundException, InvalidDependencyVersionException, PluginNotFoundException { PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor(); getLogger().info( "Preparing " + pluginDescriptor.getGoalPrefix() + ":" + mojoDescriptor.getGoal() ); @@ -782,7 +775,7 @@ private void forkLifecycle( MojoDescriptor mojoDescriptor, MavenSession session, private void forkProjectLifecycle( MojoDescriptor mojoDescriptor, MavenSession session, MavenProject project, MavenExecutionResponse response ) throws ArtifactResolutionException, LifecycleExecutionException, MojoExecutionException, MojoFailureException, - ArtifactNotFoundException, InvalidDependencyVersionException + ArtifactNotFoundException, InvalidDependencyVersionException, PluginNotFoundException { PluginDescriptor pluginDescriptor = mojoDescriptor.getPluginDescriptor(); @@ -918,7 +911,8 @@ private void removeFromLifecycle( MojoDescriptor mojoDescriptor, Map lifecycleMa private Map constructLifecycleMappings( MavenSession session, String selectedPhase, MavenProject project, Lifecycle lifecycle ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException, + PluginNotFoundException { // first, bind those associated with the packaging Map lifecycleMappings = bindLifecycleForPackaging( session, selectedPhase, project, lifecycle ); @@ -936,7 +930,8 @@ private Map constructLifecycleMappings( MavenSession session, String selectedPha private Map bindLifecycleForPackaging( MavenSession session, String selectedPhase, MavenProject project, Lifecycle lifecycle ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException, + PluginNotFoundException { Map mappings = findMappingsForLifecycle( session, project, lifecycle ); @@ -979,7 +974,8 @@ private Map bindLifecycleForPackaging( MavenSession session, String selectedPhas } private Map findMappingsForLifecycle( MavenSession session, MavenProject project, Lifecycle lifecycle ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException, + PluginNotFoundException { String packaging = project.getPackaging(); Map mappings = null; @@ -1028,7 +1024,8 @@ private Map findMappingsForLifecycle( MavenSession session, MavenProject project private Object findExtension( MavenProject project, String role, String roleHint, Settings settings, ArtifactRepository localRepository ) - throws ArtifactResolutionException, ArtifactNotFoundException, LifecycleExecutionException + throws ArtifactResolutionException, ArtifactNotFoundException, LifecycleExecutionException, + PluginNotFoundException { Object pluginComponent = null; @@ -1064,7 +1061,8 @@ private Object findExtension( MavenProject project, String role, String roleHint * lookup directly, or have them passed in */ private Map findArtifactTypeHandlers( MavenProject project, Settings settings, ArtifactRepository localRepository ) - throws ArtifactResolutionException, ArtifactNotFoundException, LifecycleExecutionException + throws ArtifactResolutionException, ArtifactNotFoundException, LifecycleExecutionException, + PluginNotFoundException { Map map = new HashMap(); for ( Iterator i = project.getBuildPlugins().iterator(); i.hasNext(); ) @@ -1114,7 +1112,8 @@ private Map findArtifactTypeHandlers( MavenProject project, Settings settings, A * @param session */ private void bindPluginToLifecycle( Plugin plugin, MavenSession session, Map phaseMap, MavenProject project ) - throws LifecycleExecutionException, ArtifactResolutionException, ArtifactNotFoundException + throws LifecycleExecutionException, ArtifactResolutionException, ArtifactNotFoundException, + PluginNotFoundException { PluginDescriptor pluginDescriptor; Settings settings = session.getSettings(); @@ -1149,7 +1148,8 @@ private void bindPluginToLifecycle( Plugin plugin, MavenSession session, Map pha private PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings, ArtifactRepository localRepository ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException, + PluginNotFoundException { PluginDescriptor pluginDescriptor; try @@ -1177,7 +1177,8 @@ private PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Sett } private PluginDescriptor verifyReportPlugin( ReportPlugin plugin, MavenProject project, MavenSession session ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException, + PluginNotFoundException { PluginDescriptor pluginDescriptor; try @@ -1291,7 +1292,8 @@ private List processGoalChain( String task, Map phaseMap, Lifecycle lifecycle ) private MojoDescriptor getMojoDescriptor( String task, MavenSession session, MavenProject project, String invokedVia, boolean canUsePrefix ) - throws ArtifactResolutionException, LifecycleExecutionException, ArtifactNotFoundException + throws LifecycleExecutionException, ArtifactNotFoundException, PluginNotFoundException, + ArtifactResolutionException { String goal; Plugin plugin; diff --git a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java index 0e03f3e579..e67ab98a73 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/DefaultPluginManager.java @@ -147,7 +147,7 @@ public Plugin getPluginDefinitionForPrefix( String prefix, MavenSession session, public PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings, ArtifactRepository localRepository ) throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException, - InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException + InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException { // TODO: this should be possibly outside // All version-resolution logic has been moved to DefaultPluginVersionManager. @@ -164,7 +164,7 @@ public PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Setti private PluginDescriptor verifyVersionedPlugin( Plugin plugin, MavenProject project, ArtifactRepository localRepository ) throws PluginVersionResolutionException, ArtifactNotFoundException, ArtifactResolutionException, - InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException + InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException { // TODO: this might result in an artifact "RELEASE" being resolved continuously // FIXME: need to find out how a plugin gets marked as 'installed' @@ -457,7 +457,7 @@ public MavenReport getReport( MavenProject project, MojoExecution mojoExecution, public PluginDescriptor verifyReportPlugin( ReportPlugin reportPlugin, MavenProject project, MavenSession session ) throws PluginVersionResolutionException, ArtifactResolutionException, ArtifactNotFoundException, - InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException + InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException { String version = reportPlugin.getVersion(); diff --git a/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java b/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java index 884723393e..53d925fc4f 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/PluginManager.java @@ -56,11 +56,11 @@ MavenReport getReport( MavenProject project, MojoExecution mojoExecution, MavenS PluginDescriptor verifyPlugin( Plugin plugin, MavenProject project, Settings settings, ArtifactRepository localRepository ) throws ArtifactResolutionException, PluginVersionResolutionException, ArtifactNotFoundException, - InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException; + InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException; PluginDescriptor verifyReportPlugin( ReportPlugin reportPlugin, MavenProject project, MavenSession session ) throws PluginVersionResolutionException, ArtifactResolutionException, ArtifactNotFoundException, - InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException; + InvalidVersionSpecificationException, InvalidPluginException, PluginManagerException, PluginNotFoundException; Object getPluginComponent( Plugin plugin, String role, String roleHint ) throws PluginManagerException, ComponentLookupException; diff --git a/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java b/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java index 1bd556af68..5ba0b62d24 100644 --- a/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java +++ b/maven-core/src/main/java/org/apache/maven/plugin/PluginNotFoundException.java @@ -16,6 +16,7 @@ * limitations under the License. */ +import org.apache.maven.artifact.resolver.AbstractArtifactResolutionException; import org.apache.maven.artifact.resolver.ArtifactNotFoundException; /** @@ -25,11 +26,11 @@ * @version $Id$ */ public class PluginNotFoundException - extends ArtifactNotFoundException + extends AbstractArtifactResolutionException { public PluginNotFoundException( ArtifactNotFoundException e ) { - super( "Plugin could not be found - check that the goal name is correct", e.getGroupId(), e.getArtifactId(), - e.getVersion(), "maven-plugin", e.getRemoteRepositories(), e.getDownloadUrl(), e.getCause() ); + super( "Plugin could not be found - check that the goal name is correct: " + e.getMessage(), e.getGroupId(), + e.getArtifactId(), e.getVersion(), "maven-plugin", e.getRemoteRepositories(), null, e.getCause() ); } } diff --git a/maven-plugins/maven-projecthelp-plugin/src/main/java/org/apache/maven/plugins/projecthelp/DescribeMojo.java b/maven-plugins/maven-projecthelp-plugin/src/main/java/org/apache/maven/plugins/projecthelp/DescribeMojo.java index 9ac212498d..6375a38f65 100644 --- a/maven-plugins/maven-projecthelp-plugin/src/main/java/org/apache/maven/plugins/projecthelp/DescribeMojo.java +++ b/maven-plugins/maven-projecthelp-plugin/src/main/java/org/apache/maven/plugins/projecthelp/DescribeMojo.java @@ -28,6 +28,7 @@ import org.apache.maven.plugin.MojoFailureException; import org.apache.maven.plugin.PluginManager; import org.apache.maven.plugin.PluginManagerException; +import org.apache.maven.plugin.PluginNotFoundException; import org.apache.maven.plugin.descriptor.MojoDescriptor; import org.apache.maven.plugin.descriptor.Parameter; import org.apache.maven.plugin.descriptor.PluginDescriptor; @@ -321,8 +322,7 @@ else if ( pi.groupId != null && pi.artifactId != null ) } catch ( ArtifactNotFoundException e ) { - throw new MojoExecutionException( "Error retrieving plugin descriptor for:\n\ngroupId: \'" + groupId + - "\'\nartifactId: \'" + artifactId + "\'\nversion: \'" + version + "\'\n\n", e ); + throw new MojoExecutionException( "Plugin dependency does not exist: " + e.getMessage(), e ); } catch ( InvalidVersionSpecificationException e ) { @@ -334,6 +334,10 @@ else if ( pi.groupId != null && pi.artifactId != null ) throw new MojoExecutionException( "Error retrieving plugin descriptor for:\n\ngroupId: \'" + groupId + "\'\nartifactId: \'" + artifactId + "\'\nversion: \'" + version + "\'\n\n", e ); } + catch ( PluginNotFoundException e ) + { + throw new MojoExecutionException( "Plugin does not exist: " + e.getMessage(), e ); + } } return descriptor; diff --git a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java index 1c2d98c3a5..250cf4f066 100644 --- a/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java +++ b/maven-project/src/main/java/org/apache/maven/project/DefaultMavenProjectBuilder.java @@ -380,73 +380,30 @@ private Model findModelFromRepository( Artifact artifact, List remoteArtifactRep artifactResolver.resolve( projectArtifact, remoteArtifactRepositories, localRepository ); File file = projectArtifact.getFile(); - // TODO: how can this not be true? - if ( projectArtifact.isResolved() ) + model = readModel( projectId, file ); + + String downloadUrl = null; + ArtifactStatus status = ArtifactStatus.NONE; + + DistributionManagement distributionManagement = model.getDistributionManagement(); + if ( distributionManagement != null ) { - model = readModel( projectId, file ); + downloadUrl = distributionManagement.getDownloadUrl(); - String downloadUrl = null; - ArtifactStatus status = ArtifactStatus.NONE; - - DistributionManagement distributionManagement = model.getDistributionManagement(); - if ( distributionManagement != null ) - { - downloadUrl = distributionManagement.getDownloadUrl(); - - status = ArtifactStatus.valueOf( distributionManagement.getStatus() ); - } - - // TODO: configurable actions dependant on status - if ( !projectArtifact.isSnapshot() && status.compareTo( ArtifactStatus.DEPLOYED ) < 0 ) - { - // use default policy (enabled, daily update, warn on bad checksum) - ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy(); - // TODO: re-enable [MNG-798/865] - policy.setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER ); - - if ( policy.checkOutOfDate( new Date( file.lastModified() ) ) ) - { - getLogger().info( projectArtifact.getArtifactId() + - ": updating metadata due to status of '" + status + "'" ); - try - { - projectArtifact.setResolved( false ); - artifactResolver.resolveAlways( projectArtifact, remoteArtifactRepositories, - localRepository ); - } - catch ( ArtifactResolutionException e ) - { - getLogger().warn( "Error updating POM - using existing version" ); - getLogger().debug( "Cause", e ); - } - catch ( ArtifactNotFoundException e ) - { - getLogger().warn( "Error updating POM - not found. Removing local copy." ); - getLogger().debug( "Cause", e ); - file.delete(); - throw e; - } - } - } - - // TODO: this is gross. Would like to give it the whole model, but maven-artifact shouldn't depend on that - // Can a maven-core implementation of the Artifact interface store it, and be used in the exceptions? - if ( downloadUrl != null ) - { - projectArtifact.setDownloadUrl( downloadUrl ); - } - else - { - projectArtifact.setDownloadUrl( model.getUrl() ); - } + status = ArtifactStatus.valueOf( distributionManagement.getStatus() ); } - else if ( allowStubModel ) + + checkStatusAndUpdate( projectArtifact, status, file, remoteArtifactRepositories, localRepository ); + + // TODO: this is gross. Would like to give it the whole model, but maven-artifact shouldn't depend on that + // Can a maven-core implementation of the Artifact interface store it, and be used in the exceptions? + if ( downloadUrl != null ) { - model = createStubModel( projectArtifact ); + projectArtifact.setDownloadUrl( downloadUrl ); } else { - throw new ProjectBuildingException( projectId, "POM could not be resolved from the repository" ); + projectArtifact.setDownloadUrl( model.getUrl() ); } } catch ( ArtifactResolutionException e ) @@ -457,6 +414,7 @@ else if ( allowStubModel ) { if ( allowStubModel ) { + getLogger().debug( "Artifact not found - using stub model: " + e.getMessage() ); model = createStubModel( projectArtifact ); } else @@ -473,6 +431,43 @@ else if ( allowStubModel ) return model; } + private void checkStatusAndUpdate( Artifact projectArtifact, ArtifactStatus status, File file, + List remoteArtifactRepositories, ArtifactRepository localRepository ) + throws ArtifactNotFoundException + { + // TODO: configurable actions dependant on status + if ( !projectArtifact.isSnapshot() && status.compareTo( ArtifactStatus.DEPLOYED ) < 0 ) + { + // use default policy (enabled, daily update, warn on bad checksum) + ArtifactRepositoryPolicy policy = new ArtifactRepositoryPolicy(); + // TODO: re-enable [MNG-798/865] + policy.setUpdatePolicy( ArtifactRepositoryPolicy.UPDATE_POLICY_NEVER ); + + if ( policy.checkOutOfDate( new Date( file.lastModified() ) ) ) + { + getLogger().info( + projectArtifact.getArtifactId() + ": updating metadata due to status of '" + status + "'" ); + try + { + projectArtifact.setResolved( false ); + artifactResolver.resolveAlways( projectArtifact, remoteArtifactRepositories, localRepository ); + } + catch ( ArtifactResolutionException e ) + { + getLogger().warn( "Error updating POM - using existing version" ); + getLogger().debug( "Cause", e ); + } + catch ( ArtifactNotFoundException e ) + { + getLogger().warn( "Error updating POM - not found. Removing local copy." ); + getLogger().debug( "Cause", e ); + file.delete(); + throw e; + } + } + } + } + private Model createStubModel( Artifact projectArtifact ) { getLogger().warn( "\n ***** Using defaults for missing POM " + projectArtifact + " *****\n" );