diff --git a/apache-resource-bundles/pom.xml b/apache-resource-bundles/pom.xml
deleted file mode 100644
index 566336d..0000000
--- a/apache-resource-bundles/pom.xml
+++ /dev/null
@@ -1,123 +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/xsd/maven-4.0.0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.maven</groupId>
-    <artifactId>maven-parent</artifactId>
-    <version>26</version>
-    <relativePath>../../pom/maven/pom.xml</relativePath>
-  </parent>
-
-  <groupId>org.apache.apache.resources</groupId>
-  <artifactId>apache-resource-bundles</artifactId>
-  <version>6-SNAPSHOT</version>
-  <packaging>pom</packaging>
-
-  <name>Apache Resource Bundles</name>
-  <inceptionYear>2006</inceptionYear>
-
-  <scm>
-    <connection>scm:svn:http://svn.apache.org/repos/asf/maven/resources/trunk/apache-resource-bundles</connection>
-    <developerConnection>scm:svn:https://svn.apache.org/repos/asf/maven/resources/trunk/apache-resource-bundles</developerConnection>
-    <url>http://svn.apache.org/viewcvs.cgi/maven/resources/trunk/apache-resource-bundles</url>
-  </scm>
-
-  <issueManagement>
-    <system>jira</system>
-    <url>https://issues.apache.org/jira/browse/MASFRES</url>
-  </issueManagement>
-
-  <ciManagement>
-    <url>https://builds.apache.org/job/maven-project-resources/</url>
-    <system>Jenkins</system>
-  </ciManagement>
-
-  <!-- There is no distributionManagement for this project. The site is a part of the main Maven site. -->
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-changes-plugin</artifactId>
-          <version>2.11</version>
-          <configuration>
-            <issueManagementSystems>
-              <issueManagementSystem>JIRA</issueManagementSystem>
-            </issueManagementSystems>
-            <maxEntries>1000</maxEntries>
-            <runOnlyAtExecutionRoot>true</runOnlyAtExecutionRoot>
-            <versionPrefix>${project.artifactId}-</versionPrefix>
-            <!-- Used by announcement-generate goal -->
-<!-- TODO Which template should we use for Apache Resource Bundles?            
-            <templateDirectory>org/apache/maven/shared</templateDirectory>
--->
-            <!-- Used by announcement-mail goal -->
-            <subject>[ANN] ${project.name} ${project.version} Released</subject>
-            <toAddresses>
-              <toAddress implementation="java.lang.String">announce@apache.org</toAddress>
-              <toAddress implementation="java.lang.String">announce@maven.apache.org</toAddress>
-              <toAddress implementation="java.lang.String">users@maven.apache.org</toAddress>
-            </toAddresses>
-            <ccAddresses>
-              <ccAddress implementation="java.lang.String">dev@maven.apache.org</ccAddress>
-            </ccAddresses>
-            <!-- These values need to be specified as properties in the profile apache-release in your settings.xml -->
-            <fromDeveloperId>${apache.availid}</fromDeveloperId>
-            <smtpHost>${smtp.host}</smtpHost>
-          </configuration>
-          <dependencies>
-            <!-- Used by announcement-generate goal -->
-<!-- Uncomment this when we have decided which template to use
-            <dependency>
-              <groupId>org.apache.maven.shared</groupId>
-              <artifactId>maven-shared-resources</artifactId>
-              <version>1</version>
-            </dependency>
--->
-          </dependencies>
-        </plugin>
-        <plugin>
-          <artifactId>maven-release-plugin</artifactId>
-          <configuration>
-            <tagBase>https://svn.apache.org/repos/asf/maven/resources/tags</tagBase>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <!-- Turn this into a lifecycle -->
-      <plugin>      
-        <artifactId>maven-remote-resources-plugin</artifactId>        
-        <executions>
-          <execution>
-            <goals>
-              <goal>bundle</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-</project>
