container/src/main/java/com/streamsets/datacollector/classpath/ClasspathValidatorResult.java
public void logDetails() {
    if(isValid()) {
      return;
    }

    LOG.warn("Validation results for {}", name);

    if(!unparseablePaths.isEmpty()) {
      LOG.warn("Can't parse the following artifacts:");
      for(String path : unparseablePaths) {
        LOG.warn("  {}", path);
      }
    }

    if(!versionCollisions.isEmpty()) {
      LOG.warn("Detected colliding dependency versions:");
      for(Map.Entry<String, Map<String, List<Dependency>>> entry : versionCollisions.entrySet()) {
        LOG.warn("  Dependency {} have versions: {}", entry.getKey(), StringUtils.join(entry.getValue().keySet(), ", "));
        for(Map.Entry<String, List<Dependency>> versionEntry : entry.getValue().entrySet()) {
          LOG.warn("    Version: {}", versionEntry.getKey());
          for(Dependency dependency: versionEntry.getValue()) {
            LOG.warn("      {}", dependency.getSourceName());
          }
        }
      }
    }
  }
public void logDetails() {
    if(isValid()) {
      return;
    }

    LOG.warn("Validation results for {}", name);

    if(!unparseablePaths.isEmpty()) {
      LOG.warn("Can't parse the following artifacts:");
      for(String path : unparseablePaths) {
        LOG.warn("  {}", path);
      }
    }

    if(!versionCollisions.isEmpty()) {
      LOG.warn("Detected colliding dependency versions:");
      for(Map.Entry<String, Map<String, List<Dependency>>> entry : versionCollisions.entrySet()) {
        LOG.warn("  Dependency {} have versions: {}", entry.getKey(), StringUtils.join(entry.getValue().keySet(), ", "));
        for(Map.Entry<String, List<Dependency>> versionEntry : entry.getValue().entrySet()) {
          LOG.warn("    Version: {}", versionEntry.getKey());
          for(Dependency dependency: versionEntry.getValue()) {
            LOG.warn("      {}", dependency.getSourceName());
          }
        }
      }
    }
  }
Generate small report into log.