mizdebsk pushed to gradle (master). "Port to Maven 3.3.1"

notifications at fedoraproject.org notifications at fedoraproject.org
Wed Mar 25 12:41:17 UTC 2015


>From bed465f29c79935a5a18e490a4e10d6a9dda3007 Mon Sep 17 00:00:00 2001
From: Mikolaj Izdebski <mizdebsk at redhat.com>
Date: Wed, 25 Mar 2015 13:36:09 +0100
Subject: Port to Maven 3.3.1


diff --git a/0006-Port-to-Maven-3.1.1-and-Aether-Ant-Tasks.patch b/0006-Port-to-Maven-3.1.1-and-Aether-Ant-Tasks.patch
deleted file mode 100644
index 85e1c21..0000000
--- a/0006-Port-to-Maven-3.1.1-and-Aether-Ant-Tasks.patch
+++ /dev/null
@@ -1,1335 +0,0 @@
-From 3aee4ddfc050d5d28a51ebab40e0cc853a9444ea Mon Sep 17 00:00:00 2001
-From: Mikolaj Izdebski <mizdebsk at redhat.com>
-Date: Fri, 31 Oct 2014 09:23:37 +0100
-Subject: [PATCH 06/14] Port to Maven 3.1.1 and Aether Ant Tasks
-
----
- gradle/dependencies.gradle                         | 57 +++++++++----
- .../plugins/internal/maven/Maven2Gradle.groovy     |  2 +-
- .../internal/maven/MavenProjectXmlWriter.java      |  4 +-
- .../internal/maven/MavenProjectsCreator.java       | 24 +++---
- .../dependency-management.gradle                   |  7 +-
- .../internal/artifacts/PlexusLoggerAdapter.java    |  8 ++
- .../DefaultLocalMavenRepositoryLocator.java        |  4 +-
- .../mvnsettings/DefaultMavenSettingsProvider.java  |  4 +-
- .../mvnsettings/MavenSettingsProvider.java         |  4 +-
- .../maven/internal/DefaultMavenPom.java            |  6 +-
- .../maven/internal/ant/AbstractMavenResolver.java  | 71 ++++++++++------
- .../maven/internal/ant/BaseMavenDeployer.java      | 98 ++++++++++++++++------
- .../maven/internal/ant/BaseMavenInstaller.java     | 12 +--
- .../maven/internal/ant/CustomDeployTask.java       | 45 ----------
- .../ant/CustomInstallDeployTaskSupport.java        | 27 ------
- .../maven/internal/ant/CustomInstallTask.java      | 38 ---------
- .../maven/internal/ant/CustomRemoteRepository.java | 29 +++++++
- .../internal/ant/EmptyMavenSettingsSupplier.java   |  9 +-
- .../maven/internal/ant/GradleWagonProvider.java    | 38 +++++++++
- .../maven/internal/ant/LoggingHelper.java          | 43 ----------
- .../maven/internal/ant/MavenSettingsSupplier.java  |  4 +-
- .../ant/MaybeUserMavenSettingsSupplier.java        | 11 ++-
- .../ProjectDependencyArtifactIdExtractorHack.java  |  3 +-
- .../maven/internal/ant/RepositoryBuilder.java      | 24 ++++--
- .../maven/internal/ant/RepositoryFactory.java      | 21 +++--
- .../AbstractAntTaskBackedMavenPublisher.java       | 38 ++++-----
- .../AntTaskBackedMavenLocalPublisher.java          | 41 +++------
- .../publisher/AntTaskBackedMavenPublisher.java     | 47 ++++-------
- .../publisher/MavenRemoteRepositoryFactory.java    |  6 +-
- .../publisher/ValidatingMavenPublisher.java        |  6 +-
- 30 files changed, 363 insertions(+), 368 deletions(-)
- delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java
- delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java
- delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java
- create mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java
- create mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java
- delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java
-
-diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
-index 11a80eb..78e90fe 100755
---- a/gradle/dependencies.gradle
-+++ b/gradle/dependencies.gradle
-@@ -76,8 +76,28 @@ libraries.commons_httpclient = dependencies.module('org.apache.httpcomponents:ht
-     dependency "org.samba.jcifs:jcifs:1.3.17 at jar"
- }
- 
--libraries.maven_ant_tasks = dependencies.module("org.apache.maven:maven-ant-tasks:2.1.3") {
--    libraries.ant
-+libraries.maven_ant_tasks = dependencies.module("org.eclipse.aether:aether-ant-tasks:1.0.0.v20140518") {
-+    dependency "org.eclipse.aether:aether-api:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-util:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-impl:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-spi:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-connector-basic:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-transport-classpath:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-transport-file:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-transport-http:1.0.0.v20140518 at jar"
-+    dependency "org.apache.maven:maven-aether-provider:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-model:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-model-builder:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-repository-metadata:3.1.1 at jar"
-+    dependency "org.codehaus.plexus:plexus-utils:2.1 at jar"
-+    dependency "org.apache.maven:maven-settings-builder:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-settings:3.1.1 at jar"
-+    dependency "org.sonatype.plexus:plexus-sec-dispatcher:1.3 at jar"
-+    dependency "org.sonatype.plexus:plexus-cipher:1.7 at jar"
-+    dependency "org.codehaus.plexus:plexus-interpolation:1.16 at jar"
-+    dependency "org.eclipse.sisu:org.eclipse.sisu.plexus:0.1.1 at jar"
-+    dependency libraries.ant
-+    dependency libraries.commons_httpclient
- }
- 
- libraries += [
-@@ -98,9 +118,9 @@ libraries += [
-         jsoup:'org.jsoup:jsoup:1.6.3'
- ]
- 
--libraries.maven3 = dependencies.module("org.apache.maven:maven-core:3.0.4") {
--    dependency "org.apache.maven:maven-settings:3.0.4 at jar"
--    dependency "org.apache.maven:maven-settings-builder:3.0.4 at jar"
-+libraries.maven3 = dependencies.module("org.apache.maven:maven-core:3.1.1") {
-+    dependency "org.apache.maven:maven-settings:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-settings-builder:3.1.1 at jar"
- 
-     //plexus:
-     dependency "org.codehaus.plexus:plexus-utils:2.0.6 at jar"
-@@ -114,27 +134,28 @@ libraries.maven3 = dependencies.module("org.apache.maven:maven-core:3.0.4") {
-     dependency "org.sonatype.plexus:plexus-sec-dispatcher:1.3 at jar"
- 
-     //core:
--    dependency "org.apache.maven:maven-core:3.0.4 at jar"
--    dependency "org.apache.maven:maven-model-builder:3.0.4 at jar"
--    dependency "org.apache.maven:maven-model:3.0.4 at jar"
-+    dependency "org.apache.maven:maven-core:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-model-builder:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-model:3.1.1 at jar"
- 
-     //somewhat core:
--    dependency "org.apache.maven:maven-artifact:3.0.4 at jar"
--    dependency "org.apache.maven:maven-compat:3.0.4 at jar"
--    dependency "org.apache.maven:maven-repository-metadata:3.0.4 at jar"
--    dependency "org.apache.maven:maven-plugin-api:3.0.4 at jar"
--    dependency "org.apache.maven:maven-aether-provider:3.0.4 at jar"
-+    dependency "org.apache.maven:maven-artifact:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-compat:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-repository-metadata:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-plugin-api:3.1.1 at jar"
-+    dependency "org.apache.maven:maven-aether-provider:3.1.1 at jar"
- 
-     dependency 'org.apache.maven.wagon:wagon-http:2.8 at jar'
-     dependency 'org.apache.maven.wagon:wagon-provider-api:2.8 at jar'
-     dependency 'org.apache.maven.wagon:wagon-http-shared:2.8 at jar'
- 
-     //eather:
--    dependency "org.sonatype.aether:aether-api:1.13.1 at jar"
--    dependency "org.sonatype.aether:aether-impl:1.13.1 at jar"
--    dependency "org.sonatype.aether:aether-spi:1.13.1 at jar"
--    dependency "org.sonatype.aether:aether-util:1.13.1 at jar"
--    dependency 'org.sonatype.aether:aether-connector-wagon:1.13.1 at jar'
-+    dependency "org.eclipse.aether:aether-api:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-impl:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-spi:1.0.0.v20140518 at jar"
-+    dependency "org.eclipse.aether:aether-util:1.0.0.v20140518 at jar"
-+    dependency 'org.eclipse.aether:aether-connector-basic:1.0.0.v20140518 at jar'
-+    dependency 'org.eclipse.aether:aether-transport-wagon:1.0.0.v20140518 at jar'
- }
- 
- libraries.spock = [
-diff --git a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy
-index b16a908..dacb94c 100644
---- a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy
-+++ b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy
-@@ -18,7 +18,7 @@
- 
- package org.gradle.buildinit.plugins.internal.maven
- 
--import org.gradle.mvn3.org.apache.maven.project.MavenProject
-+import org.apache.maven.project.MavenProject
- import org.gradle.util.GFileUtils
- 
- /**
-diff --git a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java
-index a304126..b2c9c0b 100644
---- a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java
-+++ b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java
-@@ -16,8 +16,8 @@
- 
- package org.gradle.buildinit.plugins.internal.maven;
- 
--import org.gradle.mvn3.org.apache.maven.model.io.xpp3.MavenXpp3Writer;
--import org.gradle.mvn3.org.apache.maven.project.MavenProject;
-+import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
-+import org.apache.maven.project.MavenProject;
- 
- import java.io.ByteArrayOutputStream;
- import java.io.IOException;
-diff --git a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
-index ddd4924..8dfde0d 100644
---- a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
-+++ b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
-@@ -19,18 +19,18 @@ package org.gradle.buildinit.plugins.internal.maven;
- import com.google.common.collect.ImmutableList;
- import org.gradle.api.Transformer;
- import org.gradle.internal.SystemProperties;
--import org.gradle.mvn3.org.apache.maven.execution.*;
--import org.gradle.mvn3.org.apache.maven.project.*;
--import org.gradle.mvn3.org.apache.maven.settings.Settings;
--import org.gradle.mvn3.org.codehaus.plexus.ContainerConfiguration;
--import org.gradle.mvn3.org.codehaus.plexus.DefaultContainerConfiguration;
--import org.gradle.mvn3.org.codehaus.plexus.DefaultPlexusContainer;
--import org.gradle.mvn3.org.codehaus.plexus.PlexusContainerException;
--import org.gradle.mvn3.org.codehaus.plexus.classworlds.ClassWorld;
--import org.gradle.mvn3.org.codehaus.plexus.component.repository.exception.ComponentLookupException;
--import org.gradle.mvn3.org.codehaus.plexus.configuration.PlexusConfigurationException;
--import org.gradle.mvn3.org.sonatype.aether.RepositorySystemSession;
--import org.gradle.mvn3.org.sonatype.aether.util.DefaultRepositorySystemSession;
-+import org.apache.maven.execution.*;
-+import org.apache.maven.project.*;
-+import org.apache.maven.settings.Settings;
-+import org.codehaus.plexus.ContainerConfiguration;
-+import org.codehaus.plexus.DefaultContainerConfiguration;
-+import org.codehaus.plexus.DefaultPlexusContainer;
-+import org.codehaus.plexus.PlexusContainerException;
-+import org.codehaus.plexus.classworlds.ClassWorld;
-+import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
-+import org.codehaus.plexus.configuration.PlexusConfigurationException;
-+import org.eclipse.aether.RepositorySystemSession;
-+import org.eclipse.aether.DefaultRepositorySystemSession;
- import org.gradle.util.CollectionUtils;
- 
- import java.io.File;
-diff --git a/subprojects/dependency-management/dependency-management.gradle b/subprojects/dependency-management/dependency-management.gradle
-index 3ddc4f3..2af3f84 100644
---- a/subprojects/dependency-management/dependency-management.gradle
-+++ b/subprojects/dependency-management/dependency-management.gradle
-@@ -42,9 +42,10 @@ task jarJarMaven3(type: JarJar) {
-     //unfortunately, all those need to be jarjarred.
-     // Even if some library (like aether) is not included in maven-ant-tasks it has
-     // META-INF/plexus/components.xml that to jarjarred components.
--    rule('org.apache.maven.**', 'org.gradle.mvn3.org.apache.maven. at 1')
--    rule('org.codehaus.**', 'org.gradle.mvn3.org.codehaus. at 1')
--    rule('org.sonatype.**', 'org.gradle.mvn3.org.sonatype. at 1')
-+    //rule('org.apache.maven.**', 'org.gradle.mvn3.org.apache.maven. at 1')
-+    //rule('org.codehaus.**', 'org.gradle.mvn3.org.codehaus. at 1')
-+    //rule('org.sonatype.**', 'org.gradle.mvn3.org.sonatype. at 1')
-+    //rule('org.eclipse.aether.**', 'org.gradle.mvn3.org.eclipse.aether. at 1')
- 
-     avoidConflictingPlexusComponents(it)
- }
-diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
-index e02ab3b..5f213bd 100644
---- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
-+++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
-@@ -92,7 +92,15 @@ public class PlexusLoggerAdapter implements Logger {
-         throw new UnsupportedOperationException();
-     }
- 
-+    public void setThreshold(int threshold) {
-+        throw new UnsupportedOperationException();
-+    }
-+
-     public String getName() {
-         return logger.getName();
-     }
-+
-+    public void setName(String name) {
-+        throw new UnsupportedOperationException();
-+    }
- }
-diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java
-index 299544f..c93a9bd 100644
---- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java
-+++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java
-@@ -15,8 +15,8 @@
-  */
- package org.gradle.api.internal.artifacts.mvnsettings;
- 
--import org.gradle.mvn3.org.apache.maven.settings.Settings;
--import org.gradle.mvn3.org.apache.maven.settings.building.SettingsBuildingException;
-+import org.apache.maven.settings.Settings;
-+import org.apache.maven.settings.building.SettingsBuildingException;
- import org.slf4j.Logger;
- import org.slf4j.LoggerFactory;
- 
-diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java
-index cc39a17..01eb522 100644
---- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java
-+++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java
-@@ -15,8 +15,8 @@
-  */
- package org.gradle.api.internal.artifacts.mvnsettings;
- 
--import org.gradle.mvn3.org.apache.maven.settings.Settings;
--import org.gradle.mvn3.org.apache.maven.settings.building.*;
-+import org.apache.maven.settings.Settings;
-+import org.apache.maven.settings.building.*;
- 
- public class DefaultMavenSettingsProvider implements MavenSettingsProvider {
- 
-diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java
-index dd93102..a7d7030 100644
---- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java
-+++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java
-@@ -15,8 +15,8 @@
-  */
- package org.gradle.api.internal.artifacts.mvnsettings;
- 
--import org.gradle.mvn3.org.apache.maven.settings.Settings;
--import org.gradle.mvn3.org.apache.maven.settings.building.SettingsBuildingException;
-+import org.apache.maven.settings.Settings;
-+import org.apache.maven.settings.building.SettingsBuildingException;
- 
- public interface MavenSettingsProvider {
-     Settings buildSettings() throws SettingsBuildingException;
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java
-index 482c0a9..80b1ad9 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java
-@@ -160,11 +160,7 @@ public class DefaultMavenPom implements MavenPom {
- 
-     public DefaultMavenPom getEffectivePom() {
-         DefaultMavenPom effectivePom = new DefaultMavenPom(null, this.scopeMappings, pomDependenciesConverter, fileResolver);
--        try {
--            effectivePom.setMavenProject((MavenProject) mavenProject.clone());
--        } catch (CloneNotSupportedException e) {
--            throw new RuntimeException(e);
--        }
-+        effectivePom.setMavenProject((MavenProject) mavenProject.clone());
-         effectivePom.getDependencies().addAll(getGeneratedDependencies());
-         effectivePom.withXmlActions = withXmlActions;
-         whenConfiguredActions.execute(effectivePom);
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java
-index 854202f..6d35082 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java
-@@ -16,12 +16,13 @@
- package org.gradle.api.publication.maven.internal.ant;
- 
- import groovy.lang.Closure;
--import org.apache.ivy.core.module.descriptor.Artifact;
--import org.apache.maven.artifact.ant.AttachedArtifact;
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
--import org.apache.maven.artifact.ant.Pom;
-+
- import org.apache.maven.settings.Settings;
- import org.apache.tools.ant.Project;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
-+import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
-+import org.eclipse.aether.internal.ant.types.Artifact;
-+import org.eclipse.aether.internal.ant.types.Pom;
- import org.gradle.api.Action;
- import org.gradle.api.artifacts.PublishArtifact;
- import org.gradle.api.artifacts.maven.*;
-@@ -41,6 +42,7 @@ import org.gradle.logging.LoggingManagerInternal;
- import org.gradle.util.AntUtil;
- 
- import java.io.File;
-+import java.lang.reflect.Method;
- import java.util.Set;
- 
- public abstract class AbstractMavenResolver extends AbstractArtifactRepository implements MavenResolver, ModuleVersionPublisher, ResolutionAwareRepository, PublicationAwareRepository {
-@@ -71,7 +73,7 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
-         return this;
-     }
- 
--    protected abstract InstallDeployTaskSupport createPreConfiguredTask(Project project);
-+    protected abstract AbstractDistTask createPreConfiguredTask(Project project);
- 
-     public void publish(IvyModulePublishMetaData moduleVersion) {
-         for (IvyModuleArtifactPublishMetaData artifact : moduleVersion.getArtifacts()) {
-@@ -80,32 +82,39 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
-         publish();
-     }
- 
--    private void collectArtifact(Artifact artifact, File src) {
-+    private void collectArtifact(org.apache.ivy.core.module.descriptor.Artifact artifact, File src) {
-         if (isIgnorable(artifact)) {
-             return;
-         }
-         getArtifactPomContainer().addArtifact(artifact, src);
-     }
- 
--    private boolean isIgnorable(Artifact artifact) {
-+    private boolean isIgnorable(org.apache.ivy.core.module.descriptor.Artifact artifact) {
-         return artifact.getType().equals("ivy");
-     }
- 
-     private void publish() {
--        InstallDeployTaskSupport installDeployTaskSupport = createPreConfiguredTask(AntUtil.createProject());
-+        Project project = AntUtil.createProject();
-         Set<MavenDeployment> mavenDeployments = getArtifactPomContainer().createDeployableFilesInfos();
--        mavenSettingsSupplier.supply(installDeployTaskSupport);
-+        mavenSettingsSupplier.supply(project);
-         for (MavenDeployment mavenDeployment : mavenDeployments) {
--            ((CustomInstallDeployTaskSupport) installDeployTaskSupport).clearAttachedArtifactsList();
-+            AbstractDistTask task = createPreConfiguredTask(project);
-             beforeDeploymentActions.execute(mavenDeployment);
--            addPomAndArtifact(installDeployTaskSupport, mavenDeployment);
--            execute(installDeployTaskSupport);
-+            addPomAndArtifact(task, mavenDeployment);
-+            execute(task);
-         }
-         mavenSettingsSupplier.done();
--        settings = ((CustomInstallDeployTaskSupport) installDeployTaskSupport).getSettings();
-+
-+        try {
-+            Method getter = AntRepoSys.class.getDeclaredMethod("getSettings");
-+            getter.setAccessible(true);
-+            settings = (Settings) getter.invoke(AntRepoSys.getInstance(project));
-+        } catch (ReflectiveOperationException e) {
-+            throw new RuntimeException(e);
-+        }
-     }
- 
--    private void execute(InstallDeployTaskSupport deployTask) {
-+    private void execute(AbstractDistTask deployTask) {
-         loggingManager.captureStandardOutput(LogLevel.INFO).start();
-         try {
-             deployTask.execute();
-@@ -114,19 +123,33 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
-         }
-     }
- 
--    private void addPomAndArtifact(InstallDeployTaskSupport installOrDeployTask, MavenDeployment mavenDeployment) {
-+    private void addPomAndArtifact(AbstractDistTask task, MavenDeployment mavenDeployment) {
-+        PublishArtifact pomArtifact = mavenDeployment.getPomArtifact();
-         Pom pom = new Pom();
--        pom.setProject(installOrDeployTask.getProject());
--        pom.setFile(mavenDeployment.getPomArtifact().getFile());
--        installOrDeployTask.addPom(pom);
-+        pom.setProject(task.getProject());
-+        pom.setFile(pomArtifact.getFile());
-+        task.addPom(pom);
-+
-+        PublishArtifact mainArtifact = mavenDeployment.getMainArtifact();
-         if (mavenDeployment.getMainArtifact() != null) {
--            installOrDeployTask.setFile(mavenDeployment.getMainArtifact().getFile());
-+            Artifact artifact = new Artifact();
-+            artifact.setProject(task.getProject());
-+            artifact.setFile(mainArtifact.getFile());
-+            artifact.setType(mainArtifact.getType());
-+            task.addArtifact(artifact);
-         }
--        for (PublishArtifact classifierArtifact : mavenDeployment.getAttachedArtifacts()) {
--            AttachedArtifact attachedArtifact = installOrDeployTask.createAttach();
--            attachedArtifact.setClassifier(classifierArtifact.getClassifier());
--            attachedArtifact.setFile(classifierArtifact.getFile());
--            attachedArtifact.setType(classifierArtifact.getType());
-+
-+        for (PublishArtifact attachedArtifact : mavenDeployment.getAttachedArtifacts()) {
-+            String type = attachedArtifact.getType();
-+            String classifier = attachedArtifact.getClassifier();
-+            if (type != null && type.equals("pom") && (classifier == null || classifier.isEmpty()))
-+                continue;
-+            Artifact artifact = new Artifact();
-+            artifact.setProject(task.getProject());
-+            artifact.setFile(attachedArtifact.getFile());
-+            artifact.setType(type);
-+            artifact.setClassifier(classifier);
-+            task.addArtifact(artifact);
-         }
-     }
- 
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java
-index 35b0e95..dd0a310 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java
-@@ -1,5 +1,5 @@
- /*
-- * Copyright 2007-2008 the original author or authors.
-+ * Copyright 2007-2014 the original author or authors.
-  *
-  * Licensed under the Apache License, Version 2.0 (the "License");
-  * you may not use this file except in compliance with the License.
-@@ -15,12 +15,24 @@
-  */
- package org.gradle.api.publication.maven.internal.ant;
- 
--import org.apache.maven.artifact.ant.DeployTask;
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
--import org.apache.maven.artifact.ant.RemoteRepository;
- import org.apache.tools.ant.Project;
-+import org.codehaus.plexus.ContainerConfiguration;
-+import org.codehaus.plexus.DefaultContainerConfiguration;
-+import org.codehaus.plexus.DefaultPlexusContainer;
- import org.codehaus.plexus.PlexusContainer;
- import org.codehaus.plexus.PlexusContainerException;
-+import org.codehaus.plexus.classworlds.ClassWorld;
-+import org.codehaus.plexus.classworlds.realm.ClassRealm;
-+import org.eclipse.aether.impl.DefaultServiceLocator;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
-+import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
-+import org.eclipse.aether.internal.ant.tasks.Deploy;
-+import org.eclipse.aether.internal.ant.types.RemoteRepository;
-+import org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator;
-+import org.eclipse.aether.spi.connector.transport.TransporterFactory;
-+import org.eclipse.aether.transport.wagon.WagonConfigurator;
-+import org.eclipse.aether.transport.wagon.WagonProvider;
-+import org.eclipse.aether.transport.wagon.WagonTransporterFactory;
- import org.gradle.api.artifacts.Configuration;
- import org.gradle.api.artifacts.maven.MavenDeployer;
- import org.gradle.api.artifacts.maven.PomFilterContainer;
-@@ -28,6 +40,8 @@ import org.gradle.api.publication.maven.internal.ArtifactPomContainer;
- import org.gradle.logging.LoggingManagerInternal;
- 
- import java.io.File;
-+import java.lang.reflect.Field;
-+import java.net.MalformedURLException;
- import java.util.ArrayList;
- import java.util.Collection;
- import java.util.List;
-@@ -42,43 +56,77 @@ public class BaseMavenDeployer extends AbstractMavenResolver implements MavenDep
-     // todo remove this property once configuration can handle normal file system dependencies
-     private List<File> protocolProviderJars = new ArrayList<File>();
- 
--    private boolean uniqueVersion = true;
--
-     public BaseMavenDeployer(PomFilterContainer pomFilterContainer, ArtifactPomContainer artifactPomContainer, LoggingManagerInternal loggingManager) {
-         super(pomFilterContainer, artifactPomContainer, loggingManager);
-     }
- 
--    protected InstallDeployTaskSupport createPreConfiguredTask(Project project) {
--        CustomDeployTask deployTask = createTask();
-+    protected AbstractDistTask createPreConfiguredTask(Project project) {
-+        configureAetherRepoSys(project);
-+        Deploy deployTask = createTask();
-         deployTask.setProject(project);
--        deployTask.setUniqueVersion(isUniqueVersion());
--        addProtocolProvider(deployTask);
-         addRemoteRepositories(deployTask);
-         return deployTask;
-     }
- 
--    protected CustomDeployTask createTask() {
--        return new CustomDeployTask();
-+    private void configureAetherRepoSys(Project project) {
-+        PlexusContainer container = createContainer();
-+
-+        try {
-+            AntRepoSys repoSys = AntRepoSys.getInstance(project);
-+            Field field = repoSys.getClass().getDeclaredField("locator");
-+            field.setAccessible(true);
-+            DefaultServiceLocator locator = (DefaultServiceLocator) field.get(repoSys);
-+            locator.addService(TransporterFactory.class, WagonTransporterFactory.class);
-+            locator.addService(WagonProvider.class, GradleWagonProvider.class);
-+            locator.addService(WagonConfigurator.class, PlexusWagonConfigurator.class);
-+
-+            GradleWagonProvider wagonProvider = (GradleWagonProvider) locator.getService(WagonProvider.class);
-+            wagonProvider.initService(container);
-+        } catch (ReflectiveOperationException e) {
-+            throw new RuntimeException(e);
-+        }
-     }
- 
--    private void addProtocolProvider(CustomDeployTask deployTask) {
--        PlexusContainer plexusContainer = deployTask.getContainer();
--        for (File wagonProviderJar : getJars()) {
--            try {
--                plexusContainer.addJarResource(wagonProviderJar);
--            } catch (PlexusContainerException e) {
--                throw new RuntimeException(e);
-+    private PlexusContainer createContainer() {
-+        try {
-+            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
-+            ClassWorld world = new ClassWorld("plexus.core", classLoader);
-+            ClassRealm realm = new ClassRealm(world, "plexus.core", classLoader);
-+            for (File wagonProviderJar : getJars()) {
-+                realm.addURL(wagonProviderJar.toURI().toURL());
-             }
-+
-+            ContainerConfiguration conf = new DefaultContainerConfiguration();
-+            conf.setClassWorld(world);
-+            conf.setRealm(realm);
-+            conf.setName("plexus.core");
-+
-+            return new DefaultPlexusContainer(conf);
-+        } catch (PlexusContainerException e) {
-+            throw new RuntimeException(e);
-+        } catch (MalformedURLException e) {
-+            throw new RuntimeException(e);
-         }
-     }
- 
-+    protected Deploy createTask() {
-+        return new Deploy();
-+    }
-+
-     private List<File> getJars() {
-         return configuration != null ? new ArrayList<File>(configuration.resolve()) : protocolProviderJars;
-     }
- 
--    private void addRemoteRepositories(DeployTask deployTask) {
--        deployTask.addRemoteRepository(remoteRepository);
--        deployTask.addRemoteSnapshotRepository(remoteSnapshotRepository);
-+    private void addRemoteRepositories(Deploy deployTask) {
-+        Project project = deployTask.getProject();
-+        if (remoteRepository != null) {
-+            remoteRepository.setProject(project);
-+        }
-+        if (remoteSnapshotRepository != null) {
-+            remoteSnapshotRepository.setProject(project);
-+        }
-+        deployTask.addRemoteRepo(remoteRepository);
-+        deployTask.addSnapshotRepo(remoteSnapshotRepository);
-     }
- 
-     public RemoteRepository getRepository() {
-@@ -110,10 +158,12 @@ public class BaseMavenDeployer extends AbstractMavenResolver implements MavenDep
-     }
- 
-     public boolean isUniqueVersion() {
--        return uniqueVersion;
-+        return true;
-     }
- 
-     public void setUniqueVersion(boolean uniqueVersion) {
--        this.uniqueVersion = uniqueVersion;
-+        if (!uniqueVersion) {
-+            throw new IllegalArgumentException("Non-unique snapshot versions are not supported by this version of Gradle");
-+        }
-     }
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java
-index a901694..19541f0 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java
-@@ -15,9 +15,9 @@
-  */
- package org.gradle.api.publication.maven.internal.ant;
- 
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
--import org.apache.maven.artifact.ant.InstallTask;
- import org.apache.tools.ant.Project;
-+import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
-+import org.eclipse.aether.internal.ant.tasks.Install;
- import org.gradle.api.artifacts.maven.PomFilterContainer;
- import org.gradle.api.publication.maven.internal.ArtifactPomContainer;
- import org.gradle.logging.LoggingManagerInternal;
-@@ -28,13 +28,13 @@ public class BaseMavenInstaller extends AbstractMavenResolver {
-         mavenSettingsSupplier = new MaybeUserMavenSettingsSupplier();
-     }
- 
--    protected InstallDeployTaskSupport createPreConfiguredTask(Project project) {
--        InstallTask installTask = createTask();
-+    protected AbstractDistTask createPreConfiguredTask(Project project) {
-+        Install installTask = createTask();
-         installTask.setProject(project);
-         return installTask;
-     }
- 
--    protected CustomInstallTask createTask() {
--        return new CustomInstallTask();
-+    protected Install createTask() {
-+        return new Install();
-     }
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java
-deleted file mode 100644
-index 85521bf..0000000
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java
-+++ /dev/null
-@@ -1,45 +0,0 @@
--/*
-- * Copyright 2007-2008 the original author or authors.
-- *
-- * Licensed 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.
-- */
--package org.gradle.api.publication.maven.internal.ant;
--
--import org.apache.maven.artifact.ant.DeployTask;
--import org.apache.maven.settings.Settings;
--import org.codehaus.plexus.PlexusContainer;
--
--/**
-- * We could also use reflection to get hold of the container property. But this would make it harder to use a Mock for this class.
-- */
--public class CustomDeployTask extends DeployTask implements CustomInstallDeployTaskSupport {
--    @Override
--    public synchronized Settings getSettings() {
--        return super.getSettings();
--    }
--
--    @Override
--    public synchronized PlexusContainer getContainer() {
--        return super.getContainer();
--    }
--
--    @Override
--    public void doExecute() {
--        LoggingHelper.injectLogger(getContainer(), getProject());
--        super.doExecute();
--    }
--
--    public void clearAttachedArtifactsList() {
--        attachedArtifacts.clear();
--    }
--}
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java
-deleted file mode 100644
-index 40c3ea9..0000000
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java
-+++ /dev/null
-@@ -1,27 +0,0 @@
--/*
-- * Copyright 2007-2008 the original author or authors.
-- *
-- * Licensed 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.
-- */
--package org.gradle.api.publication.maven.internal.ant;
--
--import org.apache.maven.artifact.ant.AttachedArtifact;
--import org.apache.maven.settings.Settings;
--import org.apache.tools.ant.Project;
--
--public interface CustomInstallDeployTaskSupport {
--    Settings getSettings();
--    Project getProject();
--    AttachedArtifact createAttach();
--    void clearAttachedArtifactsList();
--}
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java
-deleted file mode 100644
-index 15079c4..0000000
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java
-+++ /dev/null
-@@ -1,38 +0,0 @@
--/*
-- * Copyright 2007-2008 the original author or authors.
-- *
-- * Licensed 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.
-- */
--package org.gradle.api.publication.maven.internal.ant;
--
--import org.apache.maven.artifact.ant.InstallTask;
--import org.apache.maven.settings.Settings;
--
--public class CustomInstallTask extends InstallTask implements CustomInstallDeployTaskSupport {
--    @Override
--    public synchronized Settings getSettings() {
--        return super.getSettings();   
--    }
--
--    public void clearAttachedArtifactsList() {
--        attachedArtifacts.clear();
--    }
--
--    @Override
--    public void doExecute() {
--        LoggingHelper.injectLogger(getContainer(), getProject());
--        super.doExecute();
--    }
--
--
--}
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java
-new file mode 100644
-index 0000000..df82986
---- /dev/null
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java
-@@ -0,0 +1,29 @@
-+package org.gradle.api.publication.maven.internal.ant;
-+
-+import java.util.ArrayList;
-+import java.util.List;
-+
-+import org.apache.tools.ant.Project;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
-+import org.eclipse.aether.internal.ant.types.Proxy;
-+import org.eclipse.aether.internal.ant.types.RemoteRepository;
-+
-+class CustomRemoteRepository extends RemoteRepository {
-+
-+    private final List<Proxy> proxies = new ArrayList<Proxy>();
-+
-+    @Override
-+    public void setProject(Project project) {
-+        super.setProject(project);
-+
-+        AntRepoSys repoSys = AntRepoSys.getInstance(project);
-+        for (Proxy proxy : proxies) {
-+            repoSys.addProxy(proxy);
-+        }
-+    }
-+
-+    public void addProxy(Proxy proxy) {
-+        proxies.add(proxy);
-+    }
-+
-+}
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
-index 5549dcb..0119703 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
-@@ -17,7 +17,8 @@
- package org.gradle.api.publication.maven.internal.ant;
- 
- import org.apache.commons.io.FileUtils;
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
-+import org.apache.tools.ant.Project;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
- import org.gradle.api.UncheckedIOException;
- import org.gradle.api.internal.file.TemporaryFileProvider;
- import org.gradle.api.internal.file.TmpDirTemporaryFileProvider;
-@@ -30,7 +31,7 @@ public class EmptyMavenSettingsSupplier implements MavenSettingsSupplier {
-     private final TemporaryFileProvider temporaryFileProvider = new TmpDirTemporaryFileProvider();
-     private File settingsXml;
- 
--    public void supply(InstallDeployTaskSupport installDeployTaskSupport) {
-+    public void supply(Project project) {
-         try {
-             settingsXml = temporaryFileProvider.createTemporaryFile("gradle_empty_settings", ".xml");
-             FileUtils.writeStringToFile(settingsXml, "<settings/>");
-@@ -38,7 +39,9 @@ public class EmptyMavenSettingsSupplier implements MavenSettingsSupplier {
-         } catch (IOException e) {
-             throw new UncheckedIOException(e);
-         }
--        installDeployTaskSupport.setSettingsFile(settingsXml);
-+        AntRepoSys repoSys = AntRepoSys.getInstance(project);
-+        repoSys.setGlobalSettings(settingsXml);
-+        repoSys.setUserSettings(settingsXml);
-     }
- 
-     public void done() {
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java
-new file mode 100644
-index 0000000..cfab163
---- /dev/null
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java
-@@ -0,0 +1,38 @@
-+/*
-+ * Copyright 2014 the original author or authors.
-+ *
-+ * Licensed 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.
-+ */
-+package org.gradle.api.publication.maven.internal.ant;
-+
-+import org.apache.maven.wagon.Wagon;
-+import org.codehaus.plexus.PlexusContainer;
-+import org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider;
-+import org.eclipse.aether.transport.wagon.WagonProvider;
-+
-+public class GradleWagonProvider implements WagonProvider {
-+
-+    private WagonProvider delegate;
-+
-+    public void initService(PlexusContainer container) {
-+        delegate = new PlexusWagonProvider(container);
-+    }
-+
-+    public Wagon lookup(String roleHint) throws Exception {
-+        return delegate.lookup(roleHint);
-+    }
-+
-+    public void release(Wagon wagon) {
-+        delegate.release(wagon);
-+    }
-+}
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java
-deleted file mode 100644
-index 248f839..0000000
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java
-+++ /dev/null
-@@ -1,43 +0,0 @@
--/*
-- * Copyright 2007-2008 the original author or authors.
-- *
-- * Licensed 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.
-- */
--package org.gradle.api.publication.maven.internal.ant;
--
--import org.apache.maven.artifact.ant.AntDownloadMonitor;
--import org.apache.maven.artifact.manager.DefaultWagonManager;
--import org.apache.maven.artifact.manager.WagonManager;
--import org.apache.tools.ant.Project;
--import org.codehaus.plexus.PlexusContainer;
--import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
--
--import java.lang.reflect.Field;
--
--public class LoggingHelper {
--    public static void injectLogger(PlexusContainer container, Project project) {
--        try {
--            WagonManager wagonManager = (WagonManager) container.lookup(WagonManager.ROLE);
--            Field field = DefaultWagonManager.class.getDeclaredField("downloadMonitor");
--            field.setAccessible(true);
--            AntDownloadMonitor antDownloadMonitor = (AntDownloadMonitor) field.get(wagonManager);
--            antDownloadMonitor.setProject(project);
--        } catch (ComponentLookupException e) {
--            throw new RuntimeException(e);
--        } catch (IllegalAccessException e) {
--            throw new RuntimeException(e);
--        } catch (NoSuchFieldException e) {
--            throw new RuntimeException(e);
--        }
--    }
--}
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java
-index a8fb1c2..a493ed6 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java
-@@ -16,9 +16,9 @@
- 
- package org.gradle.api.publication.maven.internal.ant;
- 
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
-+import org.apache.tools.ant.Project;
- 
- public interface MavenSettingsSupplier {
-     void done();
--    void supply(InstallDeployTaskSupport installDeployTaskSupport);
-+    void supply(Project project);
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java
-index af4020b..d3cfc7d 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java
-@@ -16,7 +16,8 @@
- 
- package org.gradle.api.publication.maven.internal.ant;
- 
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
-+import org.apache.tools.ant.Project;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
- import org.gradle.api.internal.artifacts.mvnsettings.DefaultMavenFileLocations;
- import org.gradle.api.internal.artifacts.mvnsettings.MavenFileLocations;
- 
-@@ -27,14 +28,16 @@ public class MaybeUserMavenSettingsSupplier implements MavenSettingsSupplier {
-     MavenSettingsSupplier emptySettingsSupplier = new EmptyMavenSettingsSupplier();
-     MavenFileLocations mavenFileLocations = new DefaultMavenFileLocations();
- 
--    public void supply(InstallDeployTaskSupport installDeployTaskSupport) {
-+    public void supply(Project project) {
-         File userSettings = mavenFileLocations.getUserSettingsFile();
-         if (userSettings.exists()) {
--            installDeployTaskSupport.setSettingsFile(userSettings);
-+            AntRepoSys repoSys = AntRepoSys.getInstance(project);
-+            repoSys.setGlobalSettings(userSettings);
-+            repoSys.setUserSettings(userSettings);
-             return;
-         }
- 
--        emptySettingsSupplier.supply(installDeployTaskSupport);
-+        emptySettingsSupplier.supply(project);
-     }
- 
-     public void done() {
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java
-index 988270d..3fcd73a 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java
-@@ -17,7 +17,7 @@
- package org.gradle.api.publication.maven.internal.ant;
- 
- import com.google.common.collect.Lists;
--import org.apache.maven.project.MavenProject;
-+
- import org.gradle.api.Nullable;
- import org.gradle.api.Project;
- import org.gradle.api.artifacts.ProjectDependency;
-@@ -26,6 +26,7 @@ import org.gradle.api.artifacts.maven.MavenResolver;
- import org.gradle.api.artifacts.repositories.ArtifactRepository;
- import org.gradle.api.plugins.BasePluginConvention;
- import org.gradle.api.tasks.Upload;
-+import org.apache.maven.project.MavenProject;
- import org.testng.internal.annotations.Sets;
- 
- import java.util.Collection;
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java
-index bff4576..97afd1e 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java
-@@ -15,18 +15,28 @@
-  */
- package org.gradle.api.publication.maven.internal.ant;
- 
-+import org.eclipse.aether.internal.ant.types.Authentication;
-+import org.eclipse.aether.internal.ant.types.Proxy;
-+import org.eclipse.aether.internal.ant.types.RemoteRepository;
-+
- import groovy.util.FactoryBuilderSupport;
--import org.apache.maven.artifact.ant.Authentication;
--import org.apache.maven.artifact.ant.Proxy;
--import org.apache.maven.artifact.ant.RemoteRepository;
--import org.apache.maven.artifact.ant.RepositoryPolicy;
- 
- public class RepositoryBuilder extends FactoryBuilderSupport {
-     public RepositoryBuilder() {
-         registerFactory("repository", new RepositoryFactory(RemoteRepository.class));
--        registerBeanFactory("authentication", Authentication.class);
-+        registerBeanFactory("authentication", CustomAuthentication.class);
-         registerBeanFactory("proxy", Proxy.class);
--        registerBeanFactory("snapshots", RepositoryPolicy.class);
--        registerBeanFactory("releases", RepositoryPolicy.class);
-+        registerBeanFactory("snapshots", RemoteRepository.Policy.class);
-+        registerBeanFactory("releases", RemoteRepository.Policy.class);
-+    }
-+
-+    public static class CustomAuthentication extends Authentication {
-+        public String getUserName() {
-+            return getUsername();
-+        }
-+
-+        public void setUserName(String userName) {
-+            setUsername(userName);
-+        }
-     }
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java
-index e3517aa..d4e1424 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java
-@@ -15,12 +15,14 @@
-  */
- package org.gradle.api.publication.maven.internal.ant;
- 
-+import java.util.UUID;
-+
-+import org.eclipse.aether.internal.ant.types.Authentication;
-+import org.eclipse.aether.internal.ant.types.Proxy;
-+import org.eclipse.aether.internal.ant.types.RemoteRepository;
-+
- import groovy.swing.factory.BeanFactory;
- import groovy.util.FactoryBuilderSupport;
--import org.apache.maven.artifact.ant.Authentication;
--import org.apache.maven.artifact.ant.Proxy;
--import org.apache.maven.artifact.ant.RemoteRepository;
--import org.apache.maven.artifact.ant.RepositoryPolicy;
- 
- public class RepositoryFactory extends BeanFactory {
-     public RepositoryFactory(Class klass) {
-@@ -32,20 +34,21 @@ public class RepositoryFactory extends BeanFactory {
-     }
- 
-     public void setChild(FactoryBuilderSupport builder, Object parent, Object child) {
-+        getRepository(parent).setId(UUID.randomUUID().toString());
-         if (child instanceof Authentication) {
-             getRepository(parent).addAuthentication((Authentication) child);
-         } else if (child instanceof Proxy) {
-             getRepository(parent).addProxy((Proxy) child);
--        } else if (child instanceof RepositoryPolicy) {
-+        } else if (child instanceof RemoteRepository.Policy) {
-             if (builder.getCurrentName().equals("snapshots")) {
--                getRepository(parent).addSnapshots((RepositoryPolicy) child);
-+                getRepository(parent).addSnapshots((RemoteRepository.Policy) child);
-             } else {
--                getRepository(parent).addReleases((RepositoryPolicy) child);
-+                getRepository(parent).addReleases((RemoteRepository.Policy) child);
-             }
-         }
-     }
- 
--    private RemoteRepository getRepository(Object parent) {
--        return (RemoteRepository) parent;
-+    private CustomRemoteRepository getRepository(Object parent) {
-+        return (CustomRemoteRepository) parent;
-     }
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java
-index 55c6324..4bf3736 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java
-@@ -16,9 +16,10 @@
- 
- package org.gradle.api.publish.maven.internal.publisher;
- 
--import org.apache.maven.artifact.ant.AttachedArtifact;
--import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
--import org.apache.maven.artifact.ant.Pom;
-+import org.apache.tools.ant.Project;
-+import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
-+import org.eclipse.aether.internal.ant.types.Artifact;
-+import org.eclipse.aether.internal.ant.types.Pom;
- import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
- import org.gradle.api.logging.LogLevel;
- import org.gradle.api.publication.maven.internal.ant.EmptyMavenSettingsSupplier;
-@@ -33,7 +34,7 @@ import org.slf4j.LoggerFactory;
- 
- import java.io.File;
- 
--abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeployTaskSupport> implements MavenPublisher {
-+abstract public class AbstractAntTaskBackedMavenPublisher<T extends AbstractDistTask> implements MavenPublisher {
-     private final Factory<LoggingManagerInternal> loggingManagerFactory;
- 
-     private static Logger logger = LoggerFactory.getLogger(AbstractAntTaskBackedMavenPublisher.class);
-@@ -46,11 +47,12 @@ abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeplo
- 
-     public void publish(MavenNormalizedPublication publication, MavenArtifactRepository artifactRepository) {
-         logger.info("Publishing to repository {}", artifactRepository);
-+        Project project = AntUtil.createProject();
-         T deployTask = createDeployTask();
--        deployTask.setProject(AntUtil.createProject());
-+        deployTask.setProject(project);
- 
-         MavenSettingsSupplier mavenSettingsSupplier = new EmptyMavenSettingsSupplier();
--        mavenSettingsSupplier.supply(deployTask);
-+        mavenSettingsSupplier.supply(project);
- 
-         postConfigure(deployTask, artifactRepository);
-         addPomAndArtifacts(deployTask, publication);
-@@ -63,27 +65,23 @@ abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeplo
- 
-     abstract protected T createDeployTask();
- 
--    private void addPomAndArtifacts(InstallDeployTaskSupport installOrDeployTask, MavenNormalizedPublication publication) {
-+    private void addPomAndArtifacts(AbstractDistTask task, MavenNormalizedPublication publication) {
-         Pom pom = new Pom();
--        pom.setProject(installOrDeployTask.getProject());
-+        pom.setProject(task.getProject());
-         pom.setFile(publication.getPomFile());
--        installOrDeployTask.addPom(pom);
--
--        MavenArtifact mainArtifact = publication.getMainArtifact();
--        installOrDeployTask.setFile(mainArtifact == null ? publication.getPomFile() : mainArtifact.getFile());
-+        task.addPom(pom);
- 
-         for (MavenArtifact mavenArtifact : publication.getArtifacts()) {
--            if (mavenArtifact == mainArtifact) {
--                continue;
--            }
--            AttachedArtifact attachedArtifact = installOrDeployTask.createAttach();
--            attachedArtifact.setClassifier(GUtil.elvis(mavenArtifact.getClassifier(), ""));
--            attachedArtifact.setType(GUtil.elvis(mavenArtifact.getExtension(), ""));
--            attachedArtifact.setFile(mavenArtifact.getFile());
-+            Artifact artifact = new Artifact();
-+            artifact.setProject(task.getProject());
-+            artifact.setClassifier(GUtil.elvis(mavenArtifact.getClassifier(), ""));
-+            artifact.setType(GUtil.elvis(mavenArtifact.getExtension(), ""));
-+            artifact.setFile(mavenArtifact.getFile());
-+            task.addArtifact(artifact);
-         }
-     }
- 
--    private void execute(InstallDeployTaskSupport deployTask) {
-+    private void execute(AbstractDistTask deployTask) {
-         LoggingManagerInternal loggingManager = loggingManagerFactory.create();
-         loggingManager.captureStandardOutput(LogLevel.INFO).start();
-         try {
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java
-index 2be6c47..645444a 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java
-@@ -16,49 +16,30 @@
- 
- package org.gradle.api.publish.maven.internal.publisher;
- 
--import org.apache.maven.artifact.ant.RemoteRepository;
--import org.apache.maven.artifact.repository.ArtifactRepository;
--import org.apache.maven.artifact.repository.DefaultArtifactRepository;
--import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
-+import org.eclipse.aether.internal.ant.tasks.Install;
-+import org.eclipse.aether.internal.ant.types.LocalRepository;
- import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
--import org.gradle.api.publication.maven.internal.ant.CustomInstallTask;
- import org.gradle.internal.Factory;
- import org.gradle.logging.LoggingManagerInternal;
- 
- import java.io.File;
- 
--public class AntTaskBackedMavenLocalPublisher extends AbstractAntTaskBackedMavenPublisher<AntTaskBackedMavenLocalPublisher.MavenLocalInstallTask> {
-+public class AntTaskBackedMavenLocalPublisher extends AbstractAntTaskBackedMavenPublisher<Install> {
-     public AntTaskBackedMavenLocalPublisher(Factory<LoggingManagerInternal> loggingManagerFactory, Factory<File> temporaryDirFactory) {
-         super(loggingManagerFactory, temporaryDirFactory);
-     }
- 
-     @Override
--    protected void postConfigure(MavenLocalInstallTask task, MavenArtifactRepository artifactRepository) {
--        task.setRepoLocation(artifactRepository.getUrl().toString());
-+    protected void postConfigure(Install task, MavenArtifactRepository artifactRepository) {
-+        LocalRepository localRepository = new LocalRepository(task);
-+        localRepository.setDir(new File(artifactRepository.getUrl().getPath()));
-+        AntRepoSys repoSys = AntRepoSys.getInstance(task.getProject());
-+        repoSys.setLocalRepository(localRepository);
-     }
- 
-     @Override
--    protected MavenLocalInstallTask createDeployTask() {
--        return new MavenLocalInstallTask();
--    }
--
--    public static class MavenLocalInstallTask extends CustomInstallTask {
--
--        private String repoLocation;
--
--        private void setRepoLocation(String repoLocation) {
--            this.repoLocation = repoLocation;
--        }
--
--        @Override
--        protected ArtifactRepository createLocalArtifactRepository() {
--            ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) lookup(ArtifactRepositoryLayout.ROLE, getLocalRepository().getLayout());
--            return new DefaultArtifactRepository("local", repoLocation, repositoryLayout);
--        }
--
--        @Override
--        protected void updateRepositoryWithSettings(RemoteRepository repository) {
--            // Do nothing
--        }
-+    protected Install createDeployTask() {
-+        return new Install();
-     }
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java
-index a22dbf4..4d5492d 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java
-@@ -16,53 +16,36 @@
- 
- package org.gradle.api.publish.maven.internal.publisher;
- 
--import org.apache.maven.artifact.ant.RemoteRepository;
--import org.apache.maven.artifact.repository.ArtifactRepository;
--import org.apache.maven.artifact.repository.DefaultArtifactRepository;
--import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
-+import org.eclipse.aether.internal.ant.AntRepoSys;
-+import org.eclipse.aether.internal.ant.tasks.Deploy;
-+import org.eclipse.aether.internal.ant.types.LocalRepository;
-+import org.eclipse.aether.internal.ant.types.RemoteRepository;
- import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
--import org.gradle.api.publication.maven.internal.ant.CustomDeployTask;
- import org.gradle.internal.Factory;
- import org.gradle.logging.LoggingManagerInternal;
- 
- import java.io.File;
- 
--public class AntTaskBackedMavenPublisher extends AbstractAntTaskBackedMavenPublisher<CustomDeployTask> {
-+public class AntTaskBackedMavenPublisher extends AbstractAntTaskBackedMavenPublisher<Deploy> {
-     public AntTaskBackedMavenPublisher(Factory<LoggingManagerInternal> loggingManagerFactory, Factory<File> temporaryDirFactory) {
-         super(loggingManagerFactory, temporaryDirFactory);
-     }
- 
--    protected void postConfigure(CustomDeployTask task, MavenArtifactRepository artifactRepository) {
-+    protected void postConfigure(Deploy task, MavenArtifactRepository artifactRepository) {
-         addRepository(task, artifactRepository);
-     }
- 
--    protected CustomDeployTask createDeployTask() {
--        CustomDeployTask deployTask = new DeployTask(temporaryDirFactory);
--        deployTask.setUniqueVersion(true);
--        return deployTask;
-+    protected Deploy createDeployTask() {
-+        Deploy task = new Deploy();
-+        LocalRepository localRepository = new LocalRepository(task);
-+        localRepository.setDir(temporaryDirFactory.create());
-+        AntRepoSys repoSys = AntRepoSys.getInstance(task.getProject());
-+        repoSys.setLocalRepository(localRepository);
-+        return task;
-     }
- 
--    private void addRepository(CustomDeployTask deployTask, MavenArtifactRepository artifactRepository) {
-+    private void addRepository(Deploy deployTask, MavenArtifactRepository artifactRepository) {
-         RemoteRepository mavenRepository = new MavenRemoteRepositoryFactory(artifactRepository).create();
--        deployTask.addRemoteRepository(mavenRepository);
--    }
--
--    private static class DeployTask extends CustomDeployTask {
--        private final Factory<File> tmpDirFactory;
--
--        public DeployTask(Factory<File> tmpDirFactory) {
--            this.tmpDirFactory = tmpDirFactory;
--        }
--
--        @Override
--        protected ArtifactRepository createLocalArtifactRepository() {
--            ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) lookup(ArtifactRepositoryLayout.ROLE, getLocalRepository().getLayout());
--            return new DefaultArtifactRepository("local", tmpDirFactory.create().toURI().toString(), repositoryLayout);
--        }
--
--        @Override
--        protected void updateRepositoryWithSettings(RemoteRepository repository) {
--            // Do nothing
--        }
-+        deployTask.addRemoteRepo(mavenRepository);
-     }
- }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java
-index 1f07241..dda7efa 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java
-@@ -16,8 +16,8 @@
- 
- package org.gradle.api.publish.maven.internal.publisher;
- 
--import org.apache.maven.artifact.ant.Authentication;
--import org.apache.maven.artifact.ant.RemoteRepository;
-+import org.eclipse.aether.internal.ant.types.Authentication;
-+import org.eclipse.aether.internal.ant.types.RemoteRepository;
- import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
- import org.gradle.api.artifacts.repositories.PasswordCredentials;
- import org.gradle.internal.Factory;
-@@ -40,7 +40,7 @@ class MavenRemoteRepositoryFactory implements Factory<RemoteRepository> {
- 
-         if (username != null || password != null) {
-             Authentication authentication = new Authentication();
--            authentication.setUserName(username);
-+            authentication.setUsername(username);
-             authentication.setPassword(password);
-             remoteRepository.addAuthentication(authentication);
-         }
-diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java
-index 36a60c5..636b6aa 100644
---- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java
-+++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java
-@@ -22,9 +22,9 @@ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
- import org.gradle.api.publish.internal.PublicationFieldValidator;
- import org.gradle.api.publish.maven.InvalidMavenPublicationException;
- import org.gradle.api.publish.maven.MavenArtifact;
--import org.gradle.mvn3.org.apache.maven.model.Model;
--import org.gradle.mvn3.org.apache.maven.model.io.xpp3.MavenXpp3Reader;
--import org.gradle.mvn3.org.codehaus.plexus.util.xml.pull.XmlPullParserException;
-+import org.apache.maven.model.Model;
-+import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
-+import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
- 
- import java.io.File;
- import java.io.FileReader;
--- 
-2.1.0
-
diff --git a/0006-Port-to-Maven-3.3.1-and-Aether-Ant-Tasks.patch b/0006-Port-to-Maven-3.3.1-and-Aether-Ant-Tasks.patch
new file mode 100644
index 0000000..a290b52
--- /dev/null
+++ b/0006-Port-to-Maven-3.3.1-and-Aether-Ant-Tasks.patch
@@ -0,0 +1,1337 @@
+From 69b7732e7915bb5a0cdb3c36f5879805c8d6c0e2 Mon Sep 17 00:00:00 2001
+From: Mikolaj Izdebski <mizdebsk at redhat.com>
+Date: Fri, 31 Oct 2014 09:23:37 +0100
+Subject: [PATCH 06/14] Port to Maven 3.3.1 and Aether Ant Tasks
+
+---
+ gradle/dependencies.gradle                         | 59 +++++++++----
+ .../plugins/internal/maven/Maven2Gradle.groovy     |  2 +-
+ .../internal/maven/MavenProjectXmlWriter.java      |  4 +-
+ .../internal/maven/MavenProjectsCreator.java       | 24 +++---
+ .../dependency-management.gradle                   |  7 +-
+ .../internal/artifacts/PlexusLoggerAdapter.java    |  8 ++
+ .../DefaultLocalMavenRepositoryLocator.java        |  4 +-
+ .../mvnsettings/DefaultMavenSettingsProvider.java  |  4 +-
+ .../mvnsettings/MavenSettingsProvider.java         |  4 +-
+ .../maven/internal/DefaultMavenPom.java            |  6 +-
+ .../maven/internal/ant/AbstractMavenResolver.java  | 71 ++++++++++------
+ .../maven/internal/ant/BaseMavenDeployer.java      | 98 ++++++++++++++++------
+ .../maven/internal/ant/BaseMavenInstaller.java     | 12 +--
+ .../maven/internal/ant/CustomDeployTask.java       | 45 ----------
+ .../ant/CustomInstallDeployTaskSupport.java        | 27 ------
+ .../maven/internal/ant/CustomInstallTask.java      | 38 ---------
+ .../maven/internal/ant/CustomRemoteRepository.java | 29 +++++++
+ .../internal/ant/EmptyMavenSettingsSupplier.java   |  9 +-
+ .../maven/internal/ant/GradleWagonProvider.java    | 38 +++++++++
+ .../maven/internal/ant/LoggingHelper.java          | 43 ----------
+ .../maven/internal/ant/MavenSettingsSupplier.java  |  4 +-
+ .../ant/MaybeUserMavenSettingsSupplier.java        | 11 ++-
+ .../ProjectDependencyArtifactIdExtractorHack.java  |  3 +-
+ .../maven/internal/ant/RepositoryBuilder.java      | 24 ++++--
+ .../maven/internal/ant/RepositoryFactory.java      | 21 +++--
+ .../AbstractAntTaskBackedMavenPublisher.java       | 38 ++++-----
+ .../AntTaskBackedMavenLocalPublisher.java          | 41 +++------
+ .../publisher/AntTaskBackedMavenPublisher.java     | 47 ++++-------
+ .../publisher/MavenRemoteRepositoryFactory.java    |  6 +-
+ .../publisher/ValidatingMavenPublisher.java        |  6 +-
+ 30 files changed, 365 insertions(+), 368 deletions(-)
+ delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java
+ delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java
+ delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java
+ create mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java
+ create mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java
+ delete mode 100644 subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java
+
+diff --git a/gradle/dependencies.gradle b/gradle/dependencies.gradle
+index 11a80eb..e298c96 100755
+--- a/gradle/dependencies.gradle
++++ b/gradle/dependencies.gradle
+@@ -76,8 +76,29 @@ libraries.commons_httpclient = dependencies.module('org.apache.httpcomponents:ht
+     dependency "org.samba.jcifs:jcifs:1.3.17 at jar"
+ }
+ 
+-libraries.maven_ant_tasks = dependencies.module("org.apache.maven:maven-ant-tasks:2.1.3") {
+-    libraries.ant
++libraries.maven_ant_tasks = dependencies.module("org.eclipse.aether:aether-ant-tasks:1.0.0.v20140518") {
++    dependency "org.eclipse.aether:aether-api:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-util:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-impl:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-spi:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-connector-basic:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-transport-classpath:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-transport-file:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-transport-http:1.0.0.v20140518 at jar"
++    dependency "org.apache.maven:maven-aether-provider:3.3.1 at jar"
++    dependency "org.apache.maven:maven-model:3.3.1 at jar"
++    dependency "org.apache.maven:maven-model-builder:3.3.1 at jar"
++    dependency "org.apache.maven:maven-builder-support:3.3.1 at jar"
++    dependency "org.apache.maven:maven-repository-metadata:3.3.1 at jar"
++    dependency "org.codehaus.plexus:plexus-utils:2.1 at jar"
++    dependency "org.apache.maven:maven-settings-builder:3.3.1 at jar"
++    dependency "org.apache.maven:maven-settings:3.3.1 at jar"
++    dependency "org.sonatype.plexus:plexus-sec-dispatcher:1.3 at jar"
++    dependency "org.sonatype.plexus:plexus-cipher:1.7 at jar"
++    dependency "org.codehaus.plexus:plexus-interpolation:1.16 at jar"
++    dependency "org.eclipse.sisu:org.eclipse.sisu.plexus:0.1.1 at jar"
++    dependency libraries.ant
++    dependency libraries.commons_httpclient
+ }
+ 
+ libraries += [
+@@ -98,9 +119,10 @@ libraries += [
+         jsoup:'org.jsoup:jsoup:1.6.3'
+ ]
+ 
+-libraries.maven3 = dependencies.module("org.apache.maven:maven-core:3.0.4") {
+-    dependency "org.apache.maven:maven-settings:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-settings-builder:3.0.4 at jar"
++libraries.maven3 = dependencies.module("org.apache.maven:maven-core:3.3.1") {
++    dependency "org.apache.maven:maven-settings:3.3.1 at jar"
++    dependency "org.apache.maven:maven-settings-builder:3.3.1 at jar"
++    dependency "org.apache.maven:maven-builder-support:3.3.1 at jar"
+ 
+     //plexus:
+     dependency "org.codehaus.plexus:plexus-utils:2.0.6 at jar"
+@@ -114,27 +136,28 @@ libraries.maven3 = dependencies.module("org.apache.maven:maven-core:3.0.4") {
+     dependency "org.sonatype.plexus:plexus-sec-dispatcher:1.3 at jar"
+ 
+     //core:
+-    dependency "org.apache.maven:maven-core:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-model-builder:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-model:3.0.4 at jar"
++    dependency "org.apache.maven:maven-core:3.3.1 at jar"
++    dependency "org.apache.maven:maven-model-builder:3.3.1 at jar"
++    dependency "org.apache.maven:maven-model:3.3.1 at jar"
+ 
+     //somewhat core:
+-    dependency "org.apache.maven:maven-artifact:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-compat:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-repository-metadata:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-plugin-api:3.0.4 at jar"
+-    dependency "org.apache.maven:maven-aether-provider:3.0.4 at jar"
++    dependency "org.apache.maven:maven-artifact:3.3.1 at jar"
++    dependency "org.apache.maven:maven-compat:3.3.1 at jar"
++    dependency "org.apache.maven:maven-repository-metadata:3.3.1 at jar"
++    dependency "org.apache.maven:maven-plugin-api:3.3.1 at jar"
++    dependency "org.apache.maven:maven-aether-provider:3.3.1 at jar"
+ 
+     dependency 'org.apache.maven.wagon:wagon-http:2.8 at jar'
+     dependency 'org.apache.maven.wagon:wagon-provider-api:2.8 at jar'
+     dependency 'org.apache.maven.wagon:wagon-http-shared:2.8 at jar'
+ 
+     //eather:
+-    dependency "org.sonatype.aether:aether-api:1.13.1 at jar"
+-    dependency "org.sonatype.aether:aether-impl:1.13.1 at jar"
+-    dependency "org.sonatype.aether:aether-spi:1.13.1 at jar"
+-    dependency "org.sonatype.aether:aether-util:1.13.1 at jar"
+-    dependency 'org.sonatype.aether:aether-connector-wagon:1.13.1 at jar'
++    dependency "org.eclipse.aether:aether-api:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-impl:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-spi:1.0.0.v20140518 at jar"
++    dependency "org.eclipse.aether:aether-util:1.0.0.v20140518 at jar"
++    dependency 'org.eclipse.aether:aether-connector-basic:1.0.0.v20140518 at jar'
++    dependency 'org.eclipse.aether:aether-transport-wagon:1.0.0.v20140518 at jar'
+ }
+ 
+ libraries.spock = [
+diff --git a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy
+index b16a908..dacb94c 100644
+--- a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy
++++ b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/Maven2Gradle.groovy
+@@ -18,7 +18,7 @@
+ 
+ package org.gradle.buildinit.plugins.internal.maven
+ 
+-import org.gradle.mvn3.org.apache.maven.project.MavenProject
++import org.apache.maven.project.MavenProject
+ import org.gradle.util.GFileUtils
+ 
+ /**
+diff --git a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java
+index a304126..b2c9c0b 100644
+--- a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java
++++ b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectXmlWriter.java
+@@ -16,8 +16,8 @@
+ 
+ package org.gradle.buildinit.plugins.internal.maven;
+ 
+-import org.gradle.mvn3.org.apache.maven.model.io.xpp3.MavenXpp3Writer;
+-import org.gradle.mvn3.org.apache.maven.project.MavenProject;
++import org.apache.maven.model.io.xpp3.MavenXpp3Writer;
++import org.apache.maven.project.MavenProject;
+ 
+ import java.io.ByteArrayOutputStream;
+ import java.io.IOException;
+diff --git a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
+index ddd4924..8dfde0d 100644
+--- a/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
++++ b/subprojects/build-init/src/main/groovy/org/gradle/buildinit/plugins/internal/maven/MavenProjectsCreator.java
+@@ -19,18 +19,18 @@ package org.gradle.buildinit.plugins.internal.maven;
+ import com.google.common.collect.ImmutableList;
+ import org.gradle.api.Transformer;
+ import org.gradle.internal.SystemProperties;
+-import org.gradle.mvn3.org.apache.maven.execution.*;
+-import org.gradle.mvn3.org.apache.maven.project.*;
+-import org.gradle.mvn3.org.apache.maven.settings.Settings;
+-import org.gradle.mvn3.org.codehaus.plexus.ContainerConfiguration;
+-import org.gradle.mvn3.org.codehaus.plexus.DefaultContainerConfiguration;
+-import org.gradle.mvn3.org.codehaus.plexus.DefaultPlexusContainer;
+-import org.gradle.mvn3.org.codehaus.plexus.PlexusContainerException;
+-import org.gradle.mvn3.org.codehaus.plexus.classworlds.ClassWorld;
+-import org.gradle.mvn3.org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+-import org.gradle.mvn3.org.codehaus.plexus.configuration.PlexusConfigurationException;
+-import org.gradle.mvn3.org.sonatype.aether.RepositorySystemSession;
+-import org.gradle.mvn3.org.sonatype.aether.util.DefaultRepositorySystemSession;
++import org.apache.maven.execution.*;
++import org.apache.maven.project.*;
++import org.apache.maven.settings.Settings;
++import org.codehaus.plexus.ContainerConfiguration;
++import org.codehaus.plexus.DefaultContainerConfiguration;
++import org.codehaus.plexus.DefaultPlexusContainer;
++import org.codehaus.plexus.PlexusContainerException;
++import org.codehaus.plexus.classworlds.ClassWorld;
++import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
++import org.codehaus.plexus.configuration.PlexusConfigurationException;
++import org.eclipse.aether.RepositorySystemSession;
++import org.eclipse.aether.DefaultRepositorySystemSession;
+ import org.gradle.util.CollectionUtils;
+ 
+ import java.io.File;
+diff --git a/subprojects/dependency-management/dependency-management.gradle b/subprojects/dependency-management/dependency-management.gradle
+index 3ddc4f3..2af3f84 100644
+--- a/subprojects/dependency-management/dependency-management.gradle
++++ b/subprojects/dependency-management/dependency-management.gradle
+@@ -42,9 +42,10 @@ task jarJarMaven3(type: JarJar) {
+     //unfortunately, all those need to be jarjarred.
+     // Even if some library (like aether) is not included in maven-ant-tasks it has
+     // META-INF/plexus/components.xml that to jarjarred components.
+-    rule('org.apache.maven.**', 'org.gradle.mvn3.org.apache.maven. at 1')
+-    rule('org.codehaus.**', 'org.gradle.mvn3.org.codehaus. at 1')
+-    rule('org.sonatype.**', 'org.gradle.mvn3.org.sonatype. at 1')
++    //rule('org.apache.maven.**', 'org.gradle.mvn3.org.apache.maven. at 1')
++    //rule('org.codehaus.**', 'org.gradle.mvn3.org.codehaus. at 1')
++    //rule('org.sonatype.**', 'org.gradle.mvn3.org.sonatype. at 1')
++    //rule('org.eclipse.aether.**', 'org.gradle.mvn3.org.eclipse.aether. at 1')
+ 
+     avoidConflictingPlexusComponents(it)
+ }
+diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
+index e02ab3b..5f213bd 100644
+--- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
++++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
+@@ -92,7 +92,15 @@ public class PlexusLoggerAdapter implements Logger {
+         throw new UnsupportedOperationException();
+     }
+ 
++    public void setThreshold(int threshold) {
++        throw new UnsupportedOperationException();
++    }
++
+     public String getName() {
+         return logger.getName();
+     }
++
++    public void setName(String name) {
++        throw new UnsupportedOperationException();
++    }
+ }
+diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java
+index 299544f..c93a9bd 100644
+--- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java
++++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultLocalMavenRepositoryLocator.java
+@@ -15,8 +15,8 @@
+  */
+ package org.gradle.api.internal.artifacts.mvnsettings;
+ 
+-import org.gradle.mvn3.org.apache.maven.settings.Settings;
+-import org.gradle.mvn3.org.apache.maven.settings.building.SettingsBuildingException;
++import org.apache.maven.settings.Settings;
++import org.apache.maven.settings.building.SettingsBuildingException;
+ import org.slf4j.Logger;
+ import org.slf4j.LoggerFactory;
+ 
+diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java
+index cc39a17..01eb522 100644
+--- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java
++++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/DefaultMavenSettingsProvider.java
+@@ -15,8 +15,8 @@
+  */
+ package org.gradle.api.internal.artifacts.mvnsettings;
+ 
+-import org.gradle.mvn3.org.apache.maven.settings.Settings;
+-import org.gradle.mvn3.org.apache.maven.settings.building.*;
++import org.apache.maven.settings.Settings;
++import org.apache.maven.settings.building.*;
+ 
+ public class DefaultMavenSettingsProvider implements MavenSettingsProvider {
+ 
+diff --git a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java
+index dd93102..a7d7030 100644
+--- a/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java
++++ b/subprojects/dependency-management/src/main/java/org/gradle/api/internal/artifacts/mvnsettings/MavenSettingsProvider.java
+@@ -15,8 +15,8 @@
+  */
+ package org.gradle.api.internal.artifacts.mvnsettings;
+ 
+-import org.gradle.mvn3.org.apache.maven.settings.Settings;
+-import org.gradle.mvn3.org.apache.maven.settings.building.SettingsBuildingException;
++import org.apache.maven.settings.Settings;
++import org.apache.maven.settings.building.SettingsBuildingException;
+ 
+ public interface MavenSettingsProvider {
+     Settings buildSettings() throws SettingsBuildingException;
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java
+index 482c0a9..80b1ad9 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultMavenPom.java
+@@ -160,11 +160,7 @@ public class DefaultMavenPom implements MavenPom {
+ 
+     public DefaultMavenPom getEffectivePom() {
+         DefaultMavenPom effectivePom = new DefaultMavenPom(null, this.scopeMappings, pomDependenciesConverter, fileResolver);
+-        try {
+-            effectivePom.setMavenProject((MavenProject) mavenProject.clone());
+-        } catch (CloneNotSupportedException e) {
+-            throw new RuntimeException(e);
+-        }
++        effectivePom.setMavenProject((MavenProject) mavenProject.clone());
+         effectivePom.getDependencies().addAll(getGeneratedDependencies());
+         effectivePom.withXmlActions = withXmlActions;
+         whenConfiguredActions.execute(effectivePom);
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java
+index 854202f..6d35082 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/AbstractMavenResolver.java
+@@ -16,12 +16,13 @@
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+ import groovy.lang.Closure;
+-import org.apache.ivy.core.module.descriptor.Artifact;
+-import org.apache.maven.artifact.ant.AttachedArtifact;
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
+-import org.apache.maven.artifact.ant.Pom;
++
+ import org.apache.maven.settings.Settings;
+ import org.apache.tools.ant.Project;
++import org.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
++import org.eclipse.aether.internal.ant.types.Artifact;
++import org.eclipse.aether.internal.ant.types.Pom;
+ import org.gradle.api.Action;
+ import org.gradle.api.artifacts.PublishArtifact;
+ import org.gradle.api.artifacts.maven.*;
+@@ -41,6 +42,7 @@ import org.gradle.logging.LoggingManagerInternal;
+ import org.gradle.util.AntUtil;
+ 
+ import java.io.File;
++import java.lang.reflect.Method;
+ import java.util.Set;
+ 
+ public abstract class AbstractMavenResolver extends AbstractArtifactRepository implements MavenResolver, ModuleVersionPublisher, ResolutionAwareRepository, PublicationAwareRepository {
+@@ -71,7 +73,7 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
+         return this;
+     }
+ 
+-    protected abstract InstallDeployTaskSupport createPreConfiguredTask(Project project);
++    protected abstract AbstractDistTask createPreConfiguredTask(Project project);
+ 
+     public void publish(IvyModulePublishMetaData moduleVersion) {
+         for (IvyModuleArtifactPublishMetaData artifact : moduleVersion.getArtifacts()) {
+@@ -80,32 +82,39 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
+         publish();
+     }
+ 
+-    private void collectArtifact(Artifact artifact, File src) {
++    private void collectArtifact(org.apache.ivy.core.module.descriptor.Artifact artifact, File src) {
+         if (isIgnorable(artifact)) {
+             return;
+         }
+         getArtifactPomContainer().addArtifact(artifact, src);
+     }
+ 
+-    private boolean isIgnorable(Artifact artifact) {
++    private boolean isIgnorable(org.apache.ivy.core.module.descriptor.Artifact artifact) {
+         return artifact.getType().equals("ivy");
+     }
+ 
+     private void publish() {
+-        InstallDeployTaskSupport installDeployTaskSupport = createPreConfiguredTask(AntUtil.createProject());
++        Project project = AntUtil.createProject();
+         Set<MavenDeployment> mavenDeployments = getArtifactPomContainer().createDeployableFilesInfos();
+-        mavenSettingsSupplier.supply(installDeployTaskSupport);
++        mavenSettingsSupplier.supply(project);
+         for (MavenDeployment mavenDeployment : mavenDeployments) {
+-            ((CustomInstallDeployTaskSupport) installDeployTaskSupport).clearAttachedArtifactsList();
++            AbstractDistTask task = createPreConfiguredTask(project);
+             beforeDeploymentActions.execute(mavenDeployment);
+-            addPomAndArtifact(installDeployTaskSupport, mavenDeployment);
+-            execute(installDeployTaskSupport);
++            addPomAndArtifact(task, mavenDeployment);
++            execute(task);
+         }
+         mavenSettingsSupplier.done();
+-        settings = ((CustomInstallDeployTaskSupport) installDeployTaskSupport).getSettings();
++
++        try {
++            Method getter = AntRepoSys.class.getDeclaredMethod("getSettings");
++            getter.setAccessible(true);
++            settings = (Settings) getter.invoke(AntRepoSys.getInstance(project));
++        } catch (ReflectiveOperationException e) {
++            throw new RuntimeException(e);
++        }
+     }
+ 
+-    private void execute(InstallDeployTaskSupport deployTask) {
++    private void execute(AbstractDistTask deployTask) {
+         loggingManager.captureStandardOutput(LogLevel.INFO).start();
+         try {
+             deployTask.execute();
+@@ -114,19 +123,33 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
+         }
+     }
+ 
+-    private void addPomAndArtifact(InstallDeployTaskSupport installOrDeployTask, MavenDeployment mavenDeployment) {
++    private void addPomAndArtifact(AbstractDistTask task, MavenDeployment mavenDeployment) {
++        PublishArtifact pomArtifact = mavenDeployment.getPomArtifact();
+         Pom pom = new Pom();
+-        pom.setProject(installOrDeployTask.getProject());
+-        pom.setFile(mavenDeployment.getPomArtifact().getFile());
+-        installOrDeployTask.addPom(pom);
++        pom.setProject(task.getProject());
++        pom.setFile(pomArtifact.getFile());
++        task.addPom(pom);
++
++        PublishArtifact mainArtifact = mavenDeployment.getMainArtifact();
+         if (mavenDeployment.getMainArtifact() != null) {
+-            installOrDeployTask.setFile(mavenDeployment.getMainArtifact().getFile());
++            Artifact artifact = new Artifact();
++            artifact.setProject(task.getProject());
++            artifact.setFile(mainArtifact.getFile());
++            artifact.setType(mainArtifact.getType());
++            task.addArtifact(artifact);
+         }
+-        for (PublishArtifact classifierArtifact : mavenDeployment.getAttachedArtifacts()) {
+-            AttachedArtifact attachedArtifact = installOrDeployTask.createAttach();
+-            attachedArtifact.setClassifier(classifierArtifact.getClassifier());
+-            attachedArtifact.setFile(classifierArtifact.getFile());
+-            attachedArtifact.setType(classifierArtifact.getType());
++
++        for (PublishArtifact attachedArtifact : mavenDeployment.getAttachedArtifacts()) {
++            String type = attachedArtifact.getType();
++            String classifier = attachedArtifact.getClassifier();
++            if (type != null && type.equals("pom") && (classifier == null || classifier.isEmpty()))
++                continue;
++            Artifact artifact = new Artifact();
++            artifact.setProject(task.getProject());
++            artifact.setFile(attachedArtifact.getFile());
++            artifact.setType(type);
++            artifact.setClassifier(classifier);
++            task.addArtifact(artifact);
+         }
+     }
+ 
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java
+index 35b0e95..dd0a310 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenDeployer.java
+@@ -1,5 +1,5 @@
+ /*
+- * Copyright 2007-2008 the original author or authors.
++ * Copyright 2007-2014 the original author or authors.
+  *
+  * Licensed under the Apache License, Version 2.0 (the "License");
+  * you may not use this file except in compliance with the License.
+@@ -15,12 +15,24 @@
+  */
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+-import org.apache.maven.artifact.ant.DeployTask;
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
+-import org.apache.maven.artifact.ant.RemoteRepository;
+ import org.apache.tools.ant.Project;
++import org.codehaus.plexus.ContainerConfiguration;
++import org.codehaus.plexus.DefaultContainerConfiguration;
++import org.codehaus.plexus.DefaultPlexusContainer;
+ import org.codehaus.plexus.PlexusContainer;
+ import org.codehaus.plexus.PlexusContainerException;
++import org.codehaus.plexus.classworlds.ClassWorld;
++import org.codehaus.plexus.classworlds.realm.ClassRealm;
++import org.eclipse.aether.impl.DefaultServiceLocator;
++import org.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
++import org.eclipse.aether.internal.ant.tasks.Deploy;
++import org.eclipse.aether.internal.ant.types.RemoteRepository;
++import org.eclipse.aether.internal.transport.wagon.PlexusWagonConfigurator;
++import org.eclipse.aether.spi.connector.transport.TransporterFactory;
++import org.eclipse.aether.transport.wagon.WagonConfigurator;
++import org.eclipse.aether.transport.wagon.WagonProvider;
++import org.eclipse.aether.transport.wagon.WagonTransporterFactory;
+ import org.gradle.api.artifacts.Configuration;
+ import org.gradle.api.artifacts.maven.MavenDeployer;
+ import org.gradle.api.artifacts.maven.PomFilterContainer;
+@@ -28,6 +40,8 @@ import org.gradle.api.publication.maven.internal.ArtifactPomContainer;
+ import org.gradle.logging.LoggingManagerInternal;
+ 
+ import java.io.File;
++import java.lang.reflect.Field;
++import java.net.MalformedURLException;
+ import java.util.ArrayList;
+ import java.util.Collection;
+ import java.util.List;
+@@ -42,43 +56,77 @@ public class BaseMavenDeployer extends AbstractMavenResolver implements MavenDep
+     // todo remove this property once configuration can handle normal file system dependencies
+     private List<File> protocolProviderJars = new ArrayList<File>();
+ 
+-    private boolean uniqueVersion = true;
+-
+     public BaseMavenDeployer(PomFilterContainer pomFilterContainer, ArtifactPomContainer artifactPomContainer, LoggingManagerInternal loggingManager) {
+         super(pomFilterContainer, artifactPomContainer, loggingManager);
+     }
+ 
+-    protected InstallDeployTaskSupport createPreConfiguredTask(Project project) {
+-        CustomDeployTask deployTask = createTask();
++    protected AbstractDistTask createPreConfiguredTask(Project project) {
++        configureAetherRepoSys(project);
++        Deploy deployTask = createTask();
+         deployTask.setProject(project);
+-        deployTask.setUniqueVersion(isUniqueVersion());
+-        addProtocolProvider(deployTask);
+         addRemoteRepositories(deployTask);
+         return deployTask;
+     }
+ 
+-    protected CustomDeployTask createTask() {
+-        return new CustomDeployTask();
++    private void configureAetherRepoSys(Project project) {
++        PlexusContainer container = createContainer();
++
++        try {
++            AntRepoSys repoSys = AntRepoSys.getInstance(project);
++            Field field = repoSys.getClass().getDeclaredField("locator");
++            field.setAccessible(true);
++            DefaultServiceLocator locator = (DefaultServiceLocator) field.get(repoSys);
++            locator.addService(TransporterFactory.class, WagonTransporterFactory.class);
++            locator.addService(WagonProvider.class, GradleWagonProvider.class);
++            locator.addService(WagonConfigurator.class, PlexusWagonConfigurator.class);
++
++            GradleWagonProvider wagonProvider = (GradleWagonProvider) locator.getService(WagonProvider.class);
++            wagonProvider.initService(container);
++        } catch (ReflectiveOperationException e) {
++            throw new RuntimeException(e);
++        }
+     }
+ 
+-    private void addProtocolProvider(CustomDeployTask deployTask) {
+-        PlexusContainer plexusContainer = deployTask.getContainer();
+-        for (File wagonProviderJar : getJars()) {
+-            try {
+-                plexusContainer.addJarResource(wagonProviderJar);
+-            } catch (PlexusContainerException e) {
+-                throw new RuntimeException(e);
++    private PlexusContainer createContainer() {
++        try {
++            ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
++            ClassWorld world = new ClassWorld("plexus.core", classLoader);
++            ClassRealm realm = new ClassRealm(world, "plexus.core", classLoader);
++            for (File wagonProviderJar : getJars()) {
++                realm.addURL(wagonProviderJar.toURI().toURL());
+             }
++
++            ContainerConfiguration conf = new DefaultContainerConfiguration();
++            conf.setClassWorld(world);
++            conf.setRealm(realm);
++            conf.setName("plexus.core");
++
++            return new DefaultPlexusContainer(conf);
++        } catch (PlexusContainerException e) {
++            throw new RuntimeException(e);
++        } catch (MalformedURLException e) {
++            throw new RuntimeException(e);
+         }
+     }
+ 
++    protected Deploy createTask() {
++        return new Deploy();
++    }
++
+     private List<File> getJars() {
+         return configuration != null ? new ArrayList<File>(configuration.resolve()) : protocolProviderJars;
+     }
+ 
+-    private void addRemoteRepositories(DeployTask deployTask) {
+-        deployTask.addRemoteRepository(remoteRepository);
+-        deployTask.addRemoteSnapshotRepository(remoteSnapshotRepository);
++    private void addRemoteRepositories(Deploy deployTask) {
++        Project project = deployTask.getProject();
++        if (remoteRepository != null) {
++            remoteRepository.setProject(project);
++        }
++        if (remoteSnapshotRepository != null) {
++            remoteSnapshotRepository.setProject(project);
++        }
++        deployTask.addRemoteRepo(remoteRepository);
++        deployTask.addSnapshotRepo(remoteSnapshotRepository);
+     }
+ 
+     public RemoteRepository getRepository() {
+@@ -110,10 +158,12 @@ public class BaseMavenDeployer extends AbstractMavenResolver implements MavenDep
+     }
+ 
+     public boolean isUniqueVersion() {
+-        return uniqueVersion;
++        return true;
+     }
+ 
+     public void setUniqueVersion(boolean uniqueVersion) {
+-        this.uniqueVersion = uniqueVersion;
++        if (!uniqueVersion) {
++            throw new IllegalArgumentException("Non-unique snapshot versions are not supported by this version of Gradle");
++        }
+     }
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java
+index a901694..19541f0 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/BaseMavenInstaller.java
+@@ -15,9 +15,9 @@
+  */
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
+-import org.apache.maven.artifact.ant.InstallTask;
+ import org.apache.tools.ant.Project;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
++import org.eclipse.aether.internal.ant.tasks.Install;
+ import org.gradle.api.artifacts.maven.PomFilterContainer;
+ import org.gradle.api.publication.maven.internal.ArtifactPomContainer;
+ import org.gradle.logging.LoggingManagerInternal;
+@@ -28,13 +28,13 @@ public class BaseMavenInstaller extends AbstractMavenResolver {
+         mavenSettingsSupplier = new MaybeUserMavenSettingsSupplier();
+     }
+ 
+-    protected InstallDeployTaskSupport createPreConfiguredTask(Project project) {
+-        InstallTask installTask = createTask();
++    protected AbstractDistTask createPreConfiguredTask(Project project) {
++        Install installTask = createTask();
+         installTask.setProject(project);
+         return installTask;
+     }
+ 
+-    protected CustomInstallTask createTask() {
+-        return new CustomInstallTask();
++    protected Install createTask() {
++        return new Install();
+     }
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java
+deleted file mode 100644
+index 85521bf..0000000
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomDeployTask.java
++++ /dev/null
+@@ -1,45 +0,0 @@
+-/*
+- * Copyright 2007-2008 the original author or authors.
+- *
+- * Licensed 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.
+- */
+-package org.gradle.api.publication.maven.internal.ant;
+-
+-import org.apache.maven.artifact.ant.DeployTask;
+-import org.apache.maven.settings.Settings;
+-import org.codehaus.plexus.PlexusContainer;
+-
+-/**
+- * We could also use reflection to get hold of the container property. But this would make it harder to use a Mock for this class.
+- */
+-public class CustomDeployTask extends DeployTask implements CustomInstallDeployTaskSupport {
+-    @Override
+-    public synchronized Settings getSettings() {
+-        return super.getSettings();
+-    }
+-
+-    @Override
+-    public synchronized PlexusContainer getContainer() {
+-        return super.getContainer();
+-    }
+-
+-    @Override
+-    public void doExecute() {
+-        LoggingHelper.injectLogger(getContainer(), getProject());
+-        super.doExecute();
+-    }
+-
+-    public void clearAttachedArtifactsList() {
+-        attachedArtifacts.clear();
+-    }
+-}
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java
+deleted file mode 100644
+index 40c3ea9..0000000
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallDeployTaskSupport.java
++++ /dev/null
+@@ -1,27 +0,0 @@
+-/*
+- * Copyright 2007-2008 the original author or authors.
+- *
+- * Licensed 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.
+- */
+-package org.gradle.api.publication.maven.internal.ant;
+-
+-import org.apache.maven.artifact.ant.AttachedArtifact;
+-import org.apache.maven.settings.Settings;
+-import org.apache.tools.ant.Project;
+-
+-public interface CustomInstallDeployTaskSupport {
+-    Settings getSettings();
+-    Project getProject();
+-    AttachedArtifact createAttach();
+-    void clearAttachedArtifactsList();
+-}
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java
+deleted file mode 100644
+index 15079c4..0000000
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomInstallTask.java
++++ /dev/null
+@@ -1,38 +0,0 @@
+-/*
+- * Copyright 2007-2008 the original author or authors.
+- *
+- * Licensed 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.
+- */
+-package org.gradle.api.publication.maven.internal.ant;
+-
+-import org.apache.maven.artifact.ant.InstallTask;
+-import org.apache.maven.settings.Settings;
+-
+-public class CustomInstallTask extends InstallTask implements CustomInstallDeployTaskSupport {
+-    @Override
+-    public synchronized Settings getSettings() {
+-        return super.getSettings();   
+-    }
+-
+-    public void clearAttachedArtifactsList() {
+-        attachedArtifacts.clear();
+-    }
+-
+-    @Override
+-    public void doExecute() {
+-        LoggingHelper.injectLogger(getContainer(), getProject());
+-        super.doExecute();
+-    }
+-
+-
+-}
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java
+new file mode 100644
+index 0000000..df82986
+--- /dev/null
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/CustomRemoteRepository.java
+@@ -0,0 +1,29 @@
++package org.gradle.api.publication.maven.internal.ant;
++
++import java.util.ArrayList;
++import java.util.List;
++
++import org.apache.tools.ant.Project;
++import org.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.types.Proxy;
++import org.eclipse.aether.internal.ant.types.RemoteRepository;
++
++class CustomRemoteRepository extends RemoteRepository {
++
++    private final List<Proxy> proxies = new ArrayList<Proxy>();
++
++    @Override
++    public void setProject(Project project) {
++        super.setProject(project);
++
++        AntRepoSys repoSys = AntRepoSys.getInstance(project);
++        for (Proxy proxy : proxies) {
++            repoSys.addProxy(proxy);
++        }
++    }
++
++    public void addProxy(Proxy proxy) {
++        proxies.add(proxy);
++    }
++
++}
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
+index 5549dcb..0119703 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
+@@ -17,7 +17,8 @@
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+ import org.apache.commons.io.FileUtils;
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
++import org.apache.tools.ant.Project;
++import org.eclipse.aether.internal.ant.AntRepoSys;
+ import org.gradle.api.UncheckedIOException;
+ import org.gradle.api.internal.file.TemporaryFileProvider;
+ import org.gradle.api.internal.file.TmpDirTemporaryFileProvider;
+@@ -30,7 +31,7 @@ public class EmptyMavenSettingsSupplier implements MavenSettingsSupplier {
+     private final TemporaryFileProvider temporaryFileProvider = new TmpDirTemporaryFileProvider();
+     private File settingsXml;
+ 
+-    public void supply(InstallDeployTaskSupport installDeployTaskSupport) {
++    public void supply(Project project) {
+         try {
+             settingsXml = temporaryFileProvider.createTemporaryFile("gradle_empty_settings", ".xml");
+             FileUtils.writeStringToFile(settingsXml, "<settings/>");
+@@ -38,7 +39,9 @@ public class EmptyMavenSettingsSupplier implements MavenSettingsSupplier {
+         } catch (IOException e) {
+             throw new UncheckedIOException(e);
+         }
+-        installDeployTaskSupport.setSettingsFile(settingsXml);
++        AntRepoSys repoSys = AntRepoSys.getInstance(project);
++        repoSys.setGlobalSettings(settingsXml);
++        repoSys.setUserSettings(settingsXml);
+     }
+ 
+     public void done() {
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java
+new file mode 100644
+index 0000000..cfab163
+--- /dev/null
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/GradleWagonProvider.java
+@@ -0,0 +1,38 @@
++/*
++ * Copyright 2014 the original author or authors.
++ *
++ * Licensed 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.
++ */
++package org.gradle.api.publication.maven.internal.ant;
++
++import org.apache.maven.wagon.Wagon;
++import org.codehaus.plexus.PlexusContainer;
++import org.eclipse.aether.internal.transport.wagon.PlexusWagonProvider;
++import org.eclipse.aether.transport.wagon.WagonProvider;
++
++public class GradleWagonProvider implements WagonProvider {
++
++    private WagonProvider delegate;
++
++    public void initService(PlexusContainer container) {
++        delegate = new PlexusWagonProvider(container);
++    }
++
++    public Wagon lookup(String roleHint) throws Exception {
++        return delegate.lookup(roleHint);
++    }
++
++    public void release(Wagon wagon) {
++        delegate.release(wagon);
++    }
++}
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java
+deleted file mode 100644
+index 248f839..0000000
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/LoggingHelper.java
++++ /dev/null
+@@ -1,43 +0,0 @@
+-/*
+- * Copyright 2007-2008 the original author or authors.
+- *
+- * Licensed 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.
+- */
+-package org.gradle.api.publication.maven.internal.ant;
+-
+-import org.apache.maven.artifact.ant.AntDownloadMonitor;
+-import org.apache.maven.artifact.manager.DefaultWagonManager;
+-import org.apache.maven.artifact.manager.WagonManager;
+-import org.apache.tools.ant.Project;
+-import org.codehaus.plexus.PlexusContainer;
+-import org.codehaus.plexus.component.repository.exception.ComponentLookupException;
+-
+-import java.lang.reflect.Field;
+-
+-public class LoggingHelper {
+-    public static void injectLogger(PlexusContainer container, Project project) {
+-        try {
+-            WagonManager wagonManager = (WagonManager) container.lookup(WagonManager.ROLE);
+-            Field field = DefaultWagonManager.class.getDeclaredField("downloadMonitor");
+-            field.setAccessible(true);
+-            AntDownloadMonitor antDownloadMonitor = (AntDownloadMonitor) field.get(wagonManager);
+-            antDownloadMonitor.setProject(project);
+-        } catch (ComponentLookupException e) {
+-            throw new RuntimeException(e);
+-        } catch (IllegalAccessException e) {
+-            throw new RuntimeException(e);
+-        } catch (NoSuchFieldException e) {
+-            throw new RuntimeException(e);
+-        }
+-    }
+-}
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java
+index a8fb1c2..a493ed6 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MavenSettingsSupplier.java
+@@ -16,9 +16,9 @@
+ 
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
++import org.apache.tools.ant.Project;
+ 
+ public interface MavenSettingsSupplier {
+     void done();
+-    void supply(InstallDeployTaskSupport installDeployTaskSupport);
++    void supply(Project project);
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java
+index af4020b..d3cfc7d 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/MaybeUserMavenSettingsSupplier.java
+@@ -16,7 +16,8 @@
+ 
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
++import org.apache.tools.ant.Project;
++import org.eclipse.aether.internal.ant.AntRepoSys;
+ import org.gradle.api.internal.artifacts.mvnsettings.DefaultMavenFileLocations;
+ import org.gradle.api.internal.artifacts.mvnsettings.MavenFileLocations;
+ 
+@@ -27,14 +28,16 @@ public class MaybeUserMavenSettingsSupplier implements MavenSettingsSupplier {
+     MavenSettingsSupplier emptySettingsSupplier = new EmptyMavenSettingsSupplier();
+     MavenFileLocations mavenFileLocations = new DefaultMavenFileLocations();
+ 
+-    public void supply(InstallDeployTaskSupport installDeployTaskSupport) {
++    public void supply(Project project) {
+         File userSettings = mavenFileLocations.getUserSettingsFile();
+         if (userSettings.exists()) {
+-            installDeployTaskSupport.setSettingsFile(userSettings);
++            AntRepoSys repoSys = AntRepoSys.getInstance(project);
++            repoSys.setGlobalSettings(userSettings);
++            repoSys.setUserSettings(userSettings);
+             return;
+         }
+ 
+-        emptySettingsSupplier.supply(installDeployTaskSupport);
++        emptySettingsSupplier.supply(project);
+     }
+ 
+     public void done() {
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java
+index 988270d..3fcd73a 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/ProjectDependencyArtifactIdExtractorHack.java
+@@ -17,7 +17,7 @@
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+ import com.google.common.collect.Lists;
+-import org.apache.maven.project.MavenProject;
++
+ import org.gradle.api.Nullable;
+ import org.gradle.api.Project;
+ import org.gradle.api.artifacts.ProjectDependency;
+@@ -26,6 +26,7 @@ import org.gradle.api.artifacts.maven.MavenResolver;
+ import org.gradle.api.artifacts.repositories.ArtifactRepository;
+ import org.gradle.api.plugins.BasePluginConvention;
+ import org.gradle.api.tasks.Upload;
++import org.apache.maven.project.MavenProject;
+ import org.testng.internal.annotations.Sets;
+ 
+ import java.util.Collection;
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java
+index bff4576..97afd1e 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryBuilder.java
+@@ -15,18 +15,28 @@
+  */
+ package org.gradle.api.publication.maven.internal.ant;
+ 
++import org.eclipse.aether.internal.ant.types.Authentication;
++import org.eclipse.aether.internal.ant.types.Proxy;
++import org.eclipse.aether.internal.ant.types.RemoteRepository;
++
+ import groovy.util.FactoryBuilderSupport;
+-import org.apache.maven.artifact.ant.Authentication;
+-import org.apache.maven.artifact.ant.Proxy;
+-import org.apache.maven.artifact.ant.RemoteRepository;
+-import org.apache.maven.artifact.ant.RepositoryPolicy;
+ 
+ public class RepositoryBuilder extends FactoryBuilderSupport {
+     public RepositoryBuilder() {
+         registerFactory("repository", new RepositoryFactory(RemoteRepository.class));
+-        registerBeanFactory("authentication", Authentication.class);
++        registerBeanFactory("authentication", CustomAuthentication.class);
+         registerBeanFactory("proxy", Proxy.class);
+-        registerBeanFactory("snapshots", RepositoryPolicy.class);
+-        registerBeanFactory("releases", RepositoryPolicy.class);
++        registerBeanFactory("snapshots", RemoteRepository.Policy.class);
++        registerBeanFactory("releases", RemoteRepository.Policy.class);
++    }
++
++    public static class CustomAuthentication extends Authentication {
++        public String getUserName() {
++            return getUsername();
++        }
++
++        public void setUserName(String userName) {
++            setUsername(userName);
++        }
+     }
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java
+index e3517aa..d4e1424 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/RepositoryFactory.java
+@@ -15,12 +15,14 @@
+  */
+ package org.gradle.api.publication.maven.internal.ant;
+ 
++import java.util.UUID;
++
++import org.eclipse.aether.internal.ant.types.Authentication;
++import org.eclipse.aether.internal.ant.types.Proxy;
++import org.eclipse.aether.internal.ant.types.RemoteRepository;
++
+ import groovy.swing.factory.BeanFactory;
+ import groovy.util.FactoryBuilderSupport;
+-import org.apache.maven.artifact.ant.Authentication;
+-import org.apache.maven.artifact.ant.Proxy;
+-import org.apache.maven.artifact.ant.RemoteRepository;
+-import org.apache.maven.artifact.ant.RepositoryPolicy;
+ 
+ public class RepositoryFactory extends BeanFactory {
+     public RepositoryFactory(Class klass) {
+@@ -32,20 +34,21 @@ public class RepositoryFactory extends BeanFactory {
+     }
+ 
+     public void setChild(FactoryBuilderSupport builder, Object parent, Object child) {
++        getRepository(parent).setId(UUID.randomUUID().toString());
+         if (child instanceof Authentication) {
+             getRepository(parent).addAuthentication((Authentication) child);
+         } else if (child instanceof Proxy) {
+             getRepository(parent).addProxy((Proxy) child);
+-        } else if (child instanceof RepositoryPolicy) {
++        } else if (child instanceof RemoteRepository.Policy) {
+             if (builder.getCurrentName().equals("snapshots")) {
+-                getRepository(parent).addSnapshots((RepositoryPolicy) child);
++                getRepository(parent).addSnapshots((RemoteRepository.Policy) child);
+             } else {
+-                getRepository(parent).addReleases((RepositoryPolicy) child);
++                getRepository(parent).addReleases((RemoteRepository.Policy) child);
+             }
+         }
+     }
+ 
+-    private RemoteRepository getRepository(Object parent) {
+-        return (RemoteRepository) parent;
++    private CustomRemoteRepository getRepository(Object parent) {
++        return (CustomRemoteRepository) parent;
+     }
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java
+index 55c6324..4bf3736 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AbstractAntTaskBackedMavenPublisher.java
+@@ -16,9 +16,10 @@
+ 
+ package org.gradle.api.publish.maven.internal.publisher;
+ 
+-import org.apache.maven.artifact.ant.AttachedArtifact;
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
+-import org.apache.maven.artifact.ant.Pom;
++import org.apache.tools.ant.Project;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
++import org.eclipse.aether.internal.ant.types.Artifact;
++import org.eclipse.aether.internal.ant.types.Pom;
+ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
+ import org.gradle.api.logging.LogLevel;
+ import org.gradle.api.publication.maven.internal.ant.EmptyMavenSettingsSupplier;
+@@ -33,7 +34,7 @@ import org.slf4j.LoggerFactory;
+ 
+ import java.io.File;
+ 
+-abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeployTaskSupport> implements MavenPublisher {
++abstract public class AbstractAntTaskBackedMavenPublisher<T extends AbstractDistTask> implements MavenPublisher {
+     private final Factory<LoggingManagerInternal> loggingManagerFactory;
+ 
+     private static Logger logger = LoggerFactory.getLogger(AbstractAntTaskBackedMavenPublisher.class);
+@@ -46,11 +47,12 @@ abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeplo
+ 
+     public void publish(MavenNormalizedPublication publication, MavenArtifactRepository artifactRepository) {
+         logger.info("Publishing to repository {}", artifactRepository);
++        Project project = AntUtil.createProject();
+         T deployTask = createDeployTask();
+-        deployTask.setProject(AntUtil.createProject());
++        deployTask.setProject(project);
+ 
+         MavenSettingsSupplier mavenSettingsSupplier = new EmptyMavenSettingsSupplier();
+-        mavenSettingsSupplier.supply(deployTask);
++        mavenSettingsSupplier.supply(project);
+ 
+         postConfigure(deployTask, artifactRepository);
+         addPomAndArtifacts(deployTask, publication);
+@@ -63,27 +65,23 @@ abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeplo
+ 
+     abstract protected T createDeployTask();
+ 
+-    private void addPomAndArtifacts(InstallDeployTaskSupport installOrDeployTask, MavenNormalizedPublication publication) {
++    private void addPomAndArtifacts(AbstractDistTask task, MavenNormalizedPublication publication) {
+         Pom pom = new Pom();
+-        pom.setProject(installOrDeployTask.getProject());
++        pom.setProject(task.getProject());
+         pom.setFile(publication.getPomFile());
+-        installOrDeployTask.addPom(pom);
+-
+-        MavenArtifact mainArtifact = publication.getMainArtifact();
+-        installOrDeployTask.setFile(mainArtifact == null ? publication.getPomFile() : mainArtifact.getFile());
++        task.addPom(pom);
+ 
+         for (MavenArtifact mavenArtifact : publication.getArtifacts()) {
+-            if (mavenArtifact == mainArtifact) {
+-                continue;
+-            }
+-            AttachedArtifact attachedArtifact = installOrDeployTask.createAttach();
+-            attachedArtifact.setClassifier(GUtil.elvis(mavenArtifact.getClassifier(), ""));
+-            attachedArtifact.setType(GUtil.elvis(mavenArtifact.getExtension(), ""));
+-            attachedArtifact.setFile(mavenArtifact.getFile());
++            Artifact artifact = new Artifact();
++            artifact.setProject(task.getProject());
++            artifact.setClassifier(GUtil.elvis(mavenArtifact.getClassifier(), ""));
++            artifact.setType(GUtil.elvis(mavenArtifact.getExtension(), ""));
++            artifact.setFile(mavenArtifact.getFile());
++            task.addArtifact(artifact);
+         }
+     }
+ 
+-    private void execute(InstallDeployTaskSupport deployTask) {
++    private void execute(AbstractDistTask deployTask) {
+         LoggingManagerInternal loggingManager = loggingManagerFactory.create();
+         loggingManager.captureStandardOutput(LogLevel.INFO).start();
+         try {
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java
+index 2be6c47..645444a 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenLocalPublisher.java
+@@ -16,49 +16,30 @@
+ 
+ package org.gradle.api.publish.maven.internal.publisher;
+ 
+-import org.apache.maven.artifact.ant.RemoteRepository;
+-import org.apache.maven.artifact.repository.ArtifactRepository;
+-import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
++import org.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.tasks.Install;
++import org.eclipse.aether.internal.ant.types.LocalRepository;
+ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
+-import org.gradle.api.publication.maven.internal.ant.CustomInstallTask;
+ import org.gradle.internal.Factory;
+ import org.gradle.logging.LoggingManagerInternal;
+ 
+ import java.io.File;
+ 
+-public class AntTaskBackedMavenLocalPublisher extends AbstractAntTaskBackedMavenPublisher<AntTaskBackedMavenLocalPublisher.MavenLocalInstallTask> {
++public class AntTaskBackedMavenLocalPublisher extends AbstractAntTaskBackedMavenPublisher<Install> {
+     public AntTaskBackedMavenLocalPublisher(Factory<LoggingManagerInternal> loggingManagerFactory, Factory<File> temporaryDirFactory) {
+         super(loggingManagerFactory, temporaryDirFactory);
+     }
+ 
+     @Override
+-    protected void postConfigure(MavenLocalInstallTask task, MavenArtifactRepository artifactRepository) {
+-        task.setRepoLocation(artifactRepository.getUrl().toString());
++    protected void postConfigure(Install task, MavenArtifactRepository artifactRepository) {
++        LocalRepository localRepository = new LocalRepository(task);
++        localRepository.setDir(new File(artifactRepository.getUrl().getPath()));
++        AntRepoSys repoSys = AntRepoSys.getInstance(task.getProject());
++        repoSys.setLocalRepository(localRepository);
+     }
+ 
+     @Override
+-    protected MavenLocalInstallTask createDeployTask() {
+-        return new MavenLocalInstallTask();
+-    }
+-
+-    public static class MavenLocalInstallTask extends CustomInstallTask {
+-
+-        private String repoLocation;
+-
+-        private void setRepoLocation(String repoLocation) {
+-            this.repoLocation = repoLocation;
+-        }
+-
+-        @Override
+-        protected ArtifactRepository createLocalArtifactRepository() {
+-            ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) lookup(ArtifactRepositoryLayout.ROLE, getLocalRepository().getLayout());
+-            return new DefaultArtifactRepository("local", repoLocation, repositoryLayout);
+-        }
+-
+-        @Override
+-        protected void updateRepositoryWithSettings(RemoteRepository repository) {
+-            // Do nothing
+-        }
++    protected Install createDeployTask() {
++        return new Install();
+     }
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java
+index a22dbf4..4d5492d 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/AntTaskBackedMavenPublisher.java
+@@ -16,53 +16,36 @@
+ 
+ package org.gradle.api.publish.maven.internal.publisher;
+ 
+-import org.apache.maven.artifact.ant.RemoteRepository;
+-import org.apache.maven.artifact.repository.ArtifactRepository;
+-import org.apache.maven.artifact.repository.DefaultArtifactRepository;
+-import org.apache.maven.artifact.repository.layout.ArtifactRepositoryLayout;
++import org.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.tasks.Deploy;
++import org.eclipse.aether.internal.ant.types.LocalRepository;
++import org.eclipse.aether.internal.ant.types.RemoteRepository;
+ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
+-import org.gradle.api.publication.maven.internal.ant.CustomDeployTask;
+ import org.gradle.internal.Factory;
+ import org.gradle.logging.LoggingManagerInternal;
+ 
+ import java.io.File;
+ 
+-public class AntTaskBackedMavenPublisher extends AbstractAntTaskBackedMavenPublisher<CustomDeployTask> {
++public class AntTaskBackedMavenPublisher extends AbstractAntTaskBackedMavenPublisher<Deploy> {
+     public AntTaskBackedMavenPublisher(Factory<LoggingManagerInternal> loggingManagerFactory, Factory<File> temporaryDirFactory) {
+         super(loggingManagerFactory, temporaryDirFactory);
+     }
+ 
+-    protected void postConfigure(CustomDeployTask task, MavenArtifactRepository artifactRepository) {
++    protected void postConfigure(Deploy task, MavenArtifactRepository artifactRepository) {
+         addRepository(task, artifactRepository);
+     }
+ 
+-    protected CustomDeployTask createDeployTask() {
+-        CustomDeployTask deployTask = new DeployTask(temporaryDirFactory);
+-        deployTask.setUniqueVersion(true);
+-        return deployTask;
++    protected Deploy createDeployTask() {
++        Deploy task = new Deploy();
++        LocalRepository localRepository = new LocalRepository(task);
++        localRepository.setDir(temporaryDirFactory.create());
++        AntRepoSys repoSys = AntRepoSys.getInstance(task.getProject());
++        repoSys.setLocalRepository(localRepository);
++        return task;
+     }
+ 
+-    private void addRepository(CustomDeployTask deployTask, MavenArtifactRepository artifactRepository) {
++    private void addRepository(Deploy deployTask, MavenArtifactRepository artifactRepository) {
+         RemoteRepository mavenRepository = new MavenRemoteRepositoryFactory(artifactRepository).create();
+-        deployTask.addRemoteRepository(mavenRepository);
+-    }
+-
+-    private static class DeployTask extends CustomDeployTask {
+-        private final Factory<File> tmpDirFactory;
+-
+-        public DeployTask(Factory<File> tmpDirFactory) {
+-            this.tmpDirFactory = tmpDirFactory;
+-        }
+-
+-        @Override
+-        protected ArtifactRepository createLocalArtifactRepository() {
+-            ArtifactRepositoryLayout repositoryLayout = (ArtifactRepositoryLayout) lookup(ArtifactRepositoryLayout.ROLE, getLocalRepository().getLayout());
+-            return new DefaultArtifactRepository("local", tmpDirFactory.create().toURI().toString(), repositoryLayout);
+-        }
+-
+-        @Override
+-        protected void updateRepositoryWithSettings(RemoteRepository repository) {
+-            // Do nothing
+-        }
++        deployTask.addRemoteRepo(mavenRepository);
+     }
+ }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java
+index 1f07241..dda7efa 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/MavenRemoteRepositoryFactory.java
+@@ -16,8 +16,8 @@
+ 
+ package org.gradle.api.publish.maven.internal.publisher;
+ 
+-import org.apache.maven.artifact.ant.Authentication;
+-import org.apache.maven.artifact.ant.RemoteRepository;
++import org.eclipse.aether.internal.ant.types.Authentication;
++import org.eclipse.aether.internal.ant.types.RemoteRepository;
+ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
+ import org.gradle.api.artifacts.repositories.PasswordCredentials;
+ import org.gradle.internal.Factory;
+@@ -40,7 +40,7 @@ class MavenRemoteRepositoryFactory implements Factory<RemoteRepository> {
+ 
+         if (username != null || password != null) {
+             Authentication authentication = new Authentication();
+-            authentication.setUserName(username);
++            authentication.setUsername(username);
+             authentication.setPassword(password);
+             remoteRepository.addAuthentication(authentication);
+         }
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java
+index 36a60c5..636b6aa 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/publisher/ValidatingMavenPublisher.java
+@@ -22,9 +22,9 @@ import org.gradle.api.artifacts.repositories.MavenArtifactRepository;
+ import org.gradle.api.publish.internal.PublicationFieldValidator;
+ import org.gradle.api.publish.maven.InvalidMavenPublicationException;
+ import org.gradle.api.publish.maven.MavenArtifact;
+-import org.gradle.mvn3.org.apache.maven.model.Model;
+-import org.gradle.mvn3.org.apache.maven.model.io.xpp3.MavenXpp3Reader;
+-import org.gradle.mvn3.org.codehaus.plexus.util.xml.pull.XmlPullParserException;
++import org.apache.maven.model.Model;
++import org.apache.maven.model.io.xpp3.MavenXpp3Reader;
++import org.codehaus.plexus.util.xml.pull.XmlPullParserException;
+ 
+ import java.io.File;
+ import java.io.FileReader;
+-- 
+2.1.0
+
diff --git a/0007-Remove-Class-Path-from-manifest.patch b/0007-Remove-Class-Path-from-manifest.patch
index 2db016a..299b61b 100644
--- a/0007-Remove-Class-Path-from-manifest.patch
+++ b/0007-Remove-Class-Path-from-manifest.patch
@@ -1,4 +1,4 @@
-From b885097fd9a3d755c6a105da73e3e77184df2cb9 Mon Sep 17 00:00:00 2001
+From b72aa17cf0bbaa00183162176fca2b9f8639dde0 Mon Sep 17 00:00:00 2001
 From: Mikolaj Izdebski <mizdebsk at redhat.com>
 Date: Sun, 9 Nov 2014 17:52:30 +0100
 Subject: [PATCH 07/14] Remove Class-Path from manifest
diff --git a/0008-Implement-XMvn-repository-factory-method.patch b/0008-Implement-XMvn-repository-factory-method.patch
index 1e02410..b8cf5bc 100644
--- a/0008-Implement-XMvn-repository-factory-method.patch
+++ b/0008-Implement-XMvn-repository-factory-method.patch
@@ -1,4 +1,4 @@
-From 8fb498a5b9b68e670f08bf2ac5d2a40120120fae Mon Sep 17 00:00:00 2001
+From 7185d3f0d1617afa0125c85ef44a78e3ab832a08 Mon Sep 17 00:00:00 2001
 From: Mikolaj Izdebski <mizdebsk at redhat.com>
 Date: Sun, 9 Nov 2014 21:37:37 +0100
 Subject: [PATCH 08/14] Implement XMvn repository factory method
diff --git a/0009-Use-hostname-command-as-fallback-way-of-getting-buil.patch b/0009-Use-hostname-command-as-fallback-way-of-getting-buil.patch
index a37a764..3166eb2 100644
--- a/0009-Use-hostname-command-as-fallback-way-of-getting-buil.patch
+++ b/0009-Use-hostname-command-as-fallback-way-of-getting-buil.patch
@@ -1,4 +1,4 @@
-From 94cf7b9b3bd68047da09d999c7677c49d01c1192 Mon Sep 17 00:00:00 2001
+From df7b9f6a8b77168de72f9643f486de79ace9f356 Mon Sep 17 00:00:00 2001
 From: Mikolaj Izdebski <mizdebsk at redhat.com>
 Date: Thu, 20 Nov 2014 11:04:23 +0100
 Subject: [PATCH 09/14] Use hostname command as fallback way of getting build
diff --git a/0010-Compatibility-with-Guava-18.0.patch b/0010-Compatibility-with-Guava-18.0.patch
index 8ab99a4..1284040 100644
--- a/0010-Compatibility-with-Guava-18.0.patch
+++ b/0010-Compatibility-with-Guava-18.0.patch
@@ -1,4 +1,4 @@
-From 8efafeacff2de5613f967cb0472f0112cec09826 Mon Sep 17 00:00:00 2001
+From bb7fb45da9e908b1a1a7dac4ec3dd8ad7d430ce6 Mon Sep 17 00:00:00 2001
 From: Mikolaj Izdebski <mizdebsk at redhat.com>
 Date: Tue, 20 Jan 2015 11:59:22 +0100
 Subject: [PATCH 10/14] Compatibility with Guava 18.0
diff --git a/0011-Add-build-dependency-on-ASM-5.0.3.patch b/0011-Add-build-dependency-on-ASM-5.0.3.patch
index a670d28..ecf986f 100644
--- a/0011-Add-build-dependency-on-ASM-5.0.3.patch
+++ b/0011-Add-build-dependency-on-ASM-5.0.3.patch
@@ -1,4 +1,4 @@
-From 01cb9e4aa5439b50f5fd3da01ca143a3b6a0b828 Mon Sep 17 00:00:00 2001
+From 3fc163543954342052c5d1ae26735b708ee36df9 Mon Sep 17 00:00:00 2001
 From: Mikolaj Izdebski <mizdebsk at redhat.com>
 Date: Tue, 20 Jan 2015 12:30:09 +0100
 Subject: [PATCH 11/14] Add build dependency on ASM 5.0.3
diff --git a/0012-Port-from-Simple-4-to-Jetty-9.patch b/0012-Port-from-Simple-4-to-Jetty-9.patch
index c3a62f5..1875373 100644
--- a/0012-Port-from-Simple-4-to-Jetty-9.patch
+++ b/0012-Port-from-Simple-4-to-Jetty-9.patch
@@ -1,4 +1,4 @@
-From 4377774a692e14d8b3bc8c6375c45e68d25fed23 Mon Sep 17 00:00:00 2001
+From 0f832b0bd6306d69882bb955c75f7662ce87184f Mon Sep 17 00:00:00 2001
 From: Mikolaj Izdebski <mizdebsk at redhat.com>
 Date: Fri, 30 Jan 2015 13:16:40 +0100
 Subject: [PATCH 12/14] Port from Simple 4 to Jetty 9
diff --git a/0013-Use-unversioned-dependency-JAR-names.patch b/0013-Use-unversioned-dependency-JAR-names.patch
index a8e03e5..7063f76 100644
--- a/0013-Use-unversioned-dependency-JAR-names.patch
+++ b/0013-Use-unversioned-dependency-JAR-names.patch
@@ -1,4 +1,4 @@
-From c1910e2dcbb3349f58b55670600415d5d033cb95 Mon Sep 17 00:00:00 2001
+From 17405a52f097c063bda4e4aef2522524987ac0c4 Mon Sep 17 00:00:00 2001
 From: Michael Simacek <msimacek at redhat.com>
 Date: Sat, 7 Feb 2015 15:28:03 +0100
 Subject: [PATCH 13/14] Use unversioned dependency JAR names
diff --git a/0014-Don-t-declare-dependency-on-jarjars.patch b/0014-Don-t-declare-dependency-on-jarjars.patch
index c99c716..c34144f 100644
--- a/0014-Don-t-declare-dependency-on-jarjars.patch
+++ b/0014-Don-t-declare-dependency-on-jarjars.patch
@@ -1,4 +1,4 @@
-From 72f8490fa4b1670aff5f1c68133b7f39dd81abed Mon Sep 17 00:00:00 2001
+From c978f91b03a3a916f4638e8a836fb77d7859fc8a Mon Sep 17 00:00:00 2001
 From: Michael Simacek <msimacek at redhat.com>
 Date: Sat, 7 Feb 2015 17:43:40 +0100
 Subject: [PATCH 14/14] Don't declare dependency on jarjars
diff --git a/gradle.spec b/gradle.spec
index e26334d..4bb107f 100644
--- a/gradle.spec
+++ b/gradle.spec
@@ -13,7 +13,7 @@
 
 Name:           gradle
 Version:        2.3
-Release:        1%{?dist}
+Release:        2%{?dist}
 Summary:        Build automation tool
 # Some examples and integration tests are under GNU LGPL and Boost
 # Software License, but are not used to create binary package.
@@ -46,7 +46,7 @@ Patch1:         0002-Use-Maven-Wagon-2.8.patch
 Patch2:         0003-Use-bndlib-1.50.0.patch
 Patch3:         0004-Port-to-Jetty-9.patch
 Patch4:         0005-Use-jansi-1.11.patch
-Patch5:         0006-Port-to-Maven-3.1.1-and-Aether-Ant-Tasks.patch
+Patch5:         0006-Port-to-Maven-3.3.1-and-Aether-Ant-Tasks.patch
 Patch6:         0007-Remove-Class-Path-from-manifest.patch
 Patch7:         0008-Implement-XMvn-repository-factory-method.patch
 # Accepted upstream: https://github.com/gradle/gradle/pull/354
@@ -546,6 +546,9 @@ gtk-update-icon-cache %{_datadir}/icons/hicolor &>/dev/null || :
 %doc LICENSE NOTICE
 
 %changelog
+* Wed Mar 25 2015 Mikolaj Izdebski <mizdebsk at redhat.com> - 2.3-2
+- Port to Maven 3.3.1
+
 * Wed Mar 25 2015 Mikolaj Izdebski <mizdebsk at redhat.com> - 2.3-1
 - Update to upstream version 2.3
 
-- 
cgit v0.10.2


	http://pkgs.fedoraproject.org/cgit/gradle.git/commit/?h=master&id=bed465f29c79935a5a18e490a4e10d6a9dda3007

--
You received this message due to your preference settings at
https://apps.fedoraproject.org/notifications//fmnscmcommits.id.fedoraproject.org/email/29390


More information about the scm-commits mailing list