code: protected void downloadPlugin(final PluginCoordinates coordinates, final IAsyncResultHandler<File> handler) {
          if (pluginRepositories.isEmpty()) {
              // Didn't find it - no repositories configured!
              handler.handle(AsyncResultImpl.create((File) null));
              return;
          }
  
          final Iterator<URI> iterator = pluginRepositories.iterator();
          URI repoUrl = iterator.next();
          final IAsyncResultHandler<File> handler2 = new IAsyncResultHandler<File>() {
              @Override
              public void handle(IAsyncResult<File> result) {
                  if (result.isSuccess() && result.getResult() == null && iterator.hasNext()) {
                      downloadFromMavenRepo(coordinates, iterator.next(), this);
                  } else {
                      handler.handle(result);
                  }
              }
          };
          downloadFromMavenRepo(coordinates, repoUrl, handler2);
      }
docs: Downloads the plugin via its maven GAV information.  This will first look in the local
  .m2 directory.  If the plugin is not found there, then it will try to download the
  plugin from one of the configured remote maven repositories.