Index: src/java/org/apache/ivy/ModuleId.java
===================================================================
--- src/java/org/apache/ivy/ModuleId.java	(revision 494984)
+++ 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 494984)
+++ 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 494984)
+++ src/java/org/apache/ivy/report/LogReportOutputter.java	(working copy)
@@ -18,9 +18,13 @@
 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.Comparator;
+import java.util.List;
 import org.apache.ivy.IvyNode;
 import org.apache.ivy.util.Message;
 
@@ -36,7 +40,21 @@
    }
 
     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) {
+            for (int i = 0; i < dependencies.size(); i++) {
+                IvyNode node = (IvyNode)dependencies.get(i);
+                if (node.isCompletelyEvicted()) {
+                    continue;
+                }
+                Message.info("\t"+node+" in "+node.getResolver().getName());
+            }
+        }
+
         IvyNode[] evicted = report.getEvictedNodes();
+
         if (evicted.length > 0) {
             Message.info("\t:: evicted modules:");
             for (int i = 0; i < evicted.length; i++) {
