diff --git a/pom.xml b/pom.xml
index 0047523..3e4b63c 100644
--- a/pom.xml
+++ b/pom.xml
@@ -24,7 +24,7 @@
   </parent>
   <modelVersion>4.0.0</modelVersion>
   <artifactId>maven-ant-tasks</artifactId>
-  <version>2.0.7-SNAPSHOT</version>
+  <version>2.0.7</version>
   <name>Maven Ant Task</name>
   <build>
     <pluginManagement>
@@ -82,7 +82,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-project</artifactId>
-      <version>2.0.6</version>
+      <version>2.0.7</version>
       <exclusions>
         <exclusion>
           <artifactId>junit</artifactId>
@@ -93,12 +93,12 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-error-diagnostics</artifactId>
-      <version>2.0.6</version>
+      <version>2.0.7</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-settings</artifactId>
-      <version>2.0.6</version>
+      <version>2.0.7</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>
@@ -118,7 +118,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact-manager</artifactId>
-      <version>2.0.6</version>
+      <version>2.0.7</version>
       <exclusions>
         <exclusion>
           <artifactId>junit</artifactId>
@@ -134,7 +134,7 @@
     <dependency>
       <groupId>org.apache.maven</groupId>
       <artifactId>maven-artifact</artifactId>
-      <version>2.0.6</version>
+      <version>2.0.7</version>
     </dependency>
     <dependency>
       <groupId>org.apache.maven.wagon</groupId>
@@ -147,4 +147,10 @@
       <version>1.0-alpha-9-stable-1</version>
     </dependency>
   </dependencies>
+
+  <scm>
+    <connection>scm:svn:https://svn.apache.org/repos/asf/maven/ant-tasks/tags/maven-ant-tasks-2.0.7</connection>
+    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/ant-tasks/tags/maven-ant-tasks-2.0.7</developerConnection>
+    <url>https://svn.apache.org/repos/asf/maven/ant-tasks/tags/maven-ant-tasks-2.0.7</url>
+  </scm>
 </project>
diff --git a/sample.build.xml b/sample.build.xml
index e5d48da..ec8ff49 100644
--- a/sample.build.xml
+++ b/sample.build.xml
@@ -39,7 +39,7 @@
   </target>
   
   <target name="test-all-deps" description="All dependencies tests"
-    depends="test-pom,test-no-deps,test-pom-deps,test-deps,test-legacy-pom">
+    depends="test-pom,test-pom-with-parent,test-no-deps,test-pom-deps,test-deps,test-legacy-pom">
     <echo>test-bad-dep and test-invalid-pom-ref must be run manually, since they are intended to fail</echo>
   </target>
 
@@ -47,7 +47,7 @@
     depends="test-deploy-spaces,test-deploy,test-no-dist-mgmt,test-install-attached,test-deploy-attached"/>
 
   <target name="test-all" description="All tests"
-    depends="test-all-deps,test-all-pubs">
+    depends="test-all-deps,test-all-pubs,test-install-provider">
     <echo>test-scm not run, since it fails...</echo>
   </target>
 
@@ -59,6 +59,11 @@
     </copy>
   </target>
 
+  <target name="test-empty-settings" depends="initTaskDefs">
+    <artifact:dependencies filesetId="runtime.fileset" settingsFile="${basedir}/src/test/settings-empty.xml">
+    </artifact:dependencies>
+  </target>
+
   <target name="test-bad-dep" depends="initTaskDefs">
     <artifact:dependencies pathId="dependency.classpath" filesetId="dependency.fileset">
       <dependency groupId="foo" artifactId="foo" version="1.0-alpha-2"/>
@@ -86,13 +91,12 @@
       <dependency groupId="org.apache.maven.wagon" artifactId="wagon-provider-test" version="1.0-alpha-4">
         <exclusion groupId="junit" artifactId="junit"/>
       </dependency>
-      <dependency groupId="org.apache.maven.archiva" artifactId="archiva-configuration" version="1.0-SNAPSHOT">
-        <exclusion groupId="junit" artifactId="junit"/>
-      </dependency>
       <dependency groupId="org.apache.maven" artifactId="maven-core-it-support-old-location" version="1.1"/>
+      <dependency groupId="it.ant-tasks" artifactId="snapshotUniqueFalse" version="2.0.7-SNAPSHOT"/>
+      <dependency groupId="it.ant-tasks" artifactId="snapshotUniqueTrue" version="2.0.7-SNAPSHOT"/>
       <localRepository refid="local.repository"/>
       <remoteRepository url="http://repo1.maven.org/maven2" id="central" />
-      <remoteRepository url="http://people.apache.org/repo/m2-snapshot-repository">
+      <remoteRepository url="file://${user.dir}/src/test/repo">
         <snapshots enabled="true"/>
         <releases enabled="false"/>
       </remoteRepository>
@@ -106,9 +110,11 @@
     </copy>
     <available file="target/files/binaries/junit/junit" type="dir" property="exclusion.dependency"/>
     <fail if="exclusion.dependency">excluded dependency junit:junit shouldn't be in target/files/binaries</fail>
-    <available file="target/files/binaries/org/apache/maven/archive/archiva-configuration" type="dir" property="snapshot.dependency"/>
+    <available file="target/files/binaries/it/ant-tasks/snapshotUniqueFalse" type="dir" property="snapshot.dependency.uniqueFalse"/>
+    <fail unless="snapshot.dependency.uniqueFalse">SNAPSHOT dependency it.ant-tasks:snapshotUniqueFalse:2.0.7-SNAPSHOT should be in target/files/binaries</fail>
+    <available file="target/files/binaries/it/ant-tasks/snapshotUniqueTrue" type="dir" property="snapshot.dependency.uniqueTrue"/>
     <!-- MANTTASKS-18 -->
-    <fail unless="snapshot.dependency">SNAPSHOT dependency org.apache.maven.archiva:archiva-configuration:1.0-SNAPSHOT should be in target/files/binaries</fail>
+    <fail unless="snapshot.dependency.uniqueTrue">SNAPSHOT dependency it.ant-tasks:snapshotUniqueTrue:2.0.7-SNAPSHOT should be in target/files/binaries</fail>
   </target>
 
   <target name="test-pom-deps" depends="initTaskDefs">
@@ -265,5 +271,22 @@
       <attach file="${basedir}/target/sample-build-test.pom.asc" type="pom.asc"/>
     </artifact:install>
   </target>
-</project>
 
+  <target name="test-install-provider" depends="initTaskDefs">
+    <artifact:install-provider groupId="it.ant-tasks" artifactId="wagon-foo" version="1.0-beta-2">
+      <localRepository refid="local.repository"/>
+      <remoteRepository url="file://${user.dir}/src/test/repo"/>
+    </artifact:install-provider>
+  </target>
+
+  <target name="test-pom-with-parent" depends="initTaskDefs">
+    <artifact:pom file="${user.dir}/src/test/pom-with-parent.xml" id="my.maven.project">
+      <localRepository refid="local.repository"/>
+      <remoteRepository url="file://${user.dir}/src/test/repo"/>
+    </artifact:pom>
+
+    <echo>Artifact ID = ${my.maven.project.artifactId}</echo>
+
+    <echo>Parent Artifact ID = ${my.maven.project.parent.artifactId}</echo>
+  </target>
+</project>
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 dcbb203..52d91dd 100644
--- a/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactTask.java
@@ -91,6 +91,11 @@
         return new DefaultArtifactRepository( "local", "file://" + localRepository.getPath(), repositoryLayout );
     }
 
