Index: src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java
===================================================================
--- src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java	(révision 614873)
+++ src/java/org/apache/ivyde/eclipse/cpcontainer/IvyClasspathContainer.java	(copie de travail)
@@ -9,10 +9,12 @@
 import java.util.Arrays;
 import java.util.Collection;
 import java.util.HashMap;
+import java.util.HashSet;
 import java.util.Iterator;
 import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 
 import org.apache.ivy.Ivy;
 import org.apache.ivy.core.cache.DefaultRepositoryCacheManager;
@@ -27,6 +29,8 @@
 import org.apache.ivy.core.module.descriptor.Artifact;
 import org.apache.ivy.core.module.descriptor.DefaultArtifact;
 import org.apache.ivy.core.module.descriptor.ModuleDescriptor;
+import org.apache.ivy.core.module.id.ModuleId;
+import org.apache.ivy.core.module.id.ModuleRevisionId;
 import org.apache.ivy.core.report.ArtifactDownloadReport;
 import org.apache.ivy.core.report.ResolveReport;
 import org.apache.ivy.core.resolve.ResolveOptions;
@@ -218,7 +222,7 @@
                                             + " doesn't contain enough data: resolving again\n");
                                     ResolveReport r = _ivy.resolve(ivyURL, new ResolveOptions()
                                             .setConfs(_confs));
-                                    all.addAll(Arrays.asList(r.getAllArtifactsReports()));
+                                    all.addAll(Arrays.asList(r.getArtifactsReports(null, false)));
                                     confs = r.getConfigurations();
                                     problemMessages.addAll(r.getAllProblemMessages());
                                     maybeRetrieve(md, confs);
@@ -231,7 +235,8 @@
                             ResolveReport report = _ivy.resolve(ivyURL, new ResolveOptions()
                                     .setConfs(_confs));
                             problemMessages = report.getAllProblemMessages();
-                            all = new LinkedHashSet(Arrays.asList(report.getAllArtifactsReports()));
+                            all = new LinkedHashSet(Arrays.asList(report.getArtifactsReports(null,
+                                false)));
                             confs = report.getConfigurations();
                             md = report.getModuleDescriptor();
 
@@ -243,6 +248,8 @@
                             maybeRetrieve(md, confs);
                         }
 
+                        warnIfDuplicates(all);
+
                         classpathEntries[0] = artifacts2ClasspathEntries(all);
                     } catch (ParseException e) {
                         String errorMsg = "Error while parsing the ivy file " + _ivyXmlFile + "\n"
@@ -315,6 +322,53 @@
             }
         }
 
+        /**
+         * Trigger a warn if there are duplicates entries due to configuration conflict.
+         * <p>
+         * TODO: the algorithm can be more clever and find which configuration are conflicting.
+         * 
+         * @param all
+         *            the resolved artifacts
+         */
+        private void warnIfDuplicates(Collection/* <ArtifactDownloadReport> */all) {
+            ArtifactDownloadReport[] reports = (ArtifactDownloadReport[]) all
+                    .toArray(new ArtifactDownloadReport[all.size()]);
+            Set duplicates = new HashSet();
+            for (int i = 0; i < reports.length - 1; i++) {
+                if (IvyPlugin.accept(_javaProject, reports[i].getArtifact())) {
+                    ModuleRevisionId mrid1 = reports[i].getArtifact().getModuleRevisionId();
+                    for (int j = i + 1; j < reports.length; j++) {
+                        if (IvyPlugin.accept(_javaProject, reports[j].getArtifact())) {
+                            ModuleRevisionId mrid2 = reports[j].getArtifact().getModuleRevisionId();
+                            if (mrid1.getModuleId().equals(mrid2.getModuleId()) && !mrid1.getRevision().equals(mrid2.getRevision())) {
+                                duplicates.add(mrid1.getModuleId());
+                                break;
+                            }
+                        }
+                    }
+                }
+            }
+            if (!duplicates.isEmpty()) {
+                StringBuffer buffer = new StringBuffer(
+                        "There are some duplicates entries due to conflicts between the resolved configurations (");
+                for (int i = 0; i < _confs.length; i++) {
+                    buffer.append(_confs[i]);
+                    if (i < _confs.length - 1) {
+                        buffer.append(", ");
+                    }
+                }
+                buffer.append("):\n  - ");
+                Iterator it = duplicates.iterator();
+                while (it.hasNext()) {
+                    buffer.append(it.next());
+                    if (it.hasNext()) {
+                        buffer.append("\n  - ");
+                    }
+                }
+                _ivy.getLoggerEngine().log(buffer.toString(), Message.MSG_WARN);
+            }
+        }
+
         private void maybeRetrieve(ModuleDescriptor md, String[] confs) throws IOException {
             // call retrieve if required
             if (IvyPlugin.shouldDoRetrieve(_javaProject)) {
Index: src/java/org/apache/ivyde/eclipse/IvyPlugin.java
===================================================================
--- src/java/org/apache/ivyde/eclipse/IvyPlugin.java	(révision 614873)
+++ src/java/org/apache/ivyde/eclipse/IvyPlugin.java	(copie de travail)
@@ -406,6 +406,15 @@
         resolve(project);
     }
 
+    /**
+     * Check if the artifact is an artifact which can be added to the classpath container
+     * 
+     * @param project
+     *            the project containing the ivy container
+     * @param artifact
+     *            the artifact to check
+     * @return <code>true</code> if the artifact can be added
+     */
     public static boolean accept(IJavaProject project, Artifact artifact) {
         return getAcceptedTypes(project).contains(artifact.getType())
                 && !getSourcesTypes(project).contains(artifact.getType())
