Maven 2 & 3

getArtifact(Artifact artifact, List remoteRepositories) should include Exception in debug log messages.

Details

  • Type: Improvement Improvement
  • Status: Closed Closed
  • Priority: Minor Minor
  • Resolution: Fixed
  • Affects Version/s: 2.0.9
  • Fix Version/s: 2.0.10, 2.1.0
  • Component/s: Logging
  • Labels:
    None
  • Environment:
    Any environment.
  • Complexity:
    Intermediate
  • Number of attachments :
    0

Description

We recently had an issue where the local repo could not be created due to permissions issues. Unfortunately the default output of mvn -X is not helpful in debugging this issue.

In org.apache.maven.wagon.AbstractWagon:

protected void createParentDirectories( File destination )
throws TransferFailedException
{
File destinationDirectory = destination.getParentFile();
if ( destinationDirectory != null && !destinationDirectory.exists() )
{
if ( !destinationDirectory.mkdirs() )

{ throw new TransferFailedException( "Specified destination directory cannot be created: " + destinationDirectory ); }

}
}

if TransferFailedException("Specified destination directory cannot be created: " + destinationDirectory ); is thrown it eventually bubbles up to org.apache.maven.artifact.manager.DefaultWagonManager and is caught in the second catch block from this snippet of public void getArtifact( Artifact artifact, List remoteRepositories ):

try

{ getArtifact( artifact, repository ); successful = artifact.isResolved(); }

catch ( ResourceDoesNotExistException e )

{ // This one we will eat when looking through remote repositories // because we want to cycle through them all before squawking. getLogger().debug( "Unable to get resource '" + artifact.getId() + "' from repository " + repository.getId() + " (" + repository.getUrl() + ")" ); }

catch ( TransferFailedException e )

{ getLogger().debug( "Unable to get resource '" + artifact.getId() + "' from repository " + repository.getId() + " (" + repository.getUrl() + ")" ); }

Can we also include the exception in the debug log message? e.g. make this call:

getLogger().debug( "Unable to get resource '" + artifact.getId() + "' from repository " +
repository.getId() + " (" + repository.getUrl() + ")" , e);

Issue Links

Activity

Hide
Benjamin Bentmann added a comment -

Fixed in r734502 and r734503, respectively.

I opted to only output the message of the inner exception instead of the entire stack trace. This should be sufficient to diagnose the problem ("Specified destination directory cannot be created: <path>") and doesn't cause excessive debug output which I doubt is useful for the normal user who is not going to jump into the sources.

Show
Benjamin Bentmann added a comment - Fixed in r734502 and r734503, respectively. I opted to only output the message of the inner exception instead of the entire stack trace. This should be sufficient to diagnose the problem ("Specified destination directory cannot be created: <path>") and doesn't cause excessive debug output which I doubt is useful for the normal user who is not going to jump into the sources.
Hide
Benjamin Bentmann added a comment -

Also merged into 2.0.10 branch in r737502.

Show
Benjamin Bentmann added a comment - Also merged into 2.0.10 branch in r737502.

People

Vote (0)
Watch (0)

Dates

  • Created:
    Updated:
    Resolved: