diff --git a/ruta-eclipse-feature/marker-file-identifying-eclipse-feature b/marker-file-enabling-auto-staging
similarity index 100%
copy from ruta-eclipse-feature/marker-file-identifying-eclipse-feature
copy to marker-file-enabling-auto-staging
diff --git a/ruta-eclipse-feature/marker-file-identifying-eclipse-feature b/marker-file-identifying-parent-pom
similarity index 100%
copy from ruta-eclipse-feature/marker-file-identifying-eclipse-feature
copy to marker-file-identifying-parent-pom
diff --git a/pom.xml b/pom.xml
index 63e6e62..b9ef886 100644
--- a/pom.xml
+++ b/pom.xml
@@ -33,10 +33,7 @@
   <description>The top project for Apache UIMA Ruta</description>
   <url>${uimaWebsiteUrl}</url>
   <properties>
-    <jiraVersion>12348278</jiraVersion>
-    <!-- 
-     <assembly.attach>false</assembly.attach>
-     -->
+    <jiraVersion>3.2.0ruta</jiraVersion>
   </properties>
 
   <!-- override pom setting in the build project. JIRA 5.1 needs different URL -->
@@ -130,12 +127,13 @@
     <module>ruta-ep-addons</module>
     <module>ruta-ep-textruler</module>
     <module>ruta-ep-core-ext</module>
+    <module>ruta-eclipse-feature</module>
+    <module>ruta-eclipse-update-site</module>
 
     <module>ruta-maven-plugin</module>
     <module>ruta-maven-archetype</module>
 
     <module>ruta-docbook</module>
-    <module>ruta-eclipse-feature</module>
 
     <module>example-projects/ruta-ep-example-extensions</module>
     <module>example-projects/ruta-maven-example</module>
@@ -179,77 +177,46 @@
             </execution>
           </executions>
         </plugin>
-
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-changes-plugin</artifactId>
-          <version>2.8</version>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <goals>
-                <goal>jira-report</goal>
-              </goals>
-
-              <phase>generate-resources</phase>
-              <configuration>
-                <useJql>true</useJql>
-                <fixVersionIds>${jiraVersion}</fixVersionIds>
-                <component>Ruta</component>
-                <columnNames>Type,Key,Status,Summary</columnNames>
-                <resolution>Fixed</resolution>
-                <status>Closed,Resolved</status>
-                <sortColumnNames>Type, Status, Key</sortColumnNames>
-                <outputDirectory>${basedir}/issuesFixed/</outputDirectory>
-                <maxEntries>1000</maxEntries>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
       </plugins>
     </pluginManagement>
   </build>
   <profiles>
-    <!--
-      <profile>
-      <id>build distribution</id>
-      <build>
-      <plugins>
-      <plugin>
-      <artifactId>maven-deploy-plugin</artifactId>
-      <configuration>
-      <skip>false</skip>
-      </configuration>
-      </plugin>
-      </plugins>
-      </build>
-      </profile>
-    -->
-
     <profile>
       <id>apache-release</id>
       <build>
         <plugins>
-          <!-- Run jira report -->
-          <!-- depends on having -DjiraVersion set -->
           <plugin>
-            <artifactId>maven-changes-plugin</artifactId>
-            <version>2.8</version>
-            <executions>
-              <execution>
-                <id>default-cli</id>
-                <configuration>
-                  <fixVersionIds>${jiraVersion}</fixVersionIds>
-                  <sortColumnNames>Type, Status, Key</sortColumnNames>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-          <plugin>
+            <groupId>org.apache.maven.plugins</groupId>
             <artifactId>maven-antrun-plugin</artifactId>
             <inherited>false</inherited>
             <executions>
               <execution>
+                <phase>install</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+                <configuration>
+                  <target>
+                    <mkdir dir="${staging-local-root}/${staging-folder}" />
+                    <copy todir="${staging-local-root}/${staging-folder}">
+                      <fileset dir="${project.build.directory}">
+                        <include name="ruta-${project.version}-*.zip"/>
+                        <include name="ruta-${project.version}-*.zip.asc"/>
+                        <include name="ruta-${project.version}-*.zip.sha512"/>
+                        <include name="ruta-${project.version}-*.tar.gz"/>
+                        <include name="ruta-${project.version}-*.tar.gz.asc"/>
+                        <include name="ruta-${project.version}-*.tar.gz.sha512"/>
+                      </fileset>
+                    </copy>
+                    <copy todir="${staging-local-root}/${staging-folder}/eclipse-update-site">
+                      <fileset dir="ruta-eclipse-update-site/target/repository">
+                        <include name="**/*"/>
+                      </fileset>
+                    </copy>
+                  </target>
+                </configuration>
+              </execution>
+              <execution>
                 <id>ExtendSourceRelease</id>
                 <phase>package</phase>
                 <configuration>
diff --git a/ruta-eclipse-feature/.gitignore b/ruta-eclipse-feature/.gitignore
deleted file mode 100644
index 3a0a26c..0000000
--- a/ruta-eclipse-feature/.gitignore
+++ /dev/null
@@ -1 +0,0 @@
-feature.xml
diff --git a/ruta-eclipse-feature/feature.properties b/ruta-eclipse-feature/feature.properties
deleted file mode 100644
index 631d28c..0000000
--- a/ruta-eclipse-feature/feature.properties
+++ /dev/null
@@ -1,145 +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.
-#	 ***************************************************************
-
-# do not delete this file - it is required for optimized site generation
-# feature.properties
-# contains externalized strings for feature.xml
-# "%foo" in feature.xml corresponds to the key "foo" in this file
-# java.io.Properties file (ISO 8859-1 with "\" escapes)
-# This file should be translated.
-
-# "licenseURL" property - URL of the "Feature License"
-# do not translate value - just change to point to a locale-specific HTML page
-licenseURL=uima-eclipse-user-agreement.html
-
-# "license" property - text of the "Feature Update License"
-# should be plain text version of license agreement pointed to be "licenseURL"
-license=\
-Apache UIMA (TM) Software User Agreement for Eclipse Features and Plugins\n\
-February 4, 2013\n\
-\n\
-Usage Of Content\n\
-\n\
-THE APACHE SOFTWARE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS\n\
-(COLLECTIVELY "CONTENT").  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND\n\
-CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE\n\
-OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR\n\
-NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND\n\
-CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.\n\
-\n\
-\n\
-Applicable Licenses\n\
-\n\
-Unless otherwise indicated, all Content made available by the Apache Software Foundation is provided \n\
-tto you under the terms and conditions of the Apache Software License Version 2.0\n\
-("ASL").  A copy of the ASL is provided with this Content and is also available at \n\
-http://www.apache.org/licenses/LICENSE-2.0.html.\n\
-For purposes of the ASL, "Program" will mean the Content.\n\
-\n\
-Content includes, but is not limited to, source code, object code, documentation and other files maintained in the \n\
-Apache Software Foundation source code repository ("Repository") in software modules ("Modules") \n\
-and made available as downloadable archives ("Downloads").\n\
-\n\
- - Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  \n\
-   Typical modules may include plug-ins ("Plug-ins"), plug-in fragments ("Fragments"), and features ("Features").\n\
- \n\
- - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java (TM) ARchive) in a directory named "plugins".\n\
- \n\
- - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  \n\
-   Each Feature may be packaged as a sub-directory in a directory named "features".  \n\
-   Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of the Plug-ins\n\
-   and/or Fragments associated with that Feature.\n\
-      \n\
- - Features may also include other Features ("Included Features"). \n\
-   Within a Feature, files named "feature.xml" may contain a list of the names and version numbers of Included Features.\n\
-\n\
-\n\
-The terms and conditions governing Plug-ins and Fragments should be contained in files named "about.html" ("Abouts") or "LICENSE" ("Licenses"). \n\
-The terms and conditions governing Features and Included Features should be contained in files named "LICENSE" ("Feature Licenses").  \n\
-Abouts, Licenses and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:\n\
-\n\
- - The top-level (root) directory\n\
- \n\
- - Plug-in and Fragment directories\n\
-\n\
- - Inside Plug-ins and Fragments packaged as JARs\n\
-\n\
- - Sub-directories of the directory named "src" of certain Plug-ins\n\
-\n\
- - Feature directories\n\
-\n\
-\n\
-Note: if a Feature made available by the Apache Software Foundation is installed using the Provisioning Technology (as defined below), \n\
-you must agree to a license ("Feature Update License") during the installation process.  \n\
-If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions \n\
-governing the Included Features or inform you where you can locate them.  \n\
-Feature Update Licenses may be found in the "license" property of files named "feature.properties" found within a Feature.\n\
-Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions \n\
-(or references to such terms and conditions) that govern your use of the associated Content in that directory.\n\
-\n\
-THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE ASL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.\n\
-SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):\n\
-\n\
-  - Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)\n\
-  - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)\n\
-  - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)\n\
-  - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)\n\
-  - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)\n\
-  \n\
-IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please\n\
-contact the Apache Software Foundation to determine what terms and conditions govern that particular Content.\n\
-\n\
-\n\
-Use of Provisioning Technology\n\
-\n\
-The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse\n\
-   Update Manager ("Provisioning Technology") for the purpose of allowing users to install software, documentation, information and/or\n\
-   other materials (collectively "Installable Software"). This capability is provided with the intent of allowing such users to\n\
-   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at \n\
-   http://eclipse.org/equinox/p2/repository_packaging.html\n\
-   ("Specification").\n\
-\n\
-You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the\n\
-   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology\n\
-   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the\n\
-   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:\n\
-\n\
-  1. A series of actions may occur ("Provisioning Process") in which a user may execute the Provisioning Technology\n\
-     on a machine ("Target Machine") with the intent of installing, extending or updating the functionality of an Eclipse-based\n\
-     product.\n\
-  2. During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be\n\
-     accessed and copied to the Target Machine.\n\
-  3. Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable\n\
-     Software ("Installable Software Agreement") and such Installable Software Agreement shall be accessed from the Target\n\
-     Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern\n\
-     the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such\n\
-     indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.\n\
-\n\
-\n\
-Cryptography\n\
-\n\
-Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to\n\
-another country, of encryption software. BEFORE using any encryption software, please check the country's laws, regulations and policies concerning the import,\n\
-possession, or use, and re-export of encryption software, to see if this is permitted.\n\
-\n\
-Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.\n\
-Apache UIMA is a trademark of the Apache Software Foundation in the United States, other countries, or both.\n\
- 
-  
-########### end of license property ##########################################
diff --git a/ruta-eclipse-feature/feature.xml b/ruta-eclipse-feature/feature.xml
new file mode 100644
index 0000000..2f4ec3b
--- /dev/null
+++ b/ruta-eclipse-feature/feature.xml
@@ -0,0 +1,205 @@
+<?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.    
+-->
+<feature
+      id="org.apache.uima.ruta.feature"
+      label="UIMA Ruta Workbench"
+      version="3.2.0.qualifier"
+      provider-name="Apache Software Foundation">
+
+   <description url="http://uima.apache.org">
+      This feature packages the Apache UIMA Ruta Workbench
+   </description>
+
+   <copyright url="http://www.apache.org/licenses/LICENSE-2.0">
+      Copyright the Apache Software Foundation and others; see License
+and NOTICE files
+   </copyright>
+
+   <license url="uima-eclipse-user-agreement.html">
+      Apache UIMA (TM) Software User Agreement for Eclipse Features and Plugins
+February 4, 2013
+
+Usage Of Content
+
+THE APACHE SOFTWARE FOUNDATION MAKES AVAILABLE SOFTWARE, DOCUMENTATION, INFORMATION AND/OR OTHER MATERIALS FOR OPEN SOURCE PROJECTS
+(COLLECTIVELY &quot;CONTENT&quot;).  USE OF THE CONTENT IS GOVERNED BY THE TERMS AND CONDITIONS OF THIS AGREEMENT AND/OR THE TERMS AND
+CONDITIONS OF LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW.  BY USING THE CONTENT, YOU AGREE THAT YOUR USE
+OF THE CONTENT IS GOVERNED BY THIS AGREEMENT AND/OR THE TERMS AND CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR
+NOTICES INDICATED OR REFERENCED BELOW.  IF YOU DO NOT AGREE TO THE TERMS AND CONDITIONS OF THIS AGREEMENT AND THE TERMS AND
+CONDITIONS OF ANY APPLICABLE LICENSE AGREEMENTS OR NOTICES INDICATED OR REFERENCED BELOW, THEN YOU MAY NOT USE THE CONTENT.
+
+
+Applicable Licenses
+
+Unless otherwise indicated, all Content made available by the Apache Software Foundation is provided 
+tto you under the terms and conditions of the Apache Software License Version 2.0
+(&quot;ASL&quot;).  A copy of the ASL is provided with this Content and is also available at 
+http://www.apache.org/licenses/LICENSE-2.0.html.
+For purposes of the ASL, &quot;Program&quot; will mean the Content.
+
+Content includes, but is not limited to, source code, object code, documentation and other files maintained in the 
+Apache Software Foundation source code repository (&quot;Repository&quot;) in software modules (&quot;Modules&quot;) 
+and made available as downloadable archives (&quot;Downloads&quot;).
+
+ - Content may be structured and packaged into modules to facilitate delivering, extending, and upgrading the Content.  
+   Typical modules may include plug-ins (&quot;Plug-ins&quot;), plug-in fragments (&quot;Fragments&quot;), and features (&quot;Features&quot;).
+ 
+ - Each Plug-in or Fragment may be packaged as a sub-directory or JAR (Java (TM) ARchive) in a directory named &quot;plugins&quot;.
+ 
+ - A Feature is a bundle of one or more Plug-ins and/or Fragments and associated material.  
+   Each Feature may be packaged as a sub-directory in a directory named &quot;features&quot;.  
+   Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of the Plug-ins
+   and/or Fragments associated with that Feature.
+      
+ - Features may also include other Features (&quot;Included Features&quot;). 
+   Within a Feature, files named &quot;feature.xml&quot; may contain a list of the names and version numbers of Included Features.
+
+
+The terms and conditions governing Plug-ins and Fragments should be contained in files named &quot;about.html&quot; (&quot;Abouts&quot;) or &quot;LICENSE&quot; (&quot;Licenses&quot;). 
+The terms and conditions governing Features and Included Features should be contained in files named &quot;LICENSE&quot; (&quot;Feature Licenses&quot;).  
+Abouts, Licenses and Feature Licenses may be located in any directory of a Download or Module including, but not limited to the following locations:
+
+ - The top-level (root) directory
+ 
+ - Plug-in and Fragment directories
+
+ - Inside Plug-ins and Fragments packaged as JARs
+
+ - Sub-directories of the directory named &quot;src&quot; of certain Plug-ins
+
+ - Feature directories
+
+
+Note: if a Feature made available by the Apache Software Foundation is installed using the Provisioning Technology (as defined below), 
+you must agree to a license (&quot;Feature Update License&quot;) during the installation process.  
+If the Feature contains Included Features, the Feature Update License should either provide you with the terms and conditions 
+governing the Included Features or inform you where you can locate them.  
+Feature Update Licenses may be found in the &quot;license&quot; property of files named &quot;feature.properties&quot; found within a Feature.
+Such Abouts, Feature Licenses, and Feature Update Licenses contain the terms and conditions 
+(or references to such terms and conditions) that govern your use of the associated Content in that directory.
+
+THE ABOUTS, FEATURE LICENSES, AND FEATURE UPDATE LICENSES MAY REFER TO THE ASL OR OTHER LICENSE AGREEMENTS, NOTICES OR TERMS AND CONDITIONS.
+SOME OF THESE OTHER LICENSE AGREEMENTS MAY INCLUDE (BUT ARE NOT LIMITED TO):
+
+  - Eclipse Public License Version 1.0 (available at http://www.eclipse.org/legal/epl-v10.html)
+  - Common Public License Version 1.0 (available at http://www.eclipse.org/legal/cpl-v10.html)
+  - Apache Software License 1.1 (available at http://www.apache.org/licenses/LICENSE)
+  - Metro Link Public License 1.00 (available at http://www.opengroup.org/openmotif/supporters/metrolink/license.html)
+  - Mozilla Public License Version 1.1 (available at http://www.mozilla.org/MPL/MPL-1.1.html)
+  
+IT IS YOUR OBLIGATION TO READ AND ACCEPT ALL SUCH TERMS AND CONDITIONS PRIOR TO USE OF THE CONTENT.  If no About, Feature License, or Feature Update License is provided, please
+contact the Apache Software Foundation to determine what terms and conditions govern that particular Content.
+
+
+Use of Provisioning Technology
+
+The Eclipse Foundation makes available provisioning software, examples of which include, but are not limited to, p2 and the Eclipse
+   Update Manager (&quot;Provisioning Technology&quot;) for the purpose of allowing users to install software, documentation, information and/or
+   other materials (collectively &quot;Installable Software&quot;). This capability is provided with the intent of allowing such users to
+   install, extend and update Eclipse-based products. Information about packaging Installable Software is available at 
+   http://eclipse.org/equinox/p2/repository_packaging.html
+   (&quot;Specification&quot;).
+
+You may use Provisioning Technology to allow other parties to install Installable Software. You shall be responsible for enabling the
+   applicable license agreements relating to the Installable Software to be presented to, and accepted by, the users of the Provisioning Technology
+   in accordance with the Specification. By using Provisioning Technology in such a manner and making it available in accordance with the
+   Specification, you further acknowledge your agreement to, and the acquisition of all necessary rights to permit the following:
+
+  1. A series of actions may occur (&quot;Provisioning Process&quot;) in which a user may execute the Provisioning Technology
+     on a machine (&quot;Target Machine&quot;) with the intent of installing, extending or updating the functionality of an Eclipse-based
+     product.
+  2. During the Provisioning Process, the Provisioning Technology may cause third party Installable Software or a portion thereof to be
+     accessed and copied to the Target Machine.
+  3. Pursuant to the Specification, you will provide to the user the terms and conditions that govern the use of the Installable
+     Software (&quot;Installable Software Agreement&quot;) and such Installable Software Agreement shall be accessed from the Target
+     Machine in accordance with the Specification. Such Installable Software Agreement must inform the user of the terms and conditions that govern
+     the Installable Software and must solicit acceptance by the end user in the manner prescribed in such Installable Software Agreement. Upon such
+     indication of agreement by the user, the provisioning Technology will complete installation of the Installable Software.
+
+
+Cryptography
+
+Content may contain encryption software. The country in which you are currently may have restrictions on the import, possession, and use, and/or re-export to
+another country, of encryption software. BEFORE using any encryption software, please check the country&apos;s laws, regulations and policies concerning the import,
+possession, or use, and re-export of encryption software, to see if this is permitted.
+
+Java and all Java-based trademarks are trademarks of Oracle Corporation in the United States, other countries, or both.
+Apache UIMA is a trademark of the Apache Software Foundation in the United States, other countries, or both.
+   </license>
+
+   <url>
+      <discovery label="UIMA Eclipse Plugins update site" url="http://www.apache.org/dist/uima/eclipse-update-site/"/>
+   </url>
+
+   <requires>
+      <import feature="org.apache.uima.tools" version="2.9.0" match="greaterOrEqual"/>
+      <import feature="org.eclipse.dltk.core" version="3.0.0" match="greaterOrEqual"/>
+   </requires>
+
+   <plugin
+         id="org.apache.uima.ruta.addons"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.uima.ruta.caseditor"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.uima.ruta.engine"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.uima.ruta.ide"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.uima.ruta.ide.ui"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.uima.ruta.textruler"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+   <plugin
+         id="org.apache.uima.ruta.core.ext"
+         download-size="0"
+         install-size="0"
+         version="0.0.0"
+         unpack="false"/>
+
+</feature>
diff --git a/ruta-eclipse-feature/marker-file-identifying-eclipse-feature b/ruta-eclipse-feature/marker-file-identifying-tycho-module
similarity index 100%
rename from ruta-eclipse-feature/marker-file-identifying-eclipse-feature
rename to ruta-eclipse-feature/marker-file-identifying-tycho-module
diff --git a/ruta-eclipse-feature/pom.xml b/ruta-eclipse-feature/pom.xml
index 7fcbf2d..52c7649 100644
--- a/ruta-eclipse-feature/pom.xml
+++ b/ruta-eclipse-feature/pom.xml
@@ -27,72 +27,52 @@
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
 
-  <artifactId>ruta-eclipse-feature</artifactId>
+  <artifactId>org.apache.uima.ruta.feature</artifactId>
+  <packaging>eclipse-feature</packaging>
 
   <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <description>UIMA Eclipse Plugin Feature that
-    contains the UIMA Ruta engine and IDE</description>
+  <description>UIMA Eclipse Plugin Feature that contains the UIMA Ruta engine and IDE</description>
   <url>${uimaWebsiteUrl}</url>
 
-  <!-- Special inheritance note even though the <scm> element that follows is exactly the same as those
-    in super poms, it cannot be inherited because there is some special code that computes the connection
-    elements from the chain of parent poms, if this is omitted. Keeping this a bit factored allows cutting/pasting
-    the <scm> element, and just changing the following two properties -->
-  <scm>
-    <connection>scm:git:https://github.com/apache/uima-ruta/</connection>
-    <developerConnection>scm:git:https://github.com/apache/uima-ruta/</developerConnection>
-    <url>https://github.com/apache/uima-ruta/</url>
-    <tag>HEAD</tag>
-  </scm>
-
   <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
     <postNoticeText>${uniWueNoticeText}</postNoticeText>
   </properties>
 
-  <build>
-    <!-- parsedVersion set in parent-pom by builder-helper -->
-    <finalName>${project.artifactId}_${parsedVersion.osgiVersion}</finalName>
-    <!-- turn on filtering for these resources -->
-    <resources>
-      <resource>
-        <directory>${basedir}</directory>
-        <includes>
-          <include>feature.properties</include>
-          <include>feature.xml</include>
-          <include>uima-eclipse-user-agreement.html</include>
-        </includes>
-        <filtering>true</filtering>
-      </resource>
-    </resources>
-
-    <plugins>
-      <!-- filter the feature.xml to have the right version info for Eclipse at the top level -->
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>filter feature.xml</id>
-            <!-- run before process-resources, which uses this result -->
-            <phase>generate-resources</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${basedir}</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>src/main/resources</directory>
-                  <includes>
-                    <include>feature.xml</include>
-                  </includes>
-                  <filtering>true</filtering>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-addons</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-caseditor</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-core-ext</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-engine</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide-ui</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-textruler</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
 </project>
\ No newline at end of file
diff --git a/ruta-eclipse-feature/src/main/resources/feature.xml b/ruta-eclipse-feature/src/main/resources/feature.xml
deleted file mode 100644
index ce8c4ca..0000000
--- a/ruta-eclipse-feature/src/main/resources/feature.xml
+++ /dev/null
@@ -1,97 +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.    
--->
-<feature
-      id="org.apache.uima.ruta.feature"
-      label="UIMA Ruta Workbench"
-      version="${parsedVersion.osgiVersion}"
-      provider-name="Apache Software Foundation">
-
-   <description url="http://uima.apache.org">
-      This feature packages the Apache UIMA Ruta Workbench
-   </description>
-
-   <copyright url="http://www.apache.org/licenses/LICENSE-2.0">
-      Copyright the Apache Software Foundation and others; see License
-and NOTICE files
-   </copyright>
-
-   <license url="%licenseURL">
-      %license
-   </license>
-
-   <url>
-      <discovery label="UIMA Eclipse Plugins update site" url="http://www.apache.org/dist/uima/eclipse-update-site/"/>
-   </url>
-
-   <requires>
-      <import feature="org.apache.uima.tools" version="2.9.0" match="greaterOrEqual"/>
-      <import feature="org.eclipse.dltk.core" version="3.0.0" match="greaterOrEqual"/>
-   </requires>
-
-   <plugin
-         id="org.apache.uima.ruta.addons"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.uima.ruta.caseditor"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.uima.ruta.engine"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.uima.ruta.ide"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.uima.ruta.ide.ui"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.uima.ruta.textruler"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-   <plugin
-         id="org.apache.uima.ruta.core.ext"
-         download-size="0"
-         install-size="0"
-         version="${parsedVersion.osgiVersion}"
-         unpack="false"/>
-
-</feature>
diff --git a/ruta-eclipse-update-site/category.xml b/ruta-eclipse-update-site/category.xml
index 31ac62c..d6903a7 100644
--- a/ruta-eclipse-update-site/category.xml
+++ b/ruta-eclipse-update-site/category.xml
@@ -20,7 +20,7 @@
    ***************************************************************
    -->
 <site>
-   <feature url="features/org.apache.uima.ruta.feature_3.2.0.SNAPSHOT.jar" id="org.apache.uima.ruta.feature" version="3.2.0.SNAPSHOT">
+   <feature url="features/org.apache.uima.ruta.feature_3.2.0.qualifier.jar" id="org.apache.uima.ruta.feature" version="3.2.0.qualifier">
       <category name="apache-uima-ruta"/>
    </feature>
    <category-def name="apache-uima-ruta" label="Apache UIMA Ruta">
diff --git a/ruta-eclipse-update-site/marker-file-identifying-eclipse-update-site b/ruta-eclipse-update-site/marker-file-identifying-tycho-module
similarity index 100%
rename from ruta-eclipse-update-site/marker-file-identifying-eclipse-update-site
rename to ruta-eclipse-update-site/marker-file-identifying-tycho-module
diff --git a/ruta-eclipse-update-site/pom.xml b/ruta-eclipse-update-site/pom.xml
index abb06d1..b86a991 100644
--- a/ruta-eclipse-update-site/pom.xml
+++ b/ruta-eclipse-update-site/pom.xml
@@ -23,14 +23,13 @@
   
   <parent>
     <groupId>org.apache.uima</groupId>
-    <artifactId>parent-pom</artifactId>
-    <version>15-SNAPSHOT</version>
-    <relativePath />
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0-SNAPSHOT</version>
+    <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
 
   <artifactId>ruta-eclipse-update-site</artifactId>
-  <packaging>pom</packaging>
-  <version>3.2.0-SNAPSHOT</version>
+  <packaging>eclipse-repository</packaging>
 
   <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
   <description>The UIMA Ruta Eclipse update site</description>
@@ -44,247 +43,68 @@
   </scm>
   
   <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-    <eclipseUpdateSiteComponent>ruta</eclipseUpdateSiteComponent>
-    <eclipseUpdateSubSite>${project.build.directory}/eclipse-update-site-v3/${eclipseUpdateSiteComponent}</eclipseUpdateSubSite>
-    <dropPrevVersions>true</dropPrevVersions>
+    <maven.install.skip>true</maven.install.skip>
+    <maven.deploy.skip>true</maven.deploy.skip>
   </properties>
+  
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>org.apache.uima.ruta.feature</artifactId>
+      <version>3.2.0-SNAPSHOT</version>
+    </dependency>
+  </dependencies>
 
   <build>
-    
     <plugins>
       <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy-new-plugins</id>
-            <goals><goal>copy</goal></goals>
-            <configuration>
-              <!-- ===================================================================
-                                       the PLUGINS 
-              ======================================================================= -->
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-addons</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.addons_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-caseditor</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.caseditor_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-engine</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.engine_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-ide</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.ide_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-ide-ui</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.ide.ui_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-textruler</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.textruler_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-ep-core-ext</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.core.ext_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-              </artifactItems>
-              <outputDirectory>${eusWork}/plugins</outputDirectory>
-            </configuration>
-          </execution>
-          <execution>
-            <id>copy-features</id>
-            <goals>
-              <goal>copy</goal>
-            </goals>
-            <configuration>
-              <!-- ===================================================================
-                                         the FEATURES
-                ======================================================================= -->
-              <artifactItems>
-                <artifactItem>
-                  <groupId>org.apache.uima</groupId>
-                  <artifactId>ruta-eclipse-feature</artifactId>
-                  <version>${project.version}</version>
-                  <destFileName>org.apache.uima.ruta.feature_${parsedVersion.osgiVersion}.jar</destFileName>
-                </artifactItem>
-              </artifactItems>
-              <outputDirectory>${project.build.directory}/eus-work/features</outputDirectory>   
-            </configuration>
-          </execution>
-        </executions>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-p2-repository-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <skipArchive>true</skipArchive>
+        </configuration>
       </plugin>
-
-      <plugin>
-        <artifactId>maven-antrun-plugin</artifactId>
-        <executions>
-
-           <!-- ==================================================== -->
-           <!--                                                      -->
-           <!--       P O S T   JAR   S I G N I N G by Digicert      -->
-           <!--                                                      -->
-           <!--       is not here, it was                            -->
-           <!--       moved to uima-wide parent pom 10/2018          -->
-           <!-- ==================================================== -->
- 
-          <execution>
-            <id>BuildUpdateSite-pack-svnget-buildMetadata-commit-to-dev</id>
-            <phase>package</phase>
-            <goals>
-              <goal>run</goal>
-            </goals>
-            <configuration combine.self="override">
-              <target>
-                <taskdef classname="net.sf.antcontrib.logic.IfTask" name="if" />
-                
-                <condition property="eclipse.home" value="${uima-maven-build-eclipse-home}">
-                  <not>
-                    <equals arg1="${uima-maven-build-eclipse-home}" arg2="$${uima-maven-build-eclipse-home}" />
-                  </not>
-                </condition>
-
-                <property environment="envVar" />
-                <condition property="eclipse.home" value="${envVar.ECLIPSE_HOME}">
-                  <isset property="envVar.ECLIPSE_HOME" />
-                </condition>
-                
-                <fail unless="eclipse.home" message="********** Please set up and use an ant property eclipse.home set to an Eclipse installation at level 3.3 or later, e.g. c:/eclipses/3.3/eclipse" />
-                <fail unless="uima-eclipse-jar-processor" message="********** Please add to your settings.xml file the property uima-eclipse-jar-processor, point to this within an Eclipse installation at level 4.2 or later, e.g. \$\{uima-maven-build-eclipse-home\}/plugins/org.eclipse.equinox.p2.jarprocessor_1.0.200.v20110808-1657.jar" />
-                <!--  skip this when dropping previous versions -->
-                <if> 
-                    <equals arg1="${dropPrevVersions}" arg2="false" />
-                  <then>
-	                  <if>
-	                      <equals arg1="${isApacheRelease}" arg2="true" />
-	                      <then>
-	    
-	                        <echo>checking out eclipse update subsite ${eclipseUpdateSiteComponent} from dist ...release...</echo>
-	                        <delete dir="${eclipseUpdateSubSite}" quiet="true" />
-	                        <exec executable="svn" failonerror="true">
-	                          <arg value="checkout" />
-	                          <arg value="${distsvnroot}repos/dist/release/uima/eclipse-update-site-v3/${eclipseUpdateSiteComponent}" />
-	                          <arg value="${eclipseUpdateSubSite}" />
-	                        </exec> 
-	                        
-                        <echo>Saving original content and artifacts for the site</echo>
-                        <copy todir="${project.build.directory}/saved" failonerror="true">
-                          <fileset dir="${eclipseUpdateSubSite}"
-                            includes="content.jar,artifacts.jar" />
-                        </copy>
-        
-	                      </then>
-	                      <else>
-	                        <echo>skipping checkout of current svn dist release (because not apache-release)</echo>
-	                        <!-- https://issues.apache.org/jira/browse/UIMA-3501 -->
-	                        <delete dir="${eclipseUpdateSubSite}" quiet="true" />
-	                      </else>
-	                    </if>
-                   </then>
-                </if>
-                    
-                <echo>Save conditioned Jars prior to signing, in case of redo</echo>
-                <echo>-------------------------------------------------------</echo> 
-                <copy todir="${project.build.directory}/saved/features" failonerror="true">
-                  <fileset dir="${eusWork}/features" includes="*.jar" />                 
-                </copy>
-                <copy todir="${project.build.directory}/saved/plugins" failonerror="true">
-                   <fileset dir="${eusWork}/plugins" includes="*.jar" />                 
-                </copy>
-                
-                <echo>Generate the p2 metadata and publish new artifacts</echo>
-                <java fork="true" maxmemory="256m" jar="${eclipse-equinox-launcher}" failonerror="true">
-                  <arg line="-application org.eclipse.equinox.p2.publisher.FeaturesAndBundlesPublisher" />
-                  <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
-                  <arg line="-artifactRepository file:///${eclipseUpdateSubSite}" />
-                  <arg line="-source ${eusWork}" />
-                  <arg line="-configs ANY.ANY.ANY" />
-                  <arg line="-publishArtifacts" />
-                  <arg line="-compress" />
-                  <arg line="-append" />
-                </java>
-                <echo>Augment p2 metadata with category information</echo>
-                <java fork="true" maxmemory="256m" jar="${eclipse-equinox-launcher}" failonerror="true">
-                  <arg line="-application org.eclipse.equinox.p2.publisher.CategoryPublisher" />
-                  <arg line="-metadataRepository file:///${eclipseUpdateSubSite}" />
-                  <arg line="-categoryDefinition file:///${basedir}/category.xml" />
-                  <arg line="-categoryQualifier apache-uima" />
-                  <arg line="-compress" />
-                </java>
-                <if>
-                  <equals arg2="true" arg1="${isApacheRelease}" />
-                  <then>
-                    <echo message="Generating checksums for new features and plugins" />
-                     <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
-                      <fileset dir="${eusWork}">
-                        <include name="**/*.gz" />
-                        <include name="**/*.jar" />
-                      </fileset>
-                    </checksum>
-                    
-                    <echo message="Generating gpg signatures for new features and plugins" />
-                    <apply failonerror="true" dir="${eusWork}" executable="gpg">
-                      <arg value="--detach-sign" />
-                      <arg value="--armor" />
-                      <arg value="--batch" />
-                      <fileset dir="${eusWork}">
-                        <include name="**/*.jar" />
-                      </fileset>
-                    </apply>
-                    <echo message="Copying the checksums and signatures to the update subsite" />
-                    <copy todir="${eclipseUpdateSubSite}" failonerror="true">
-                      <fileset dir="${eusWork}">
-                        <include name="**/*.asc" />
-                        <include name="**/*.sha512" />
-                      </fileset>
-                    </copy>
-                    <echo message="Clearing previous checksums and signatures for update artifacts.jar and content.jar" />
-                    <delete dir="${eclipseUpdateSubSite}">
-                      <include name="*.sha512" />
-                      <include name="*.asc" />
-                    </delete>
-                    <echo message="Generating checksums for updated artifacts.jar and content.jar" />
-                        <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
-                      <fileset dir="${eclipseUpdateSubSite}">
-                        <include name="*.jar" />
-                      </fileset>
-                    </checksum>
-                    <echo message="Generating gpg signatures for artifacts.jar and content.jar" />
-                    <apply failonerror="true" dir="${eclipseUpdateSubSite}" executable="gpg">
-                      <arg value="--detach-sign" />
-                      <arg value="--armor" />
-                      <arg value="--batch" />
-                      <fileset dir="${eclipseUpdateSubSite}">
-                        <include name="*.jar" />
-                      </fileset>
-                    </apply>
-                  </then>
-                </if>
-              </target>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-   </plugins>
+    </plugins>
   </build>
 
-</project>
+  <profiles>
+    <profile>
+      <id>apache-release</id>
+      <build>
+        <plugins>
+          <plugin>
+            <artifactId>maven-antrun-plugin</artifactId>
+            <executions>
+              <execution>
+                <id>sign-update-site-artifacts</id>
+                <phase>package</phase>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+                <configuration>
+                  <target>
+                    <checksum algorithm="SHA-512" fileext=".sha512" format="MD5SUM" forceoverwrite="yes">
+                      <fileset dir="target/repository">
+                        <exclude name="META-INF/**/*" />
+                      </fileset>
+                    </checksum>
+                    <apply executable="gpg" dir="target/repository" failonerror="true">
+                      <arg value="--detach-sign" />
+                      <arg value="--armor" />
+                      <arg value="--batch" />
+                      <fileset dir="target/repository">
+                        <exclude name="META-INF/**/*" />
+                        <exclude name="**/*.sha*" />
+                      </fileset>
+                    </apply>
+                  </target>
+                </configuration>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
+</project>
\ No newline at end of file
diff --git a/ruta-eclipse-update-site/src/main/resources/category.xml b/ruta-eclipse-update-site/src/main/resources/category.xml
deleted file mode 100644
index f858a70..0000000
--- a/ruta-eclipse-update-site/src/main/resources/category.xml
+++ /dev/null
@@ -1,31 +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.
-   ***************************************************************
-   -->
-<site>
-   <feature url="features/org.apache.uima.ruta.feature_${parsedVersion.osgiVersion}.jar" id="org.apache.uima.ruta.feature" version="${parsedVersion.osgiVersion}">
-      <category name="apache-uima-ruta"/>
-   </feature>
-   <category-def name="apache-uima-ruta" label="Apache UIMA Ruta">
-      <description>
-         Apache UIMA Ruta
-      </description>
-   </category-def>
-</site>
diff --git a/ruta-parent/pom.xml b/ruta-parent/pom.xml
index e4fbf44..5bb8485 100644
--- a/ruta-parent/pom.xml
+++ b/ruta-parent/pom.xml
@@ -277,21 +277,6 @@
     </pluginManagement>
     <plugins>
       <plugin>
-        <artifactId>maven-enforcer-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>enforce-versions</id>
-            <configuration>
-              <rules>
-                <requireMavenVersion>
-                  <version>3.0</version>
-                </requireMavenVersion>
-              </rules>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
         <artifactId>maven-resources-plugin</artifactId>
         <executions>
           <execution>
@@ -318,37 +303,4 @@
       </plugin>
     </plugins>
   </build>
-
-  <profiles>
-    <profile>
-      <id>apache-release</id>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-enforcer-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>enforce-java</id>
-                <goals>
-                  <goal>enforce</goal>
-                </goals>
-                <configuration>
-                  <rules>
-                    <requireJavaVersion>
-                      <!-- 
-                       - Ensure that releases are made with a Java 1.8 since that's our minimum
-                       - version atm.
-                       -->
-                      <version>[1.8,1.9)</version>
-                    </requireJavaVersion>
-                  </rules>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
 </project>
