[gradle] Port to Aether Ant Tasks

Mikolaj Izdebski mizdebsk at fedoraproject.org
Tue Nov 18 20:12:22 UTC 2014


commit d3ab7ddd87482d85e0ddb45e30bddaf7ec75a7f5
Author: Mikolaj Izdebski <mizdebsk at redhat.com>
Date:   Fri Nov 7 13:49:31 2014 +0100

    Port to Aether Ant Tasks

 0007-Port-to-Aether-Ant-Tasks.patch     | 1025 +++++++++++++++++++++++++++++++
 0007-Use-unshaded-Maven-Ant-Tasks.patch |   88 ---
 gradle.spec                             |    9 +-
 3 files changed, 1031 insertions(+), 91 deletions(-)
---
diff --git a/0007-Port-to-Aether-Ant-Tasks.patch b/0007-Port-to-Aether-Ant-Tasks.patch
new file mode 100644
index 0000000..dc6ba81
--- /dev/null
+++ b/0007-Port-to-Aether-Ant-Tasks.patch
@@ -0,0 +1,1025 @@
+From 6ea2b0ea2523efeb74346b72c74e9cbb8e96f79c 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 7/7] Port to Aether Ant Tasks
+
+---
+ gradle/dependencies.gradle                         | 24 ++++++++++-
+ .../internal/artifacts/PlexusLoggerAdapter.java    |  8 ++++
+ .../groovy/org/gradle/api/plugins/MavenPlugin.java |  2 +-
+ .../maven/internal/CustomModelBuilder.java         |  3 +-
+ .../maven/internal/DefaultArtifactPom.java         |  3 +-
+ .../maven/internal/DefaultMavenPom.java            | 13 +++---
+ .../publication/maven/internal/ModelFactory.java   |  3 +-
+ .../maven/internal/ant/AbstractMavenResolver.java  | 35 +++++++++-------
+ .../maven/internal/ant/BaseMavenDeployer.java      | 32 +++++++-------
+ .../maven/internal/ant/BaseMavenInstaller.java     | 12 +++---
+ .../maven/internal/ant/CustomDeployTask.java       | 45 --------------------
+ .../ant/CustomInstallDeployTaskSupport.java        | 27 ------------
+ .../maven/internal/ant/CustomInstallTask.java      | 38 -----------------
+ .../internal/ant/EmptyMavenSettingsSupplier.java   |  9 ++--
+ .../maven/internal/ant/LoggingHelper.java          | 43 -------------------
+ .../maven/internal/ant/MavenSettingsSupplier.java  |  5 ++-
+ .../ant/MaybeUserMavenSettingsSupplier.java        |  9 ++--
+ .../ProjectDependencyArtifactIdExtractorHack.java  |  3 +-
+ .../maven/internal/ant/RepositoryBuilder.java      | 12 +++---
+ .../maven/internal/ant/RepositoryFactory.java      | 16 +++----
+ .../AbstractAntTaskBackedMavenPublisher.java       | 45 ++++++--------------
+ .../AntTaskBackedMavenLocalPublisher.java          | 41 +++++-------------
+ .../publisher/AntTaskBackedMavenPublisher.java     | 49 ++++++++--------------
+ .../publisher/MavenRemoteRepositoryFactory.java    |  6 +--
+ .../internal/tasks/MavenPomFileGenerator.java      |  8 ++--
+ 25 files changed, 167 insertions(+), 324 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
+ 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 b26d217..15d035e 100755
+--- a/gradle/dependencies.gradle
++++ b/gradle/dependencies.gradle
+@@ -72,8 +72,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.0.4 at jar"
++    dependency "org.apache.maven:maven-model:3.0.4 at jar"
++    dependency "org.apache.maven:maven-model-builder:3.0.4 at jar"
++    dependency "org.apache.maven:maven-repository-metadata:3.0.4 at jar"
++    dependency "org.codehaus.plexus:plexus-utils:2.1 at jar"
++    dependency "org.apache.maven:maven-settings-builder:3.0.4 at jar"
++    dependency "org.apache.maven:maven-settings:3.0.4 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 += [
+diff --git a/subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java b/subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
+index e02ab3b..5f213bd 100644
+--- a/subprojects/core-impl/src/main/groovy/org/gradle/api/internal/artifacts/PlexusLoggerAdapter.java
++++ b/subprojects/core-impl/src/main/groovy/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/maven/src/main/groovy/org/gradle/api/plugins/MavenPlugin.java b/subprojects/maven/src/main/groovy/org/gradle/api/plugins/MavenPlugin.java
+index eaa9fef..db3a9f0 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/plugins/MavenPlugin.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/plugins/MavenPlugin.java
+@@ -15,7 +15,6 @@
+  */
+ package org.gradle.api.plugins;
+ 
+-import org.apache.maven.project.MavenProject;
+ import org.gradle.api.Action;
+ import org.gradle.api.Plugin;
+ import org.gradle.api.Project;
+@@ -44,6 +43,7 @@ import org.gradle.api.tasks.Upload;
+ import org.gradle.configuration.project.ProjectConfigurationActionContainer;
+ import org.gradle.internal.Factory;
+ import org.gradle.logging.LoggingManagerInternal;
++import org.gradle.mvn3.org.apache.maven.project.MavenProject;
+ 
+ import javax.inject.Inject;
+ 
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/CustomModelBuilder.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/CustomModelBuilder.java
+index 395033a..aa45c21 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/CustomModelBuilder.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/CustomModelBuilder.java
+@@ -16,9 +16,10 @@
+ package org.gradle.api.publication.maven.internal;
+ 
+ import groovy.util.FactoryBuilderSupport;
+-import org.apache.maven.model.Model;
++
+ import org.codehaus.plexus.personality.plexus.lifecycle.phase.InitializationException;
+ import org.gradle.api.internal.artifacts.PlexusLoggerAdapter;
++import org.gradle.mvn3.org.apache.maven.model.Model;
+ import org.slf4j.LoggerFactory;
+ import org.sonatype.maven.polyglot.execute.ExecuteManager;
+ import org.sonatype.maven.polyglot.execute.ExecuteManagerImpl;
+diff --git a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultArtifactPom.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultArtifactPom.java
+index ed8a307..98f18b6 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultArtifactPom.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/DefaultArtifactPom.java
+@@ -16,13 +16,14 @@
+ package org.gradle.api.publication.maven.internal;
+ 
+ import com.google.common.collect.Sets;
++
+ import org.apache.commons.lang.ObjectUtils;
+ import org.apache.ivy.core.module.descriptor.Artifact;
+-import org.apache.maven.project.MavenProject;
+ import org.gradle.api.InvalidUserDataException;
+ import org.gradle.api.artifacts.PublishArtifact;
+ import org.gradle.api.artifacts.maven.MavenPom;
+ import org.gradle.api.internal.artifacts.publish.AbstractPublishArtifact;
++import org.gradle.mvn3.org.apache.maven.project.MavenProject;
+ 
+ import java.io.File;
+ import java.util.*;
+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 dea4fd9..6097260 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
+@@ -16,9 +16,7 @@
+ package org.gradle.api.publication.maven.internal;
+ 
+ import groovy.lang.Closure;
+-import org.apache.maven.model.Dependency;
+-import org.apache.maven.model.Model;
+-import org.apache.maven.project.MavenProject;
++
+ import org.codehaus.groovy.runtime.InvokerHelper;
+ import org.gradle.api.Action;
+ import org.gradle.api.UncheckedIOException;
+@@ -32,6 +30,9 @@ import org.gradle.internal.IoActions;
+ import org.gradle.api.internal.file.FileResolver;
+ import org.gradle.api.internal.xml.XmlTransformer;
+ import org.gradle.listener.ActionBroadcast;
++import org.gradle.mvn3.org.apache.maven.model.Dependency;
++import org.gradle.mvn3.org.apache.maven.model.Model;
++import org.gradle.mvn3.org.apache.maven.project.MavenProject;
+ 
+ import java.io.BufferedWriter;
+ import java.io.IOException;
+@@ -160,11 +161,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/ModelFactory.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ModelFactory.java
+index 06d6fed..d67d441 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ModelFactory.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ModelFactory.java
+@@ -16,7 +16,8 @@
+ package org.gradle.api.publication.maven.internal;
+ 
+ import groovy.util.FactoryBuilderSupport;
+-import org.apache.maven.model.Model;
++
++import org.gradle.mvn3.org.apache.maven.model.Model;
+ import org.sonatype.maven.polyglot.groovy.builder.factory.NamedFactory;
+ 
+ import java.util.Map;
+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 8daf017..98b4ccf 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,12 @@
+ 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.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.*;
+@@ -71,7 +71,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(ModuleVersionPublishMetaData moduleVersion) {
+         for (ModuleVersionArtifactPublishMetaData artifact : moduleVersion.getArtifacts()) {
+@@ -80,32 +80,32 @@ 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());
++        AbstractDistTask installDeployTaskSupport = createPreConfiguredTask(AntUtil.createProject());
+         Set<MavenDeployment> mavenDeployments = getArtifactPomContainer().createDeployableFilesInfos();
+         mavenSettingsSupplier.supply(installDeployTaskSupport);
+         for (MavenDeployment mavenDeployment : mavenDeployments) {
+-            ((CustomInstallDeployTaskSupport) installDeployTaskSupport).clearAttachedArtifactsList();
+             beforeDeploymentActions.execute(mavenDeployment);
+             addPomAndArtifact(installDeployTaskSupport, mavenDeployment);
+             execute(installDeployTaskSupport);
+         }
+         mavenSettingsSupplier.done();
+-        settings = ((CustomInstallDeployTaskSupport) installDeployTaskSupport).getSettings();
++        // FIXME obtain settings used
++        settings = null;
+     }
+ 
+-    private void execute(InstallDeployTaskSupport deployTask) {
++    private void execute(AbstractDistTask deployTask) {
+         loggingManager.captureStandardOutput(LogLevel.INFO).start();
+         try {
+             deployTask.execute();
+@@ -114,19 +114,26 @@ public abstract class AbstractMavenResolver extends AbstractArtifactRepository i
+         }
+     }
+ 
+-    private void addPomAndArtifact(InstallDeployTaskSupport installOrDeployTask, MavenDeployment mavenDeployment) {
++    private void addPomAndArtifact(AbstractDistTask installOrDeployTask, MavenDeployment mavenDeployment) {
+         Pom pom = new Pom();
+         pom.setProject(installOrDeployTask.getProject());
+         pom.setFile(mavenDeployment.getPomArtifact().getFile());
+         installOrDeployTask.addPom(pom);
+         if (mavenDeployment.getMainArtifact() != null) {
+-            installOrDeployTask.setFile(mavenDeployment.getMainArtifact().getFile());
++            Artifact artifact=new Artifact();
++            artifact.setProject( installOrDeployTask.getProject() );
++            artifact.addPom( pom );
++            artifact.setFile(mavenDeployment.getMainArtifact().getFile());
++            installOrDeployTask.addArtifact( artifact );
+         }
+         for (PublishArtifact classifierArtifact : mavenDeployment.getAttachedArtifacts()) {
+-            AttachedArtifact attachedArtifact = installOrDeployTask.createAttach();
++            Artifact attachedArtifact = new Artifact();
++            attachedArtifact.setProject( installOrDeployTask.getProject() );
++            attachedArtifact.addPom( pom );
+             attachedArtifact.setClassifier(classifierArtifact.getClassifier());
+             attachedArtifact.setFile(classifierArtifact.getFile());
+             attachedArtifact.setType(classifierArtifact.getType());
++            installOrDeployTask.addArtifact( attachedArtifact );
+         }
+     }
+ 
+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..2f2c530 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
+@@ -15,12 +15,12 @@
+  */
+ 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.PlexusContainer;
+ import org.codehaus.plexus.PlexusContainerException;
++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.gradle.api.artifacts.Configuration;
+ import org.gradle.api.artifacts.maven.MavenDeployer;
+ import org.gradle.api.artifacts.maven.PomFilterContainer;
+@@ -48,37 +48,41 @@ public class BaseMavenDeployer extends AbstractMavenResolver implements MavenDep
+         super(pomFilterContainer, artifactPomContainer, loggingManager);
+     }
+ 
+-    protected InstallDeployTaskSupport createPreConfiguredTask(Project project) {
+-        CustomDeployTask deployTask = createTask();
++    protected AbstractDistTask createPreConfiguredTask(Project project) {
++        Deploy deployTask = createTask();
+         deployTask.setProject(project);
+-        deployTask.setUniqueVersion(isUniqueVersion());
++        // XXX
++        //deployTask.setUniqueVersion(isUniqueVersion());
+         addProtocolProvider(deployTask);
+         addRemoteRepositories(deployTask);
+         return deployTask;
+     }
+ 
+-    protected CustomDeployTask createTask() {
+-        return new CustomDeployTask();
++    protected Deploy createTask() {
++        return new Deploy();
+     }
+ 
+-    private void addProtocolProvider(CustomDeployTask deployTask) {
++    private void addProtocolProvider(Deploy deployTask) {
++        //XXX
++        /*
+         PlexusContainer plexusContainer = deployTask.getContainer();
+         for (File wagonProviderJar : getJars()) {
+             try {
+-                plexusContainer.addJarResource(wagonProviderJar);
+-            } catch (PlexusContainerException e) {
++                plexusContainer.getLookupRealm().addURL(wagonProviderJar.toURI().toURL());
++            } catch (java.net.MalformedURLException e) {
+                 throw new RuntimeException(e);
+             }
+         }
++        */
+     }
+ 
+     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) {
++        deployTask.addRemoteRepo(remoteRepository);
++        deployTask.addSnapshotRepo(remoteSnapshotRepository);
+     }
+ 
+     public RemoteRepository getRepository() {
+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/EmptyMavenSettingsSupplier.java b/subprojects/maven/src/main/groovy/org/gradle/api/publication/maven/internal/ant/EmptyMavenSettingsSupplier.java
+index 5549dcb..f7a187f 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.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
+ 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(AbstractDistTask installDeployTaskSupport) {
+         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( installDeployTaskSupport.getProject() );
++        repoSys.setGlobalSettings( settingsXml );
++        repoSys.setUserSettings( settingsXml );
+     }
+ 
+     public void done() {
+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..7c02249 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,10 @@
+ 
+ package org.gradle.api.publication.maven.internal.ant;
+ 
+-import org.apache.maven.artifact.ant.InstallDeployTaskSupport;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
++
+ 
+ public interface MavenSettingsSupplier {
+     void done();
+-    void supply(InstallDeployTaskSupport installDeployTaskSupport);
++    void supply(AbstractDistTask installDeployTaskSupport);
+ }
+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..ae1cefa 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.eclipse.aether.internal.ant.AntRepoSys;
++import org.eclipse.aether.internal.ant.tasks.AbstractDistTask;
+ import org.gradle.api.internal.artifacts.mvnsettings.DefaultMavenFileLocations;
+ import org.gradle.api.internal.artifacts.mvnsettings.MavenFileLocations;
+ 
+@@ -27,10 +28,12 @@ public class MaybeUserMavenSettingsSupplier implements MavenSettingsSupplier {
+     MavenSettingsSupplier emptySettingsSupplier = new EmptyMavenSettingsSupplier();
+     MavenFileLocations mavenFileLocations = new DefaultMavenFileLocations();
+ 
+-    public void supply(InstallDeployTaskSupport installDeployTaskSupport) {
++    public void supply(AbstractDistTask installDeployTaskSupport) {
+         File userSettings = mavenFileLocations.getUserSettingsFile();
+         if (userSettings.exists()) {
+-            installDeployTaskSupport.setSettingsFile(userSettings);
++            AntRepoSys repoSys=AntRepoSys.getInstance( installDeployTaskSupport.getProject() );
++            repoSys.setGlobalSettings( userSettings );
++            repoSys.setUserSettings( userSettings );
+             return;
+         }
+ 
+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..9531fed 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.gradle.mvn3.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..c22ec0c 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,18 @@
+  */
+ 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("proxy", Proxy.class);
+-        registerBeanFactory("snapshots", RepositoryPolicy.class);
+-        registerBeanFactory("releases", RepositoryPolicy.class);
++        registerBeanFactory("snapshots", RemoteRepository.Policy.class);
++        registerBeanFactory("releases", RemoteRepository.Policy.class);
+     }
+ }
+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..2089be6 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,11 @@
+  */
+ package org.gradle.api.publication.maven.internal.ant;
+ 
++import org.eclipse.aether.internal.ant.types.Authentication;
++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) {
+@@ -34,13 +33,16 @@ public class RepositoryFactory extends BeanFactory {
+     public void setChild(FactoryBuilderSupport builder, Object parent, Object child) {
+         if (child instanceof Authentication) {
+             getRepository(parent).addAuthentication((Authentication) child);
++        // XXX
++        /*
+         } 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);
+             }
+         }
+     }
+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 6930e63..01c12ba 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,9 @@
+ 
+ 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.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;
+@@ -37,7 +37,7 @@ import org.slf4j.LoggerFactory;
+ import java.io.File;
+ import java.util.Set;
+ 
+-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);
+@@ -67,43 +67,24 @@ abstract public class AbstractAntTaskBackedMavenPublisher<T extends InstallDeplo
+ 
+     abstract protected T createDeployTask();
+ 
+-    private void addPomAndArtifacts(InstallDeployTaskSupport installOrDeployTask, MavenNormalizedPublication publication) {
++    private void addPomAndArtifacts(AbstractDistTask installOrDeployTask, MavenNormalizedPublication publication) {
+         Pom pom = new Pom();
+         pom.setProject(installOrDeployTask.getProject());
+         pom.setFile(publication.getPomFile());
+         installOrDeployTask.addPom(pom);
+ 
+-        MavenArtifact mainArtifact = determineMainArtifact(publication.getName(), publication.getArtifacts());
+-        installOrDeployTask.setFile(mainArtifact == null ? publication.getPomFile() : mainArtifact.getFile());
+-
+         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());
+-        }
+-    }
+-
+-    private MavenArtifact determineMainArtifact(String publicationName, Set<MavenArtifact> mavenArtifacts) {
+-        Set<MavenArtifact> candidateMainArtifacts = CollectionUtils.filter(mavenArtifacts, new Spec<MavenArtifact>() {
+-            public boolean isSatisfiedBy(MavenArtifact element) {
+-                return element.getClassifier() == null || element.getClassifier().length() == 0;
+-            }
+-        });
+-        if (candidateMainArtifacts.isEmpty()) {
+-            return null;
+-        }
+-        if (candidateMainArtifacts.size() > 1) {
+-            throw new InvalidMavenPublicationException(publicationName, "Cannot determine main artifact - multiple artifacts found with empty classifier.");
++            Artifact artifact=new Artifact();
++            artifact.setProject( installOrDeployTask.getProject() );
++            artifact.addPom( pom );
++            artifact.setClassifier(GUtil.elvis(mavenArtifact.getClassifier(), ""));
++            artifact.setType(GUtil.elvis(mavenArtifact.getExtension(), ""));
++            artifact.setFile(mavenArtifact.getFile());
++            installOrDeployTask.addArtifact( artifact );
+         }
+-        return candidateMainArtifacts.iterator().next();
+     }
+ 
+-
+-    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..52ef0df 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..b31c99a 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,38 @@
+ 
+ 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 );
++        //XXX
++        //deployTask.setUniqueVersion(true);
++        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/tasks/MavenPomFileGenerator.java b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/tasks/MavenPomFileGenerator.java
+index ed1ea3b..90ce1a6 100644
+--- a/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/tasks/MavenPomFileGenerator.java
++++ b/subprojects/maven/src/main/groovy/org/gradle/api/publish/maven/internal/tasks/MavenPomFileGenerator.java
+@@ -16,10 +16,6 @@
+ 
+ package org.gradle.api.publish.maven.internal.tasks;
+ 
+-import org.apache.maven.model.Dependency;
+-import org.apache.maven.model.Exclusion;
+-import org.apache.maven.model.Model;
+-import org.apache.maven.project.MavenProject;
+ import org.gradle.api.Action;
+ import org.gradle.api.UncheckedIOException;
+ import org.gradle.api.XmlProvider;
+@@ -28,6 +24,10 @@ import org.gradle.api.artifacts.ExcludeRule;
+ import org.gradle.api.internal.xml.XmlTransformer;
+ import org.gradle.api.publish.maven.internal.dependencies.MavenDependencyInternal;
+ import org.gradle.api.publish.maven.internal.publisher.MavenProjectIdentity;
++import org.gradle.mvn3.org.apache.maven.model.Dependency;
++import org.gradle.mvn3.org.apache.maven.model.Exclusion;
++import org.gradle.mvn3.org.apache.maven.model.Model;
++import org.gradle.mvn3.org.apache.maven.project.MavenProject;
+ import org.gradle.util.GUtil;
+ 
+ import java.io.File;
+-- 
+1.9.3
+
diff --git a/gradle.spec b/gradle.spec
index 4d254f6..db6376f 100644
--- a/gradle.spec
+++ b/gradle.spec
@@ -4,7 +4,7 @@
 
 Name:           gradle
 Version:        2.1
-Release:        0.26%{?dist}
+Release:        0.27%{?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.
@@ -23,10 +23,11 @@ Patch2:         0003-Disable-analytics-plugin.patch
 Patch3:         0004-Use-Maven-Wagon-2.7.patch
 Patch4:         0005-Use-bndlib-1.50.0.patch
 Patch5:         0006-Port-to-Jetty-9.patch
-Patch6:         0007-Use-unshaded-Maven-Ant-Tasks.patch
+Patch6:         0007-Port-to-Aether-Ant-Tasks.patch
 
 BuildRequires:  gradle-local >= 2.1-0.7
 
+BuildRequires:  aether-ant-tasks >= 1:1.0.0-3
 BuildRequires:  android-json-org-java
 BuildRequires:  ant
 BuildRequires:  ant-antlr
@@ -102,7 +103,6 @@ BuildRequires:  littleproxy
 BuildRequires:  log4j-over-slf4j
 BuildRequires:  logback
 BuildRequires:  maven
-BuildRequires:  maven-ant-tasks
 BuildRequires:  maven-parent
 BuildRequires:  maven-wagon
 BuildRequires:  maven-wagon-http
@@ -217,6 +217,9 @@ jar cfm %{buildroot}%{_datadir}/%{name}/lib/plugins/gradle-core-impl-2.1*.jar ME
 %doc LICENSE NOTICE
 
 %changelog
+* Fri Nov  7 2014 Mikolaj Izdebski <mizdebsk at redhat.com> - 2.1-0.27
+- Port to Aether Ant Tasks
+
 * Tue Nov  4 2014 Mikolaj Izdebski <mizdebsk at redhat.com> - 2.1-0.26
 - Disable Zinc
 


More information about the scm-commits mailing list