Index: C:/home/holger/Projects/misc/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java =================================================================== --- C:/home/holger/Projects/misc/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java (revision 438448) +++ C:/home/holger/Projects/misc/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseClasspathWriter.java (working copy) @@ -137,9 +137,10 @@ // Source roots and resources // ---------------------------------------------------------------------- - for ( int j = 0; j < config.getSourceDirs().length; j++ ) + EclipseSourceDir[] sourceDirs = config.getSourceDirs(); + for ( int j = 0; j < sourceDirs.length; j++ ) { - EclipseSourceDir dir = config.getSourceDirs()[j]; + EclipseSourceDir dir = sourceDirs[j]; writer.startElement( ELT_CLASSPATHENTRY ); @@ -179,9 +180,11 @@ // The dependencies // ---------------------------------------------------------------------- - for ( int j = 0; j < config.getDeps().length; j++ ) + // TODO if (..magic property equals orderDependencies..) + IdeDependency[] depsToWrite = config.getDepsOrdered(); + for ( int j = 0; j < depsToWrite.length; j++ ) { - IdeDependency dep = config.getDeps()[j]; + IdeDependency dep = depsToWrite[j]; if ( dep.isAddedToClasspath() ) { Index: C:/home/holger/Projects/misc/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java =================================================================== --- C:/home/holger/Projects/misc/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java (revision 438448) +++ C:/home/holger/Projects/misc/maven-eclipse-plugin/src/main/java/org/apache/maven/plugin/eclipse/writers/EclipseWriterConfig.java (working copy) @@ -17,6 +17,8 @@ package org.apache.maven.plugin.eclipse.writers; import java.io.File; +import java.util.Arrays; +import java.util.Comparator; import java.util.List; import org.apache.maven.artifact.repository.ArtifactRepository; @@ -108,6 +110,25 @@ this.deps = deps; } + public IdeDependency[] getDepsOrdered() + { + // TODO get the right comparator depending on orderDependencies={name,nearness..}; + // if none specified it could use a NullComparator to reduce the number of + // conditions that have to be checked + Comparator depsByArtifactId = new Comparator() + { + public int compare(Object o1, Object o2) + { + return ((IdeDependency)o1).getArtifactId().compareTo(((IdeDependency)o2).getArtifactId()); + } + }; + + IdeDependency[] orderedDeps = new IdeDependency[deps.length]; + System.arraycopy(deps, 0, orderedDeps, 0, deps.length); + Arrays.sort(orderedDeps, depsByArtifactId); + return orderedDeps; + } + /** * Getter for eclipseProjectDir. * @return Returns the eclipseProjectDir.