[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