code: @Override
      public void transferFailed(TransferEvent event) {
          TransferResource resource = event.getResource();
  
          downloads.remove(resource);
  
          StringBuilder sb = new StringBuilder().append("Failed")
              .append(event.getRequestType() == TransferEvent.RequestType.PUT ? " uploading " : " downloading ")
              .append(resource.getResourceName())
              .append(event.getRequestType() == TransferEvent.RequestType.PUT ? " into " : " from ")
              .append(resource.getRepositoryUrl()).append(". ");
  
          if (event.getException() != null) {
              sb.append("Reason: \n").append(event.getException());
          }
  
          log.warning(sb.toString());
      }
docs: /*
  (non-Javadoc)
  
  @see org.sonatype.aether.util.listener.AbstractTransferListener#transferFailed
  (org.sonatype.aether.transfer.TransferEvent)