Index: src/java/org/apache/ivy/ModuleId.java
===================================================================
--- src/java/org/apache/ivy/ModuleId.java	(revision 495604)
+++ src/java/org/apache/ivy/ModuleId.java	(working copy)
@@ -22,7 +22,7 @@
  * @author x.hanin
  *
  */
-public class ModuleId {
+public class ModuleId implements Comparable {
     static final String ENCODE_SEPARATOR = ":#@#:";
     private String _organisation;
     private String _name;
@@ -64,6 +64,15 @@
         return "[ "+_organisation+" | "+_name+" ]";
     }
 
+    public int compareTo(Object obj) {
+        ModuleId that = (ModuleId)obj;
+        int result = _organisation.compareTo(that._organisation);
+        if (result == 0) {
+            result = _name.compareTo(that._name);
+        }
+        return result;
+    }
+
     public String encodeToString() {
         return getOrganisation() + ENCODE_SEPARATOR + getName();
     }
Index: src/java/org/apache/ivy/IvyNode.java
===================================================================
--- src/java/org/apache/ivy/IvyNode.java	(revision 495604)
+++ src/java/org/apache/ivy/IvyNode.java	(working copy)
@@ -41,7 +41,7 @@
 import org.apache.ivy.util.Message;
 
 
-public class IvyNode {
+public class IvyNode implements Comparable {
     private static final Pattern FALLBACK_CONF_PATTERN = Pattern.compile("(.+)\\((.*)\\)");
 
     public static class EvictionData {
@@ -1099,6 +1099,11 @@
     public int hashCode() {
         return getId().hashCode();
     }
+
+    public int compareTo(Object obj) {
+        IvyNode that = (IvyNode)obj;
+        return this.getModuleId().compareTo(that.getModuleId());
+    }
     
     /**
      * Returns the configurations of the dependency required in a given 
@@ -1538,4 +1543,7 @@
 		return _data;
 	}
 
+    public DependencyResolver getResolver() {
+        return _module.getResolver();
+    }
 }
Index: src/java/org/apache/ivy/report/LogReportOutputter.java
===================================================================
--- src/java/org/apache/ivy/report/LogReportOutputter.java	(revision 495604)
+++ src/java/org/apache/ivy/report/LogReportOutputter.java	(working copy)
@@ -18,8 +18,11 @@
 package org.apache.ivy.report;
 
 import java.io.File;
+import java.util.ArrayList;
 import java.util.Arrays;
 import java.util.Collection;
+import java.util.Collections;
+import java.util.List;
 
 import org.apache.ivy.IvyNode;
 import org.apache.ivy.util.Message;
@@ -36,7 +39,29 @@
    }
 
     public void output(ResolveReport report, File destDir) {
+        Message.info("\t:: modules in use:");
+        List dependencies = new ArrayList(report.getDependencies());
+        Collections.sort(dependencies);
+        if (dependencies.size() > 0) {
+            String[] confs = report.getConfigurations();
+            for (int i = 0; i < dependencies.size(); i++) {
+                IvyNode node = (IvyNode)dependencies.get(i);
+                if (node.isCompletelyEvicted()) {
+                    continue;
+                }
+                List nodeConfs = new ArrayList(confs.length);
+                for (int j = 0; j < confs.length; j++) {
+                    String conf = confs[j];
+                    if (report.getConfigurationReport(conf).getDependency(node.getId()) != null) {
+                        nodeConfs.add(conf);
+                    }
+                }
+                Message.info("\t"+node+" from "+node.getResolver().getName()+" in "+nodeConfs);
+            }
+        }
+
         IvyNode[] evicted = report.getEvictedNodes();
+
         if (evicted.length > 0) {
             Message.info("\t:: evicted modules:");
             for (int i = 0; i < evicted.length; i++) {
