Message.info(line.toString());
Message.rawinfo(line.toString());
    public void output(ResolveReport report, File destDir) {        IvyNode[] evicted = report.getEvictedNodes();        if (evicted.length > 0) {            Message.info("\t:: evicted modules:");            for (int i = 0; i < evicted.length; i++) {                Collection allEvictingNodes = evicted[i].getAllEvictingNodes();                if (allEvictingNodes == null) {                    Message.info("\t"+evicted[i]+" transitively in "+Arrays.asList(evicted[i].getEvictedConfs()));                } else if (allEvictingNodes.isEmpty()) {                    Message.info("\t"+evicted[i]+" by [] ("+evicted[i].getAllEvictingConflictManagers()+") in "+Arrays.asList(evicted[i].getEvictedConfs()));                } else {                    Message.info("\t"+evicted[i]+" by "+allEvictingNodes+" in "+Arrays.asList(evicted[i].getEvictedConfs()));                }                String[] confs = evicted[i].getEvictedConfs();                for (int j = 0; j < confs.length; j++) {                    IvyNode.EvictionData evictedData = evicted[i].getEvictedData(confs[j]);                    Message.verbose("\t  in "+evictedData.getNode()+" with "+evictedData.getConflictManager());                }            }        }        char[] sep = new char[69];        Arrays.fill(sep, '-');        Message.info("\t"+new String(sep));        StringBuffer line = new StringBuffer("\t");        append(line, "", 18);        append(line, "modules", 31);        line.append("|");        append(line, "artifacts", 15);        line.append("|");        Message.info(line.toString());        line = new StringBuffer("\t");        append(line, "conf", 18);        append(line, "number", 7);        append(line, "search", 7);        append(line, "dwnlded", 7);        append(line, "evicted", 7);        line.append("|");        append(line, "number", 7);        append(line, "dwnlded", 7);        line.append("|");        Message.info(line.toString());        Message.info("\t"+new String(sep));                String[] confs = report.getConfigurations();        for (int i = 0; i < confs.length; i++) {            output(report.getConfigurationReport(confs[i]));        }        Message.info("\t"+new String(sep));        IvyNode[] unresolved = report.getUnresolvedDependencies();        if (unresolved.length > 0) {            Message.warn("\t::::::::::::::::::::::::::::::::::::::::::::::");            Message.warn("\t::          UNRESOLVED DEPENDENCIES         ::");            Message.warn("\t::::::::::::::::::::::::::::::::::::::::::::::");        }        for (int i = 0; i < unresolved.length; i++) {            Message.warn("\t:: "+unresolved[i]+": "+unresolved[i].getProblem().getMessage());        }        if (unresolved.length > 0) {            Message.warn("\t::::::::::::::::::::::::::::::::::::::::::::::\n");        }        ArtifactDownloadReport[] errors = report.getFailedArtifactsReports();        if (errors.length > 0) {            Message.warn("\t::::::::::::::::::::::::::::::::::::::::::::::");            Message.warn("\t::              FAILED DOWNLOADS            ::");            Message.warn("\t:: ^ see resolution messages for details  ^ ::");            Message.warn("\t::::::::::::::::::::::::::::::::::::::::::::::");        }        for (int i = 0; i < errors.length; i++) {            Message.warn("\t:: "+errors[i].getArtifact());        }        if (errors.length > 0) {            Message.warn("\t::::::::::::::::::::::::::::::::::::::::::::::\n");        }    }