diff --git a/mercury-ant/pom.xml b/mercury-ant/pom.xml
deleted file mode 100644
index eb35134..0000000
--- a/mercury-ant/pom.xml
+++ /dev/null
@@ -1,472 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-Licensed to the Apache Software Foundation (ASF) under one
-or more contributor license agreements.  See the NOTICE file
-distributed with this work for additional information
-regarding copyright ownership.  The ASF licenses this file
-to you under the Apache License, Version 2.0 (the
-"License"); you may not use this file except in compliance
-with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
-Unless required by applicable law or agreed to in writing,
-software distributed under the License is distributed on an
-"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-KIND, either express or implied.  See the License for the
-specific language governing permissions and limitations
-under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.maven</groupId>
-    <artifactId>maven-parent</artifactId>
-    <version>10</version>
-  </parent>
-
-  <groupId>org.apache.maven.mercury</groupId>
-  <artifactId>mercury-ant</artifactId>
-  <version>1.0-alpha-1-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Mercury Ant</name>
-  <description>Maven Mercury Ant is an ant-task wrapper for MErcry functionality: classpath creation, artifact deployment .</description>
-
-  <developers>
-  
-    <developer>
-      <id>ogusakov</id>
-      <name>Oleg Gusakov</name>
-      <roles>
-        <role>Committer</role>
-      </roles>
-    </developer>
-    
-    <developer>
-      <id>bentmann</id>
-      <name>Benjamin Bentmann</name>
-      <email>bentmann@apache.org</email>
-      <roles>
-        <role>Committer</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-    
-      <developer>
-      <id>hboutemy</id>
-      <name>Herve Boutemy</name>
-      <email>hboutemy@apache.org</email>
-      <roles>
-        <role>PMC Member</role>
-      </roles>
-      <timezone>+1</timezone>
-    </developer>
-
-  </developers>
-
-  <modules>
-    <module>mercury-ant-tasks</module>
-  </modules>
-
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/mercury/trunk/</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/mercury/trunk/</developerConnection>
-    <url>http://svn.apache.org/viewvc/maven/mercury/trunk/</url>
-  </scm>
-  <issueManagement>
-    <system>jira</system>
-    <url>http://jira.codehaus.org/browse/MERCURY</url>
-  </issueManagement>
-  <ciManagement>
-    <system>hudson</system>
-    <url>http://grid.sonatype.org/ci/view/Mercury/job/mercury</url>
-  </ciManagement>
-  <distributionManagement>
-
-    <repository>
-      <id>${distMgmtReleasesId}</id>
-      <name>${distMgmtReleasesName}</name>
-      <url>${distMgmtReleasesUrl}</url>
-    </repository>
-
-    <snapshotRepository>
-      <id>${distMgmtSnapshotsId}</id>
-      <name>${distMgmtSnapshotsName}</name>
-      <url>${distMgmtSnapshotsUrl}</url>
-    </snapshotRepository>
-
-    <site>
-      <id>${distMgmtSiteId}</id>
-      <name>${distMgmtSiteName}</name>
-      <url>${distMgmtSiteUrl}</url>
-    </site>
-
-  </distributionManagement>
-
-  <properties>
-    <ant.version>1.7.0</ant.version>
-    <antunit.version>1.1</antunit.version>
-    <mercury.version>1.0.0-alpha-3-SNAPSHOT</mercury.version>
-    <maven.version>3.0-SNAPSHOT</maven.version>
-
-    <junit.version>3.8.2</junit.version>
-    <jetty.version>6.1-SONATYPE-20090119</jetty.version>
-
-
-    <java.version>1.5</java.version>
-    
-    <distMgmtReleasesId>apache.releases</distMgmtReleasesId>
-    <distMgmtReleasesName>Apache Releases</distMgmtReleasesName>
-    <distMgmtReleasesUrl>scp://people.apache.org/www/people.apache.org/repo/m2-release-repository</distMgmtReleasesUrl>
-
-    <distMgmtSnapshotsId>apache.snapshots</distMgmtSnapshotsId>
-    <distMgmtSnapshotsName>Apache Snapshots</distMgmtSnapshotsName>
-    <distMgmtSnapshotsUrl>scp://people.apache.org/www/people.apache.org/repo/m2-snapshot-repository</distMgmtSnapshotsUrl>
-
-    <distMgmtSiteId>apache.snapshots</distMgmtSiteId>
-    <distMgmtSiteName>Apache Snapshots</distMgmtSiteName>
-    <distMgmtSiteUrl>scp://people.apache.org/home/ogusakov/public_html/sites/mercury-ant</distMgmtSiteUrl>
-
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-
-      <dependency>
-        <groupId>org.apache.ant</groupId>
-        <artifactId>ant</artifactId>
-        <version>${ant.version}</version>
-      </dependency>
-    
-      <!-- Mercury deps -->
-
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-artifact</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-      
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-external</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-      
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-repo-virtual</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-repo-local-m2</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-repo-local-map</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-      
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-repo-remote-m2</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-      
-       <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-md-sat</artifactId>
-        <version>${mercury.version}</version>
-      </dependency>
-  
-      <!-- Maven dependencies -->
-
-      <dependency>
-        <groupId>org.apache.maven</groupId>
-        <artifactId>maven-mercury</artifactId>
-        <version>${maven.version}</version>
-      </dependency>
-  
-      <!-- Test Dependencies -->
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>${junit.version}</version>
-        <scope>test</scope>
-      </dependency>
-      
-      <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jetty</artifactId>
-        <version>${jetty.version}</version>
-        <scope>test</scope>
-      </dependency>
-      
-      <dependency>
-        <groupId>org.apache.maven.mercury</groupId>
-        <artifactId>mercury-transport-http</artifactId>
-        <type>test-jar</type>
-        <version>${mercury.version}</version>
-        <scope>test</scope>
-      </dependency>
-
-      <dependency>
-        <groupId>org.apache.ant</groupId>
-        <artifactId>ant-launcher</artifactId>
-          <version>${ant.version}</version>
-          <scope>test</scope>
-      </dependency>
-      
-      <dependency>
-        <groupId>org.apache.ant</groupId>
-        <artifactId>ant-testutil</artifactId>
-        <version>${ant.version}</version>
-        <scope>test</scope>
-      </dependency>
-      
-    </dependencies>
-  </dependencyManagement>
-  
-  <dependencies>
-    <!-- Test Dependencies -->
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-    </dependency>
-    
-      <dependency>
-        <groupId>org.mortbay.jetty</groupId>
-        <artifactId>jetty</artifactId>
-        <version>${jetty.version}</version>
-        <scope>test</scope>
-      </dependency>
-      
-  </dependencies>
-
-  <build>
-    <defaultGoal>install</defaultGoal>
-    <resources>
-      <resource>
-        <directory>src/main/java</directory>
-        <filtering>false</filtering>
-        <includes>
-            <include>**/Messages.properties</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-        <filtering>false</filtering>
-      </resource>
-    </resources>
-
-    <testResources>
-      <testResource>
-        <directory>src/test/java</directory>
-        <filtering>false</filtering>
-        <includes>
-            <include>**/Messages.properties</include>
-        </includes>
-      </testResource>
-      <testResource>
-        <directory>src/test/resources</directory>
-        <filtering>false</filtering>
-      </testResource>
-    </testResources>
-
-    <plugins>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-jar-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>package-tests</id>
-            <goals>
-              <goal>test-jar</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-compiler-plugin</artifactId>
-        <configuration>
-          <source>${java.version}</source>
-          <target>${java.version}</target>
-        </configuration>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-site-plugin</artifactId>
-      </plugin>
-      <plugin>
-
-                   <artifactId>maven-enforcer-plugin</artifactId>
-                   <version>1.0-alpha-4</version>
-                   <executions>
-                       <execution>
-                           <goals>
-                               <goal>enforce</goal>
-                           </goals>
-                           <id>enforce</id>
-                           <configuration>
-                               <rules>
-                                   <bannedDependencies>
-                                       <excludes>
-                                           <exclude>*:plexus-component-api</exclude>
-                                       </excludes>
-                                       <message> plexus-component-api conflicts with newer plexus-container-default. You probably added a dependency
-                                           that is plexus component made
-                                           with older plexus container. </message>
-                                   </bannedDependencies>
-                                   <!--  <requirePluginVersions>
-                                       <banSnapshots>false</banSnapshots>
-                                       </requirePluginVersions>-->
-                               </rules>
-                               <fail>true</fail>
-                           </configuration>
-                       </execution>
-                   </executions>
-               </plugin>
-    </plugins>
-
-  </build>
-
-  <profiles>
-    <profile>
-      <id>mercury.install.all</id>
-      <activation>
-        <property>
-          <name>mercury.install.all</name>
-          <value>true</value>
-        </property>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-enforcer-plugin</artifactId>
-            <version>1.0-alpha-3</version>
-            <executions>
-              <execution>
-                <goals>
-                  <goal>enforce</goal>
-                </goals>
-                <configuration>
-                  <rules>
-                    <requireMavenVersion>
-                      <version>[2.0.9,)</version>
-                    </requireMavenVersion>
-                    <requireJavaVersion>
-                      <version>1.5.0</version>
-                    </requireJavaVersion>
-                  </rules>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.codehaus.mojo</groupId>
-            <artifactId>cobertura-maven-plugin</artifactId>
-            <version>2.0</version>
-            <executions>
-              <execution>
-                <id>clean</id>
-                <goals>
-                  <goal>clean</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <version>2.2</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-source-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>attach-sources</id>
-                <goals>
-                  <goal>jar</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>attach-javadocs</id>
-                <goals>
-                  <goal>jar</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-
-    <profile>
-      <id>reporting-aggregate</id>
-      <!-- To generate aggregate reports -->
-      <!-- To deploy both aggregate reports for top-level project and standalone reports for modules, call
-           mvn site -Preporting
-           mvn site:deploy
-           mvn site -Preporting-aggregate
-           mvn -N site:deploy
-      -->
-      <reporting>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-project-info-reports-plugin</artifactId>
-            <version>2.1</version>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-jxr-plugin</artifactId>
-            <version>2.1</version>
-            <configuration>
-              <aggregate>true</aggregate>
-            </configuration>
-          </plugin>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-javadoc-plugin</artifactId>
-            <version>2.5</version>
-            <configuration>
-              <links>
-                <link>http://java.sun.com/j2se/1.4.2/docs/api</link>
-                <link>http://java.sun.com/j2ee/1.4/docs/api</link>
-                <link>http://java.sun.com/j2se/1.5.0/docs/api</link>
-                <link>http://commons.apache.org/collections/apidocs-COLLECTIONS_3_0/</link>
-                <link>http://commons.apache.org/dbcp/apidocs/</link>
-                <link>http://commons.apache.org/fileupload/apidocs/</link>
-                <link>http://commons.apache.org/httpclient/apidocs/</link>
-                <link>http://commons.apache.org/logging/apidocs/</link>
-                <link>http://commons.apache.org/pool/apidocs/</link>
-                <link>http://junit.sourceforge.net/javadoc/</link>
-                <link>http://logging.apache.org/log4j/1.2/apidocs/</link>
-                <link>http://jakarta.apache.org/regexp/apidocs/</link>
-                <link>http://velocity.apache.org/engine/releases/velocity-1.5/apidocs/</link>
-              </links>
-              <aggregate>true</aggregate>
-            </configuration>
-          </plugin>
-        </plugins>
-      </reporting>
-    </profile>
-  </profiles>
-</project>
diff --git a/mercury-ant/src/licenses/apache.txt b/mercury-ant/src/licenses/apache.txt
deleted file mode 100644
index 03cebb9..0000000
--- a/mercury-ant/src/licenses/apache.txt
+++ /dev/null
@@ -1,17 +0,0 @@
- Licensed to the Apache Software Foundation (ASF) under one
- or more contributor license agreements.  See the NOTICE file
- distributed with this work for additional information
- regarding copyright ownership.  The ASF licenses this file
- to you under the Apache License, Version 2.0 (the
- "License"); you may not use this file except in compliance
- with the License.  You may obtain a copy of the License at
-
-  http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing,
- software distributed under the License is distributed on an
- "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
- KIND, either express or implied.  See the License for the
- specific language governing permissions and limitations
- under the License.
-
diff --git a/mercury-ant/src/site/site.xml b/mercury-ant/src/site/site.xml
deleted file mode 100644
index 95a945c..0000000
--- a/mercury-ant/src/site/site.xml
+++ /dev/null
@@ -1,45 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-
-     Licensed to the Apache Software Foundation (ASF) under one
-     or more contributor license agreements.  See the NOTICE file
-     distributed with this work for additional information
-     regarding copyright ownership.  The ASF licenses this file
-     to you under the Apache License, Version 2.0 (the
-     "License"); you may not use this file except in compliance
-     with the License.  You may obtain a copy of the License at
-    
-      http://www.apache.org/licenses/LICENSE-2.0
-    
-     Unless required by applicable law or agreed to in writing,
-     software distributed under the License is distributed on an
-     "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-     KIND, either express or implied.  See the License for the
-     specific language governing permissions and limitations
-     under the License.
-
--->
-<project>
-  <!-- TODO remove when using Maven Parent 11+ -->
-  <skin>
-    <groupId>org.apache.maven.skins</groupId>
-    <artifactId>maven-stylus-skin</artifactId>
-    <version>1.1</version>
-  </skin>
-
-  <body>
-    <breadcrumbs>
-      <!-- TODO: This breadcrumb should be removed when it has been solved in the parent -->
-      <item name="Maven" href="http://maven.apache.org/index.html" />
-      <item name="Mercury" href="http://maven.apache.org/mercury/index.html" />
-      <item name="Mercury Ant" href="http://maven.apache.org/mercury/mercury-ant/index.html" />
-    </breadcrumbs>
-
-    <menu name="Documentation">
-      <item name="Wiki" href="http://docs.codehaus.org/display/MAVEN/Mercury" />
-    </menu>
-
-    <menu ref="modules"/>
-
-  </body>
-</project>
diff --git a/mercury-ant/src/site/xdoc/index.xml b/mercury-ant/src/site/xdoc/index.xml
deleted file mode 100644
index 8cede89..0000000
--- a/mercury-ant/src/site/xdoc/index.xml
+++ /dev/null
@@ -1,39 +0,0 @@
-<?xml version="1.0"?>
-
-<!--
-/*
- * Licensed to the Apache Software Foundation (ASF) under one or more
- * contributor license agreements.  See the NOTICE file distributed with
- * this work for additional information regarding copyright ownership.
- * The ASF licenses this file to You under the Apache License, Version 2.0
- * (the "License"); you may not use this file except in compliance with
- * the License.  You may obtain a copy of the License at
- *
- *      http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
- -->
-
-<document>
-
-  <properties>
-    <title>Mercury Ant Tasks</title>
-    <author email="ogusakov_AT_apache_DOT_org">Oleg Gusakov</author>
-  </properties>
-
-  <body>
-
-    <section name="Mercury Ant tasks">
-
-      <p>Mercury Ant tasks is an Apache Ant wrapper for Mercury functionality. It supports both new and a subset of the old maven-ant-tasks syntax</p>
-
-    </section>
-
-  </body>
-
-</document>