+    /**
+     * Create a core-Maven ArtifactRepository from a Maven Ant Tasks's RemoteRepository definition.
+     * @param repository the remote repository as defined in Ant
+     * @return the corresponding ArtifactRepository
+     */
     protected ArtifactRepository createRemoteArtifactRepository( RemoteRepository repository )
     {
         ArtifactRepositoryLayout repositoryLayout =
@@ -177,8 +182,6 @@
     {
         if ( settings == null )
         {
-            settings = new Settings();
-
             File settingsFile = new File( System.getProperty( "user.home" ), ".ant/settings.xml" );
             if ( !settingsFile.exists() )
             {
@@ -205,19 +208,19 @@
 
             if ( settingsFile.exists() )
             {
-                loadSettings(settingsFile);
+                loadSettings( settingsFile );
             }
-
-            if ( StringUtils.isEmpty( settings.getLocalRepository() ) )
+            else
             {
-                String location = new File( System.getProperty( "user.home" ), ".m2/repository" ).getAbsolutePath();
-                settings.setLocalRepository( location );
+                settings = new Settings();
+                checkSettingsLocalRepository();
             }
         }
         return settings;
     }
 
-    private void loadSettings(File settingsFile) {
+    private void loadSettings( File settingsFile )
+    {
         FileReader reader = null;
         try
         {
@@ -227,6 +230,8 @@
             SettingsXpp3Reader modelReader = new SettingsXpp3Reader();
 
             settings = modelReader.read( reader );
+
+            checkSettingsLocalRepository();
         }
         catch ( IOException e )
         {
@@ -244,10 +249,20 @@
         }
     }
     
-    public void setSettingsFile(File settingsFile) {
-        if (!settingsFile.exists()) throw new BuildException("settingsFile does not exist: " + settingsFile.getAbsolutePath());
-        settings = new Settings();
-        loadSettings(settingsFile);
+    private void checkSettingsLocalRepository()
+    {
+        if ( StringUtils.isEmpty( settings.getLocalRepository() ) )
+        {
+            String location = new File( System.getProperty( "user.home" ), ".m2/repository" ).getAbsolutePath();
+            settings.setLocalRepository( location );
+        }
+    }
+
+    public void setSettingsFile( File settingsFile )
+    {
+        if ( !settingsFile.exists() )
+            throw new BuildException( "settingsFile does not exist: " + settingsFile.getAbsolutePath() );
+        loadSettings( settingsFile );
     }
 
     protected RemoteRepository createAntRemoteRepository( org.apache.maven.model.Repository pomRepository )
@@ -322,18 +337,6 @@
         }
     }
 
-    protected static RemoteRepository getDefaultRemoteRepository()
-    {
-        // TODO: could we utilise the super POM for this?
-        RemoteRepository remoteRepository = new RemoteRepository();
-        remoteRepository.setId( "central" );
-        remoteRepository.setUrl( "http://repo1.maven.org/maven2" );
-        RepositoryPolicy snapshots = new RepositoryPolicy();
-        snapshots.setEnabled( false );
-        remoteRepository.addSnapshots( snapshots );
-        return remoteRepository;
-    }
-
     protected synchronized PlexusContainer getContainer()
     {
         if ( container == null )
diff --git a/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactWithRepositoryTask.java b/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactWithRepositoryTask.java
new file mode 100644
index 0000000..e0fd58a
--- /dev/null
+++ b/src/main/java/org/apache/maven/artifact/ant/AbstractArtifactWithRepositoryTask.java
@@ -0,0 +1,109 @@
+package org.apache.maven.artifact.ant;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *  http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.List;
+
+import org.apache.tools.ant.Project;
+
+/**
+ * Base class for atifact tasks that are able to download artifact from repote repositories. 
+ * @version $Id:$
+ */
+public abstract class AbstractArtifactWithRepositoryTask
+    extends AbstractArtifactTask
+{
+    /**
+     * List of Ant Tasks RemoteRepository-ies
+     */
+    private List remoteRepositories = new ArrayList();
+
+    /**
+     * Get the default remote repository.
+     * @return central repository 
+     */
+    private static RemoteRepository getDefaultRemoteRepository()
+    {
+        // TODO: could we utilise the super POM for this?
+        RemoteRepository remoteRepository = new RemoteRepository();
+        remoteRepository.setId( "central" );
+        remoteRepository.setUrl( "http://repo1.maven.org/maven2" );
+        RepositoryPolicy snapshots = new RepositoryPolicy();
+        snapshots.setEnabled( false );
+        remoteRepository.addSnapshots( snapshots );
+        return remoteRepository;
+    }
+
+    private static String statusAsString( RepositoryPolicy policy )
+    {
+        return (policy == null) || policy.isEnabled() ? "enabled" : "disabled";
+    }
+
+    /**
+     * Create the list of ArtifactRepository-ies where artifacts can be downloaded. If
+     * no remote repository has been configured, adds central repository.
+     * @return the list of ArtifactRepository-ies
+     * @see #createRemoteArtifactRepository(RemoteRepository)
+     */
+    protected List createRemoteArtifactRepositories()
+    {
+        if ( getRemoteRepositories().isEmpty() )
+        {
+            addRemoteRepository( getDefaultRemoteRepository() );
+        }
+
+        log( "Using remote repositories:", Project.MSG_VERBOSE );
+        List list = new ArrayList();
+        for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
+        {
+            RemoteRepository remoteRepository = (RemoteRepository) i.next();
+    
+            StringBuffer msg = new StringBuffer();
+            msg.append( "  - id=" + remoteRepository.getId() );
+            msg.append( ", url=" + remoteRepository.getUrl() );
+            msg.append( ", releases=" + statusAsString( remoteRepository.getReleases() ) );
+            msg.append( ", snapshots=" + statusAsString( remoteRepository.getSnapshots() ) );
+            if ( remoteRepository.getAuthentication() != null )
+            {
+                msg.append( ", authentication=" + remoteRepository.getAuthentication().getUserName() );
+            }
+            if ( remoteRepository.getProxy() != null )
+            {
+                msg.append( ", proxy=" + remoteRepository.getProxy().getHost() );
+            }
+            getProject().log( msg.toString(), Project.MSG_VERBOSE );
+    
+            list.add( createRemoteArtifactRepository( remoteRepository ) );
+        }
+        return list;
+    }
+
+    public List getRemoteRepositories()
+    {
+        return remoteRepositories;
+    }
+
+    public void addRemoteRepository( RemoteRepository remoteRepository )
+    {
+        remoteRepositories.add( remoteRepository );
+    }
+}
\ No newline at end of file
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 fda83a7..8559d5f 100644
--- a/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/DependenciesTask.java
@@ -63,12 +63,10 @@
  * @version $Id$
  */
 public class DependenciesTask
-    extends AbstractArtifactTask
+    extends AbstractArtifactWithRepositoryTask
 {
     private List dependencies = new ArrayList();
 
-    private List remoteRepositories = new ArrayList();
-
     private String pathId;
 
     private String filesetId;
@@ -134,12 +132,7 @@
         ArtifactResolutionResult result;
         Set artifacts;
 
-        if ( getRemoteRepositories().isEmpty() )
-        {
-            addRemoteRepository( getDefaultRemoteRepository() );
-        }
-
-        List remoteArtifactRepositories = createRemoteArtifactRepositories( getRemoteRepositories() );
+        List remoteArtifactRepositories = createRemoteArtifactRepositories();
 
         try
         {
@@ -196,7 +189,6 @@
         {
             throw new BuildException( "Reference ID " + pathId + " already exists" );
         }
-        */
 
         if ( filesetId != null && getProject().getReference( filesetId ) != null )
         {
@@ -207,6 +199,7 @@
         {
             throw new BuildException( "Reference ID " + sourcesFilesetId + " already exists" );
         }
+        */
 
         FileList fileList = new FileList();
         fileList.setDir( getLocalRepository().getPath() );
@@ -232,6 +225,7 @@
             for ( Iterator i = result.getArtifacts().iterator(); i.hasNext(); )
             {
                 Artifact artifact = (Artifact) i.next();
+                artifact.isSnapshot(); // MNG-2961: DefaultArtifact getBaseVersion is changed to "xxxx-SNAPSHOT" only if you first call isSnapshot()
                 String filename = localRepo.pathOf( artifact );
 
                 FileList.FileName file = new FileList.FileName();
@@ -301,49 +295,6 @@
         }
     }
 
-    private static String statusAsString( RepositoryPolicy policy )
-    {
-        return (policy == null) || policy.isEnabled() ? "enabled" : "disabled";
-    }
-
-    private List createRemoteArtifactRepositories( List remoteRepositories )
-    {
-        log( "Using remote repositories:", Project.MSG_VERBOSE );
-        List list = new ArrayList();
-        for ( Iterator i = remoteRepositories.iterator(); i.hasNext(); )
-        {
-            RemoteRepository remoteRepository = (RemoteRepository) i.next();
-
-            StringBuffer msg = new StringBuffer();
-            msg.append( "  - id=" + remoteRepository.getId() );
-            msg.append( ", url=" + remoteRepository.getUrl() );
-            msg.append( ", releases=" + statusAsString( remoteRepository.getReleases() ) );
-            msg.append( ", snapshots=" + statusAsString( remoteRepository.getSnapshots() ) );
-            if ( remoteRepository.getAuthentication() != null )
-            {
-                msg.append( ", authentication=" + remoteRepository.getAuthentication().getUserName() );
-            }
-            if ( remoteRepository.getProxy() != null )
-            {
-                msg.append( ", proxy=" + remoteRepository.getProxy().getHost() );
-            }
-            getProject().log( msg.toString(), Project.MSG_VERBOSE );
-
-            list.add( createRemoteArtifactRepository( remoteRepository ) );
-        }
-        return list;
-    }
-
-    public List getRemoteRepositories()
-    {
-        return remoteRepositories;
-    }
-
-    public void addRemoteRepository( RemoteRepository remoteRepository )
-    {
-        remoteRepositories.add( remoteRepository );
-    }
-
     public List getDependencies()
     {
         return dependencies;
diff --git a/src/main/java/org/apache/maven/artifact/ant/InstallDeployTaskSupport.java b/src/main/java/org/apache/maven/artifact/ant/InstallDeployTaskSupport.java
index 8f470e9..be30d16 100644
--- a/src/main/java/org/apache/maven/artifact/ant/InstallDeployTaskSupport.java
+++ b/src/main/java/org/apache/maven/artifact/ant/InstallDeployTaskSupport.java
@@ -21,18 +21,10 @@
 
 import java.io.File;
 import java.util.List;
-import java.util.Iterator;
 import java.util.ArrayList;
 
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.Artifact;
 import org.apache.maven.artifact.factory.ArtifactFactory;
-import org.apache.maven.artifact.installer.ArtifactInstaller;
-import org.apache.maven.artifact.installer.ArtifactInstallationException;
-import org.apache.maven.artifact.metadata.ArtifactMetadata;
-import org.apache.maven.project.MavenProjectBuilder;
-import org.apache.maven.project.artifact.ProjectArtifactMetadata;
-import org.apache.tools.ant.BuildException;
 
 /**
  * Support for install/deploy tasks.
diff --git a/src/main/java/org/apache/maven/artifact/ant/InstallTask.java b/src/main/java/org/apache/maven/artifact/ant/InstallTask.java
index f18432e..36312bc 100644
--- a/src/main/java/org/apache/maven/artifact/ant/InstallTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/InstallTask.java
@@ -20,7 +20,6 @@
  */
 
 import org.apache.maven.artifact.Artifact;
-import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.installer.ArtifactInstallationException;
 import org.apache.maven.artifact.installer.ArtifactInstaller;
 import org.apache.maven.artifact.metadata.ArtifactMetadata;
@@ -29,9 +28,6 @@
 import org.apache.maven.project.artifact.ProjectArtifactMetadata;
 import org.apache.tools.ant.BuildException;
 
-import java.io.File;
-import java.util.List;
-import java.util.ArrayList;
 import java.util.Iterator;
 
 /**
diff --git a/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java b/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java
index 72d1889..658b49e 100644
--- a/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java
+++ b/src/main/java/org/apache/maven/artifact/ant/InstallWagonProviderTask.java
@@ -23,7 +23,6 @@
 import org.apache.maven.artifact.ArtifactUtils;
 import org.apache.maven.artifact.factory.ArtifactFactory;
 import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
-import org.apache.maven.artifact.repository.ArtifactRepository;
 import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionException;
 import org.apache.maven.artifact.resolver.ArtifactResolutionResult;
@@ -34,6 +33,7 @@
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.codehaus.plexus.PlexusContainerException;
+
 import java.util.Collections;
 import java.util.Iterator;
 import java.util.List;
@@ -45,13 +45,23 @@
  * @version $Id$
  */
 public class InstallWagonProviderTask
-    extends AbstractArtifactTask
+    extends AbstractArtifactWithRepositoryTask
 {
+	private String groupId = "org.apache.maven.wagon";
+	
     private String artifactId;
 
     private String version;
 
-    private static final String WAGON_GROUP_ID = "org.apache.maven.wagon";
+    public String getGroupId()
+    {
+    	return groupId;
+    }
+    
+    public void setGroupId( String groupId )
+    {
+    	this.groupId = groupId;
+    }
 
     public String getArtifactId()
     {
@@ -76,12 +86,6 @@
     public void doExecute()
         throws BuildException
     {
-        MavenMetadataSource metadataSource = (MavenMetadataSource) lookup( ArtifactMetadataSource.ROLE );
-
-        ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
-        ArtifactRepository artifactRepository = createRemoteArtifactRepository( getDefaultRemoteRepository() );
-        List remoteRepositories = Collections.singletonList( artifactRepository );
-
         VersionRange versionRange;
         try
         {
@@ -90,16 +94,20 @@
         catch ( InvalidVersionSpecificationException e )
         {
             throw new BuildException( "Unable to get extension '" +
-                ArtifactUtils.versionlessKey( WAGON_GROUP_ID, artifactId ) + "' because version '" + version +
+                ArtifactUtils.versionlessKey( groupId, artifactId ) + "' because version '" + version +
                 " is invalid: " + e.getMessage(), e );
         }
 
         ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
-        Artifact providerArtifact = factory.createExtensionArtifact( WAGON_GROUP_ID, artifactId, versionRange );
+        Artifact providerArtifact = factory.createExtensionArtifact( groupId, artifactId, versionRange );
 
         ArtifactResolutionResult result;
         try
         {
+            MavenMetadataSource metadataSource = (MavenMetadataSource) lookup( ArtifactMetadataSource.ROLE );
+            ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
+            List remoteRepositories = createRemoteArtifactRepositories();
+
             result = resolver.resolveTransitively( Collections.singleton( providerArtifact ),
                                                    createArtifact( createDummyPom() ), createLocalArtifactRepository(),
                                                    remoteRepositories, metadataSource, null );
diff --git a/src/main/java/org/apache/maven/artifact/ant/Pom.java b/src/main/java/org/apache/maven/artifact/ant/Pom.java
index 7d60ca4..da222c1 100644
--- a/src/main/java/org/apache/maven/artifact/ant/Pom.java
+++ b/src/main/java/org/apache/maven/artifact/ant/Pom.java
@@ -19,24 +19,42 @@
  * under the License.
  */
 
+import org.apache.maven.artifact.Artifact;
+import org.apache.maven.artifact.factory.ArtifactFactory;
+import org.apache.maven.artifact.metadata.ArtifactMetadataSource;
 import org.apache.maven.artifact.repository.ArtifactRepository;
+import org.apache.maven.artifact.resolver.ArtifactNotFoundException;
+import org.apache.maven.artifact.resolver.ArtifactResolutionException;
+import org.apache.maven.artifact.resolver.ArtifactResolver;
 import org.apache.maven.model.Build;
 import org.apache.maven.model.CiManagement;
 import org.apache.maven.model.DependencyManagement;
 import org.apache.maven.model.DistributionManagement;
 import org.apache.maven.model.IssueManagement;
+import org.apache.maven.model.Model;
 import org.apache.maven.model.Organization;
+import org.apache.maven.model.Parent;
 import org.apache.maven.model.Reporting;
 import org.apache.maven.model.Scm;
+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
 import org.apache.maven.project.MavenProject;
 import org.apache.maven.project.MavenProjectBuilder;
 import org.apache.maven.project.ProjectBuildingException;
+import org.apache.maven.project.artifact.MavenMetadataSource;
 import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.Project;
 import org.apache.tools.ant.PropertyHelper;
 import org.codehaus.plexus.util.introspection.ReflectionValueExtractor;
+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
 
 import java.io.File;
+import java.io.FileInputStream;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.InputStreamReader;
+import java.io.Reader;
+import java.util.Collections;
+import java.util.List;
 
 /**
  * A POM typedef.
@@ -53,7 +71,7 @@
  * @version $Id$
  */
 public class Pom
-    extends AbstractArtifactTask
+    extends AbstractArtifactWithRepositoryTask
 {
     private String refid;
 
@@ -123,6 +141,8 @@
         // TODO: should this be in execute() too? Would that work when it is used as a type?
         if ( file != null )
         {
+            checkParentPom();
+            
             try
             {
                 // TODO: should the profiles be constructed and passed in here? From Ant, or perhaps settings?
@@ -130,7 +150,7 @@
             }
             catch ( ProjectBuildingException e )
             {
-                throw new BuildException( "Unable to build project: " + file, e );
+                throw new BuildException( "Unable to initialize POM " + file.getName() + ": " + e.getMessage(), e );
             }
         }
         else if ( refid != null )
@@ -138,6 +158,56 @@
             getInstance().initialise( builder, localRepository );
         }
     }
+    
+    private void checkParentPom()
+    {
+        Model model = null;
+        try
+        {
+            InputStream in = new FileInputStream( file );
+            Reader reader = new InputStreamReader( in, "UTF-8" );
+            model = new MavenXpp3Reader().read( reader );
+        }
+        catch ( IOException e )
+        {
+            throw new BuildException( "IO error while reading pom: " + e.getMessage(), e );
+        }
+        catch ( XmlPullParserException e )
+        {
+            throw new BuildException( "Error parsing pom: " + e.getMessage(), e );
+        }
+
+        if ( model.getParent() != null && model.getParent().getRelativePath() != null )
+        {
+            // resolve parent pom
+            Parent parent = model.getParent();
+            String groupId = parent.getGroupId();
+            String artifactId = parent.getArtifactId();
+            String version = parent.getVersion();
+
+            ArtifactFactory factory = (ArtifactFactory) lookup( ArtifactFactory.ROLE );
+            Artifact parentArtifact = factory.createParentArtifact( groupId, artifactId, version );
+
+            try
+            {
+                MavenMetadataSource metadataSource = (MavenMetadataSource) lookup( ArtifactMetadataSource.ROLE );
+                ArtifactResolver resolver = (ArtifactResolver) lookup( ArtifactResolver.ROLE );
+                List remoteRepositories = createRemoteArtifactRepositories();
+
+                resolver.resolveTransitively( Collections.singleton( parentArtifact ),
+                                              createArtifact( createDummyPom() ), createLocalArtifactRepository(),
+                                              remoteRepositories, metadataSource, null );
+            }
+            catch ( ArtifactResolutionException e )
+            {
+                throw new BuildException( "Error downloading parent pom: " + e.getMessage(), e );
+            }
+            catch ( ArtifactNotFoundException e )
+            {
+                throw new BuildException( "Unable to download parent pom in remote repository: " + e.getMessage(), e );
+            }
+        }
+    }
 
     protected MavenProject getMavenProject()
     {
diff --git a/src/main/java/org/apache/maven/artifact/ant/Repository.java b/src/main/java/org/apache/maven/artifact/ant/Repository.java
index a7472ff..7601cd0 100644
--- a/src/main/java/org/apache/maven/artifact/ant/Repository.java
+++ b/src/main/java/org/apache/maven/artifact/ant/Repository.java
@@ -19,7 +19,6 @@
  * under the License.
  */
 
-import org.apache.tools.ant.BuildException;
 import org.apache.tools.ant.ProjectComponent;
 
 /**
diff --git a/src/test/pom-with-parent.xml b/src/test/pom-with-parent.xml
new file mode 100644
index 0000000..456289a
--- /dev/null
+++ b/src/test/pom-with-parent.xml
@@ -0,0 +1,10 @@
+<project>
+  <parent>
+    <artifactId>pom</artifactId>
+    <groupId>it.ant-tasks</groupId>
+    <version>1.0</version>
+  </parent>
+  <modelVersion>4.0.0</modelVersion>
+  <artifactId>project-with-parent-pom</artifactId>
+  <version>2.0-beta-4-SNAPSHOT</version>
+</project>
diff --git a/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom b/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom
new file mode 100644
index 0000000..574f345
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom
@@ -0,0 +1,16 @@
+<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>pom</artifactId>
+  <packaging>pom</packaging>
+
+  <name>Maven Ant Tasks IT SNAPSHOT pom</name>
+  <version>1.0</version>
+
+  <distributionManagement>
+    <repository>
+      <id>repo</id>
+      <url>file://${user.dir}/repo</url>
+    </repository>
+  </distributionManagement>
+</project>
diff --git a/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom.md5 b/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom.md5
new file mode 100644
index 0000000..0748940
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom.md5
@@ -0,0 +1 @@
+83dc779101b514f898431a0873ee3f1f
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom.sha1 b/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom.sha1
new file mode 100644
index 0000000..a71fc2e
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/pom/1.0/pom-1.0.pom.sha1
@@ -0,0 +1 @@
+6c262222ef56991b914d11fe7cdba81513abb7f2
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/pom/maven-metadata.xml b/src/test/repo/it/ant-tasks/pom/maven-metadata.xml
new file mode 100644
index 0000000..35ba595
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/pom/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>pom</artifactId>
+  <version>1.0</version>
+  <versioning>
+    <versions>
+      <version>1.0</version>
+    </versions>
+    <lastUpdated>20070618210615</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/pom/maven-metadata.xml.md5 b/src/test/repo/it/ant-tasks/pom/maven-metadata.xml.md5
new file mode 100644
index 0000000..1608d19
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/pom/maven-metadata.xml.md5
@@ -0,0 +1 @@
+b81c9e896504fa17bcedddaa1e91c333
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/pom/maven-metadata.xml.sha1 b/src/test/repo/it/ant-tasks/pom/maven-metadata.xml.sha1
new file mode 100644
index 0000000..0bf0804
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/pom/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+afd867c8bc9765a3e79bdbef5d738da151a2658f
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml
new file mode 100644
index 0000000..198c271
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>snapshotUniqueFalse</artifactId>
+  <version>2.0.7-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <buildNumber>1</buildNumber>
+    </snapshot>
+    <lastUpdated>20070610180522</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml.md5
new file mode 100644
index 0000000..86a17d9
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml.md5
@@ -0,0 +1 @@
+d1d30292e56f1247de26b7e5a6123da5
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml.sha1
new file mode 100644
index 0000000..ee20d54
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+11c3918c1a10cbbf0e10537fc1fe250cb4051674
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar
new file mode 100644
index 0000000..7172d45
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar
Binary files differ
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar.md5
new file mode 100644
index 0000000..2150aba
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar.md5
@@ -0,0 +1 @@
+e79b88841ed827762ba9ec61a8f7d11b
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar.sha1
new file mode 100644
index 0000000..95478d5
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.jar.sha1
@@ -0,0 +1 @@
+6c2631cc342671b17302af817a0b2d2231749a0e
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom
new file mode 100644
index 0000000..0b0183d
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom
@@ -0,0 +1,17 @@
+<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>snapshotUniqueFalse</artifactId>
+  <packaging>jar</packaging>
+
+  <name>Maven Ant Tasks IT SNAPSHOT uniqueVersion="false"</name>
+  <version>2.0.7-SNAPSHOT</version>
+
+  <distributionManagement>
+    <snapshotRepository>
+      <id>repo</id>
+      <url>file://${user.dir}/snapshotUniqueFalse</url>
+      <uniqueVersion>false</uniqueVersion>
+    </snapshotRepository>
+  </distributionManagement>
+</project>
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom.md5
new file mode 100644
index 0000000..8e467b6
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom.md5
@@ -0,0 +1 @@
+8bb41bff31db1754472637ed43c02dce
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom.sha1
new file mode 100644
index 0000000..f24de67
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/2.0.7-SNAPSHOT/snapshotUniqueFalse-2.0.7-SNAPSHOT.pom.sha1
@@ -0,0 +1 @@
+b69533a448a5b488a70ff2c27d5f503cdf40b59e
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml
new file mode 100644
index 0000000..8afcef7
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>snapshotUniqueFalse</artifactId>
+  <version>2.0.7-SNAPSHOT</version>
+  <versioning>
+    <versions>
+      <version>2.0.7-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20070610180522</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml.md5
new file mode 100644
index 0000000..f04986c
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml.md5
@@ -0,0 +1 @@
+2f304ab4c413fcfbf176d56ea1a8e74a
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml.sha1
new file mode 100644
index 0000000..6ee6c8d
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueFalse/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+20e10fa808f4ec4c7b2628e6c9999b09c11ea65b
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml
new file mode 100644
index 0000000..3c786e5
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml
@@ -0,0 +1,12 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>snapshotUniqueTrue</artifactId>
+  <version>2.0.7-SNAPSHOT</version>
+  <versioning>
+    <snapshot>
+      <timestamp>20070610.180356</timestamp>
+      <buildNumber>1</buildNumber>
+    </snapshot>
+    <lastUpdated>20070610180356</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml.md5
new file mode 100644
index 0000000..bf45e5c
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml.md5
@@ -0,0 +1 @@
+4a75053fb8d1c96dd7957d7764121904
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml.sha1
new file mode 100644
index 0000000..0d1dd98
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+e91515c9ce29ab01b52587a787e4fa44496e8c6f
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar
new file mode 100644
index 0000000..c330772
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar
Binary files differ
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar.md5
new file mode 100644
index 0000000..8b1dae9
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar.md5
@@ -0,0 +1 @@
+59da3a1d16909a26ae8a4245a4df0fb9
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar.sha1
new file mode 100644
index 0000000..e465898
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.jar.sha1
@@ -0,0 +1 @@
+6e7b36dcfa105ad2c15b040abac8dedc831bf643
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom
new file mode 100644
index 0000000..9450ab7
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom
@@ -0,0 +1,17 @@
+<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>snapshotUniqueTrue</artifactId>
+  <packaging>jar</packaging>
+
+  <name>Maven Ant Tasks IT SNAPSHOT uniqueVersion="true"</name>
+  <version>2.0.7-SNAPSHOT</version>
+
+  <distributionManagement>
+    <snapshotRepository>
+      <id>repo</id>
+      <url>file://${user.dir}/snapshotUniqueTrue</url>
+      <uniqueVersion>true</uniqueVersion>
+    </snapshotRepository>
+  </distributionManagement>
+</project>
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom.md5
new file mode 100644
index 0000000..c42e2a5
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom.md5
@@ -0,0 +1 @@
+a4e79877d5c1a2d65cb504a2900e0a4e
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom.sha1
new file mode 100644
index 0000000..d8191d4
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/2.0.7-SNAPSHOT/snapshotUniqueTrue-2.0.7-20070610.180356-1.pom.sha1
@@ -0,0 +1 @@
+caff40094a5b98048b9d8527a06b68dc7c67fe7d
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml
new file mode 100644
index 0000000..4c52dd7
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>snapshotUniqueTrue</artifactId>
+  <version>2.0.7-SNAPSHOT</version>
+  <versioning>
+    <versions>
+      <version>2.0.7-SNAPSHOT</version>
+    </versions>
+    <lastUpdated>20070610180356</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml.md5 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml.md5
new file mode 100644
index 0000000..7c04cc2
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml.md5
@@ -0,0 +1 @@
+747d1d058c5d7487cd045cd2bf0dac16
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml.sha1 b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml.sha1
new file mode 100644
index 0000000..92febaa
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/snapshotUniqueTrue/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+0dd3f3bc656120aff33b5c3d20d9422a6632682f
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar
new file mode 100644
index 0000000..0b2cdd8
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar
Binary files differ
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar.md5 b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar.md5
new file mode 100644
index 0000000..2d66a11
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar.md5
@@ -0,0 +1 @@
+ccc75b04bc295209cb7573ead5582ef0
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar.sha1 b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar.sha1
new file mode 100644
index 0000000..f2d4c38
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.jar.sha1
@@ -0,0 +1 @@
+6313864dafeff900b2ffdef9968f64ea437ffdb0
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom
new file mode 100644
index 0000000..1d11d50
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom
@@ -0,0 +1,24 @@
+<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>wagon-foo</artifactId>
+  <packaging>jar</packaging>
+
+  <name>Maven Ant Tasks IT SNAPSHOT wagon foo</name>
+  <version>1.0-beta-2</version>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.maven.wagon</groupId>
+      <artifactId>wagon-file</artifactId>
+      <version>1.0-beta-2</version>
+    </dependency>
+  </dependencies>
+
+  <distributionManagement>
+    <repository>
+      <id>repo</id>
+      <url>file://${user.dir}/repo</url>
+    </repository>
+  </distributionManagement>
+</project>
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom.md5 b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom.md5
new file mode 100644
index 0000000..44bf07a
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom.md5
@@ -0,0 +1 @@
+b344cb511b170ba2084b8ea854371eff
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom.sha1 b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom.sha1
new file mode 100644
index 0000000..ae780a2
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/1.0-beta-2/wagon-foo-1.0-beta-2.pom.sha1
@@ -0,0 +1 @@
+59d868fd2aeb0fd33679d7bd6264482e70a197d0
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml b/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml
new file mode 100644
index 0000000..5d533d8
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml
@@ -0,0 +1,11 @@
+<?xml version="1.0" encoding="UTF-8"?><metadata>
+  <groupId>it.ant-tasks</groupId>
+  <artifactId>wagon-foo</artifactId>
+  <version>1.0-beta-2</version>
+  <versioning>
+    <versions>
+      <version>1.0-beta-2</version>
+    </versions>
+    <lastUpdated>20070619175310</lastUpdated>
+  </versioning>
+</metadata>
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml.md5 b/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml.md5
new file mode 100644
index 0000000..964c26e
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml.md5
@@ -0,0 +1 @@
+2bb4e14969cc07bab03b456d073dd3db
\ No newline at end of file
diff --git a/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml.sha1 b/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml.sha1
new file mode 100644
index 0000000..a2d9959
--- /dev/null
+++ b/src/test/repo/it/ant-tasks/wagon-foo/maven-metadata.xml.sha1
@@ -0,0 +1 @@
+1f6154e5f4e65fc6eeaa7cfd37b201cfeed3dea9
\ No newline at end of file
diff --git a/src/test/settings-empty.xml b/src/test/settings-empty.xml
new file mode 100644
index 0000000..991b978
--- /dev/null
+++ b/src/test/settings-empty.xml
@@ -0,0 +1 @@
+<settings></settings>
\ No newline at end of file
