Maven
  1. Maven
  2. MNG-3975

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

            • Assignee:
              Benjamin Bentmann
              Reporter:
              sumit shah
            • Votes:
              0 Vote for this issue
              Watchers:
              0 Start watching this issue

              Dates

              • Created:
                Updated:
                Resolved: