diff --git a/sample.build.xml b/sample.build.xml
index 96702e4..b7921c4 100644
--- a/sample.build.xml
+++ b/sample.build.xml
@@ -40,7 +40,7 @@
   </target>
 
   <target name="test-all-deps" description="All dependencies tests"
-    depends="test-pom,test-pom-with-parent,test-no-deps,test-pom-deps,test-deps-two-repos,test-deps,test-legacy-pom,test-deps-mirror,test-deps-order,test-deps-MANTTASKS-91">
+    depends="test-pom,test-pom-with-parent,test-no-deps,test-pom-deps,test-deps-two-repos,test-deps,test-legacy-pom,test-deps-mirror,test-deps-order">
     <echo>test-bad-dep and test-invalid-pom-ref must be run manually, since they are intended to fail</echo>
   </target>
 
@@ -252,6 +252,18 @@
       <equals arg1="${reverse.order.property}" arg2="snapshotUniqueFalse-2.0.7-SNAPSHOT.jar:junit-3.8.1.jar"/>
     </condition>
     <fail unless="reverse.order.ok">dependencies junit then it.ant-tasks should be preserved in path: ${reverse.order.property}</fail>
+
+    <artifact:pom file="src/test/pom-order.xml" id="order.project"/>
+    <artifact:dependencies pathId="pom.order.path" verbose="true">
+      <pom refid="order.project"/>
+    </artifact:dependencies>
+    <pathconvert property="pom.order.property" targetos="unix" refid="pom.order.path">
+      <mapper type="flatten"/>
+    </pathconvert>
+    <condition property="pom.order.ok">
+      <equals arg1="${pom.order.property}" arg2="commons-io-1.3.2.jar:commons-lang-2.3.jar:commons-logging-1.1.1.jar:commons-collections-3.2.jar"/>
+    </condition>
+    <fail unless="pom.order.ok">order of dependencies defined in pom should be preserved in path: ${pom.order.property}</fail>
   </target>
 
   <target name="test-deploy-spaces" depends="initTaskDefs,installSshProvider">
diff --git a/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java b/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
index d32a739..12fca21 100644
--- a/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
@@ -27,9 +27,7 @@
 import org.apache.maven.artifact.repository.ArtifactRepositoryPolicy;
 import org.apache.maven.artifact.repository.DefaultArtifactRepository;
 import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-import org.apache.maven.profiles.DefaultProfileManager;
 import org.apache.maven.profiles.ProfileManager;
-import org.apache.maven.profiles.activation.ProfileActivationException;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
@@ -275,7 +273,8 @@
             settings.setLocalRepository( location );
         }
 
-        profileManager = new DefaultProfileManager( getContainer(), getSettings(), System.getProperties() );
+        // removed since it breaks dependencies order when injecting profile dependencies
+        //profileManager = new DefaultProfileManager( getContainer(), getSettings(), System.getProperties() );
 
         WagonManager wagonManager = (WagonManager) lookup( WagonManager.ROLE );
         wagonManager.setDownloadMonitor( new AntDownloadMonitor() );
diff --git a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
index ce5f9b6..bd6ddfc 100644
--- a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
@@ -369,16 +369,20 @@
             Properties properties = new Properties();
             resourceAsStream = DependenciesTask.class.getClassLoader().getResourceAsStream(
                 "META-INF/maven/org.apache.maven/maven-ant-tasks/pom.properties" );
-            properties.load( resourceAsStream );
-
-            if ( properties.getProperty( "builtOn" ) != null )
+            if ( resourceAsStream != null )
             {
-                log( "Maven Ant Tasks version: " + properties.getProperty( "version", "unknown" ) + " built on "
-                                + properties.getProperty( "builtOn" ), Project.MSG_VERBOSE );
+                properties.load( resourceAsStream );
+            }
+
+            String version = properties.getProperty( "version", "unknown" );
+            String builtOn = properties.getProperty( "builtOn" );
+            if ( builtOn != null )
+            {
+                log( "Maven Ant Tasks version: " + version + " built on " + builtOn, Project.MSG_VERBOSE );
             }
             else
             {
-                log( "Maven Ant Tasks version: " + properties.getProperty( "version", "unknown" ), Project.MSG_VERBOSE );
+                log( "Maven Ant Tasks version: " + version, Project.MSG_VERBOSE );
             }
         }
         catch ( IOException e )
diff --git a/src/test/pom-order.xml b/src/test/pom-order.xml
new file mode 100644
index 0000000..25889c7
--- /dev/null
+++ b/src/test/pom-order.xml
@@ -0,0 +1,38 @@
+<?xml version="1.0"?>
+
+<project xmlns="http://maven.apache.org/POM/4.0.0"
+  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
+  xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
+  <modelVersion>4.0.0</modelVersion>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>order</artifactId>
+  <packaging>jar</packaging>
+
+  <name>order</name>
+  <version>0.10-SNAPSHOT</version>
+  <description>
+    Check dependencies order after resolution.
+  </description>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-io</artifactId>
+      <version>1.3.2</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-lang</groupId>
+      <artifactId>commons-lang</artifactId>
+      <version>2.3</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <version>1.1.1</version>
+    </dependency>
+    <dependency>
+      <groupId>commons-collections</groupId>
+      <artifactId>commons-collections</artifactId>
+      <version>3.2</version>
+    </dependency>
+  </dependencies>
+</project>
