@Override
 public void artifactDownloading(RepositoryEvent event) {
   super.artifactDownloading(event);
   Artifact artifact = event.getArtifact();
   String key = artifactAsString(artifact);
   startTimes.put(key, System.nanoTime());
 }
 @Override
 public void artifactDownloaded(RepositoryEvent event) {
   super.artifactDownloaded(event);
   Artifact artifact = event.getArtifact();
   String key = artifactAsString(artifact);
   long downloadTimeNanos = System.nanoTime() - startTimes.remove(key);
   double downloadTimeMs = TimeUnit.NANOSECONDS.toMillis(downloadTimeNanos);
   double downloadTimeSec = TimeUnit.NANOSECONDS.toSeconds(downloadTimeNanos);
   long size = artifact.getFile().length();
   double sizeK = (1 / 1024D) * size;
   double downloadRateKBytesPerSecond = sizeK / downloadTimeSec;
   info(
       "Downloaded %s (%d bytes) in %gms (%g kbytes/sec).",
       key, size, downloadTimeMs, downloadRateKBytesPerSecond);
 }
 @Override
 public void artifactResolved(RepositoryEvent event) {
   super.artifactResolved(event);
   debug("Resolved %s.", artifactAsString(event.getArtifact()));
 }