diff --git a/example-projects/ruta-ep-example-extensions/pom.xml b/example-projects/ruta-ep-example-extensions/pom.xml
index 172ae19..867c925 100644
--- a/example-projects/ruta-ep-example-extensions/pom.xml
+++ b/example-projects/ruta-ep-example-extensions/pom.xml
@@ -1,142 +1,142 @@
-<?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>
-  <artifactId>ruta-ep-example-extensions</artifactId>
-  <name>Apache UIMA Ruta: ${project.artifactId}</name>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../../ruta-ep-parent/pom.xml</relativePath>
-  </parent>
-  <properties>
-    <postNoticeText />
-  </properties>
-  <url>${uimaWebsiteUrl}</url>
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide-ui</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr-runtime</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.antlr</groupId>
-          <artifactId>stringtemplate</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.app</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-jdk14</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <configuration>
-                <excludes combine.children="append">
-                  <exclude>src/test/resources/org/apache/uima/ruta/example/extensions/*.txt</exclude> <!-- test data -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/example/extensions/*ruta</exclude> <!-- test data -->
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <_nouses>true</_nouses>
-                <_exportcontents>
-                  org.apache.uima.ruta.example.extensions
-                </_exportcontents>
-                <Require-Bundle>
-                  org.apache.uima.runtime,
-                  org.apache.uima.ruta.engine,
-                  org.apache.uima.ruta.ide,
-                  org.apache.uima.ruta.ide.ui,
-                  org.eclipse.dltk.core;bundle-version="3.0.0"
-                </Require-Bundle>
-                <Import-Package>
-                </Import-Package>
-                <Bundle-SymbolicName>org.apache.uima.ruta.example.extensions;singleton:=true</Bundle-SymbolicName>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
-                <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
-                <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
-                <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
-                <Eclipse-RegisterBuddy>org.apache.uima.runtime,org.apache.uima.ruta.engine</Eclipse-RegisterBuddy>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
+<?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>
+  <artifactId>ruta-ep-example-extensions</artifactId>
+  <name>Apache UIMA Ruta: ${project.artifactId}</name>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-ep-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../../ruta-ep-parent/pom.xml</relativePath>
+  </parent>
+  <properties>
+    <postNoticeText />
+  </properties>
+  <url>${uimaWebsiteUrl}</url>
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide-ui</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.antlr</groupId>
+      <artifactId>antlr-runtime</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.antlr</groupId>
+          <artifactId>stringtemplate</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.app</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+              <configuration>
+                <excludes combine.children="append">
+                  <exclude>src/test/resources/org/apache/uima/ruta/example/extensions/*.txt</exclude> <!-- test data -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/example/extensions/*ruta</exclude> <!-- test data -->
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <_nouses>true</_nouses>
+                <_exportcontents>
+                  org.apache.uima.ruta.example.extensions
+                </_exportcontents>
+                <Require-Bundle>
+                  org.apache.uima.runtime,
+                  org.apache.uima.ruta.engine,
+                  org.apache.uima.ruta.ide,
+                  org.apache.uima.ruta.ide.ui,
+                  org.eclipse.dltk.core;bundle-version="3.0.0"
+                </Require-Bundle>
+                <Import-Package>
+                </Import-Package>
+                <Bundle-SymbolicName>org.apache.uima.ruta.example.extensions;singleton:=true</Bundle-SymbolicName>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
+                <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
+                <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
+                <Eclipse-RegisterBuddy>org.apache.uima.runtime,org.apache.uima.ruta.engine</Eclipse-RegisterBuddy>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
 </project>
\ No newline at end of file
diff --git a/example-projects/ruta-maven-example/pom.xml b/example-projects/ruta-maven-example/pom.xml
index b4ee5fb..910c65a 100644
--- a/example-projects/ruta-maven-example/pom.xml
+++ b/example-projects/ruta-maven-example/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../../ruta-parent/pom.xml</relativePath>
   </parent>
   <url>${uimaWebsiteUrl}</url>
@@ -37,7 +37,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <dependencies>
diff --git a/pom.xml b/pom.xml
index 2a00978..5e8feab 100644
--- a/pom.xml
+++ b/pom.xml
@@ -1,262 +1,262 @@
-<?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.uima</groupId>
-    <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>ruta-parent/pom.xml</relativePath>
-  </parent>
-
-  <artifactId>ruta</artifactId>
-  <packaging>pom</packaging>
-  <name>Apache UIMA Ruta: ${project.artifactId}</name>
-  <description>The top project for Apache UIMA Ruta</description>
-  <url>${uimaWebsiteUrl}</url>
-  <properties>
-    <jiraVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}ruta</jiraVersion>
-  </properties>
-
-  <!-- override pom setting in the build project. JIRA 5.1 needs different URL -->
-  <issueManagement>
-    <system>Jira</system>
-    <url>https://issues.apache.org/jira/browse/UIMA</url>
-  </issueManagement>
-
-  <!-- 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>
-
-  <!-- dependencies used during assembly -->
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-basic-type</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-typesystem</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core-ext</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-addons</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-caseditor</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-engine</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-textruler</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-core-ext</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-maven-plugin</artifactId>
-      <version>${project.version}</version>
-    </dependency>
-  </dependencies>
-
-  <modules>
-    <module>ruta-parent</module>
-    <module>ruta-basic-type</module>
-    <module>ruta-typesystem</module>
-    <module>ruta-core</module>
-    <module>ruta-core-ext</module>
-
-    <module>ruta-ep-parent</module>
-    <module>ruta-ep-engine</module>
-    <module>ruta-ep-ide</module>
-    <module>ruta-ep-ide-ui</module>
-    <module>ruta-ep-caseditor</module>
-    <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>example-projects/ruta-ep-example-extensions</module>
-    <module>example-projects/ruta-maven-example</module>
-  </modules>
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-                <!-- default configuration -->
-              <configuration>
-                <excludes combine.children="append">
-                  <!-- These configuration files cannot bear a license header -->
-                  <exclude>.github/**/*</exclude>
-                  <!--  workaround https://issues.apache.org/jira/browse/RAT-97 -->
-                  <exclude>example-projects/**</exclude>
-                  <exclude>ruta-basic-type/**</exclude>
-                  <exclude>ruta-core/**</exclude>
-                  <exclude>ruta-core-ext/**</exclude>
-                  <exclude>ruta-docbook/**</exclude>
-                  <exclude>ruta-eclipse-feature/**</exclude>
-                  <exclude>ruta-eclipse-update-site/**</exclude>
-                  <exclude>ruta-ep-addons/**</exclude>
-                  <exclude>ruta-ep-caseditor/**</exclude>
-                  <exclude>ruta-ep-core-ext/**</exclude>
-                  <exclude>ruta-ep-engine/**</exclude>
-                  <exclude>ruta-ep-ide/**</exclude>
-                  <exclude>ruta-ep-ide-ui/**</exclude>
-                  <exclude>ruta-ep-parent/**</exclude>
-                  <exclude>ruta-ep-textruler/**</exclude>
-                  <exclude>ruta-maven-archetype/**</exclude>
-                  <exclude>ruta-maven-plugin/**</exclude>
-                  <exclude>ruta-parent/**</exclude>
-                  <exclude>ruta-typesystem/**</exclude>
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-  </build>
-  <profiles>
-    <profile>
-      <id>apache-release</id>
-      <build>
-        <plugins>
-          <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>
-                  <target>
-                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/ExampleProject/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/ExampleProject/" />
-                    </zip>
-                    <!-- <zip -->
-                    <!-- destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" -->
-                    <!-- update="true"> -->
-                    <!-- <zipfileset -->
-                    <!-- dir="${basedir}/example-projects/ExtensionsExample/" -->
-                    <!-- includes=".project" -->
-                    <!-- prefix="${project.artifactId}-${project.version}/example-projects/ExtensionsExample/" 
-                          /> -->
-                    <!-- </zip> -->
-                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/TextRulerExample/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/TextRulerExample/" />
-                    </zip>
-                    <!-- <zip -->
-                    <!-- destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" -->
-                    <!-- update="true"> -->
-                    <!-- <zipfileset dir="${basedir}/example-projects/GermanNovels/" -->
-                    <!-- includes=".project" -->
-                    <!-- prefix="${project.artifactId}-${project.version}/example-projects/GermanNovels/" 
-                          /> -->
-                    <!-- </zip> -->
-                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
-                      <zipfileset dir="${basedir}/example-projects/Misc/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/Misc/" />
-                    </zip>
-                  </target>
-                </configuration>
-                <goals>
-                  <goal>run</goal>
-                </goals>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
+<?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.uima</groupId>
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>ruta-parent/pom.xml</relativePath>
+  </parent>
+
+  <artifactId>ruta</artifactId>
+  <packaging>pom</packaging>
+  <name>Apache UIMA Ruta: ${project.artifactId}</name>
+  <description>The top project for Apache UIMA Ruta</description>
+  <url>${uimaWebsiteUrl}</url>
+  <properties>
+    <jiraVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}ruta</jiraVersion>
+  </properties>
+
+  <!-- override pom setting in the build project. JIRA 5.1 needs different URL -->
+  <issueManagement>
+    <system>Jira</system>
+    <url>https://issues.apache.org/jira/browse/UIMA</url>
+  </issueManagement>
+
+  <!-- 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>ruta-3.2.0</tag>
+  </scm>
+
+  <!-- dependencies used during assembly -->
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-basic-type</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-typesystem</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core-ext</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-addons</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-caseditor</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-engine</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-textruler</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-core-ext</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-maven-plugin</artifactId>
+      <version>${project.version}</version>
+    </dependency>
+  </dependencies>
+
+  <modules>
+    <module>ruta-parent</module>
+    <module>ruta-basic-type</module>
+    <module>ruta-typesystem</module>
+    <module>ruta-core</module>
+    <module>ruta-core-ext</module>
+
+    <module>ruta-ep-parent</module>
+    <module>ruta-ep-engine</module>
+    <module>ruta-ep-ide</module>
+    <module>ruta-ep-ide-ui</module>
+    <module>ruta-ep-caseditor</module>
+    <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>example-projects/ruta-ep-example-extensions</module>
+    <module>example-projects/ruta-maven-example</module>
+  </modules>
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+                <!-- default configuration -->
+              <configuration>
+                <excludes combine.children="append">
+                  <!-- These configuration files cannot bear a license header -->
+                  <exclude>.github/**/*</exclude>
+                  <!--  workaround https://issues.apache.org/jira/browse/RAT-97 -->
+                  <exclude>example-projects/**</exclude>
+                  <exclude>ruta-basic-type/**</exclude>
+                  <exclude>ruta-core/**</exclude>
+                  <exclude>ruta-core-ext/**</exclude>
+                  <exclude>ruta-docbook/**</exclude>
+                  <exclude>ruta-eclipse-feature/**</exclude>
+                  <exclude>ruta-eclipse-update-site/**</exclude>
+                  <exclude>ruta-ep-addons/**</exclude>
+                  <exclude>ruta-ep-caseditor/**</exclude>
+                  <exclude>ruta-ep-core-ext/**</exclude>
+                  <exclude>ruta-ep-engine/**</exclude>
+                  <exclude>ruta-ep-ide/**</exclude>
+                  <exclude>ruta-ep-ide-ui/**</exclude>
+                  <exclude>ruta-ep-parent/**</exclude>
+                  <exclude>ruta-ep-textruler/**</exclude>
+                  <exclude>ruta-maven-archetype/**</exclude>
+                  <exclude>ruta-maven-plugin/**</exclude>
+                  <exclude>ruta-parent/**</exclude>
+                  <exclude>ruta-typesystem/**</exclude>
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+  </build>
+  <profiles>
+    <profile>
+      <id>apache-release</id>
+      <build>
+        <plugins>
+          <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>
+                  <target>
+                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
+                      <zipfileset dir="${basedir}/example-projects/ExampleProject/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/ExampleProject/" />
+                    </zip>
+                    <!-- <zip -->
+                    <!-- destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" -->
+                    <!-- update="true"> -->
+                    <!-- <zipfileset -->
+                    <!-- dir="${basedir}/example-projects/ExtensionsExample/" -->
+                    <!-- includes=".project" -->
+                    <!-- prefix="${project.artifactId}-${project.version}/example-projects/ExtensionsExample/" 
+                           /> -->
+                    <!-- </zip> -->
+                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
+                      <zipfileset dir="${basedir}/example-projects/TextRulerExample/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/TextRulerExample/" />
+                    </zip>
+                    <!-- <zip -->
+                    <!-- destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" -->
+                    <!-- update="true"> -->
+                    <!-- <zipfileset dir="${basedir}/example-projects/GermanNovels/" -->
+                    <!-- includes=".project" -->
+                    <!-- prefix="${project.artifactId}-${project.version}/example-projects/GermanNovels/" 
+                           /> -->
+                    <!-- </zip> -->
+                    <zip destfile="${project.build.directory}/${project.artifactId}-${project.version}-source-release.zip" update="true">
+                      <zipfileset dir="${basedir}/example-projects/Misc/" includes=".project" prefix="${project.artifactId}-${project.version}/example-projects/Misc/" />
+                    </zip>
+                  </target>
+                </configuration>
+                <goals>
+                  <goal>run</goal>
+                </goals>
+              </execution>
+            </executions>
+          </plugin>
+        </plugins>
+      </build>
+    </profile>
+  </profiles>
 </project>
\ No newline at end of file
diff --git a/ruta-basic-type/pom.xml b/ruta-basic-type/pom.xml
index e514b8b..e1d9f5c 100644
--- a/ruta-basic-type/pom.xml
+++ b/ruta-basic-type/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
 
@@ -39,7 +39,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <dependencies>
diff --git a/ruta-core-ext/pom.xml b/ruta-core-ext/pom.xml
index f2c8485..adcc5fd 100644
--- a/ruta-core-ext/pom.xml
+++ b/ruta-core-ext/pom.xml
@@ -28,7 +28,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
 
@@ -41,7 +41,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <dependencies>
diff --git a/ruta-core/pom.xml b/ruta-core/pom.xml
index 5696d42..c0b46b2 100644
--- a/ruta-core/pom.xml
+++ b/ruta-core/pom.xml
@@ -1,314 +1,312 @@
-<?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>
-  <artifactId>ruta-core</artifactId>
-
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-parent/pom.xml</relativePath>
-  </parent>
-
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-    <postNoticeText>${uniWueNoticeText}</postNoticeText>
-  </properties>
-
-  <url>${uimaWebsiteUrl}</url>
-  <description>The core implementation of the UIMA Ruta rule engine.</description>
-  <name>Apache UIMA Ruta: ${project.artifactId}</name>
-
-  <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>
-
-  <dependencies>
-
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-typesystem</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-core</artifactId>
-      <version>${uimaVersion}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr-runtime</artifactId>
-      <exclusions>
-        <exclusion>
-          <groupId>org.antlr</groupId>
-          <artifactId>stringtemplate</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <dependency>
-      <groupId>org.htmlparser</groupId>
-      <artifactId>htmlparser</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-text</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-tools</artifactId>
-      <version>${uimaVersion}</version>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-test-util</artifactId>
-      <version>${uimaVersion}</version>
-      <scope>test</scope>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>com.github.ben-manes.caffeine</groupId>
-      <artifactId>caffeine</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimafit-core</artifactId>
-      <!-- Exclude aop stuff, which is not need by uimafit and only introduces a non-asl license -->
-      <exclusions>
-        <exclusion>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-aop</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>aopalliance</groupId>
-          <artifactId>aopalliance</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-
-    <!-- needed for ruta-ep-ide - TODO this should be moved to engine? -->
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-    </dependency>
-
-    <!-- needed for ruta-ep-textruler/ruta-ep-addons - TODO this should be moved to engine? -->
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-math3</artifactId>
-    </dependency>
-
-    <dependency>
-      <groupId>junit</groupId>
-      <artifactId>junit</artifactId>
-      <scope>test</scope>
-    </dependency>
-    
-<!--     <dependency> -->
-<!--       <groupId>org.apache.uima</groupId> -->
-<!--       <artifactId>uimafit-junit</artifactId> -->
-<!--       <version>${uimafit-version}</version> -->
-<!--       <scope>test</scope> -->
-<!--       Exclude aop stuff, which is not need by uimafit and only introduces a non-asl license -->
-<!--       <exclusions> -->
-<!--         <exclusion> -->
-<!--           <groupId>org.springframework</groupId> -->
-<!--           <artifactId>spring-aop</artifactId> -->
-<!--         </exclusion> -->
-<!--         <exclusion> -->
-<!--           <groupId>aopalliance</groupId> -->
-<!--           <artifactId>aopalliance</artifactId> -->
-<!--         </exclusion> -->
-<!--       </exclusions> -->
-<!--     </dependency> -->
-
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-jdk14</artifactId>
-      <scope>test</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <configuration>
-                <excludes combine.children="append">
-                  <exclude>src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.tokens</exclude> <!-- grammar tokens -->
-                  <exclude>src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.tokens</exclude> <!-- grammar tokens -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/**/*.txt</exclude> <!-- test data -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/**/*.ruta</exclude> <!-- test data -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/action/*.*</exclude> <!-- test data -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/table2.csv</exclude> <!-- test data -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/resource/test_csvfile.csv</exclude> <!-- test data -->
-                  <exclude>src/test/resources/org/apache/uima/ruta/engine/*.html</exclude> <!-- test data -->
-                  <exclude>src/test/resources/META-INF/org.apache.uima.fit/types.txt</exclude> <!-- test data -->
-                  <exclude>src/main/resources/META-INF/org.apache.uima.fit/*.txt</exclude>
-                  <exclude>input/**</exclude> <!-- temp test data -->
-                  <exclude>TypeSystem.xml</exclude> <!-- temp test data -->
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence
-          on the Maven build itself. -->
-        <plugin>
-          <groupId>org.eclipse.m2e</groupId>
-          <artifactId>lifecycle-mapping</artifactId>
-          <version>1.0.0</version>
-          <configuration>
-            <lifecycleMappingMetadata>
-              <pluginExecutions>
-                <pluginExecution>
-                  <pluginExecutionFilter>
-                    <groupId>de.jflex</groupId>
-                    <artifactId>jflex-maven-plugin</artifactId>
-                    <versionRange>[1.6.1,)</versionRange>
-                    <goals>
-                      <goal>generate</goal>
-                    </goals>
-                  </pluginExecutionFilter>
-                  <action>
-                    <execute />
-                  </action>
-                </pluginExecution>
-              </pluginExecutions>
-            </lifecycleMappingMetadata>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <resources>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-    </resources>
-    <plugins>
-      <!-- generate java code for antlr grammars -->
-      <plugin>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr3-maven-plugin</artifactId>
-        <version>3.5.2</version>
-        <executions>
-          <execution>
-            <id>run antlr</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>antlr</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>de.jflex</groupId>
-        <artifactId>jflex-maven-plugin</artifactId>
-        <version>1.6.1</version>
-        <executions>
-          <execution>
-            <goals>
-              <goal>generate</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>add-antlr-source</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>${basedir}/target/generated-sources/antlr3
-                </source>
-              </sources>
-            </configuration>
-          </execution>
-          <execution>
-            <id>add-jflex-source</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>${basedir}/target/generated-sources/jflex
-                </source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-surefire-plugin</artifactId>
-        <configuration>
-          <argLine>-Xmx650M</argLine>
-        </configuration>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-javadoc-plugin</artifactId>
-        <configuration>
-          <!-- Exclude generated jcas classes -->
-          <sourceFileExcludes>
-            <sourceFileExclude>**/org/apache/uima/ruta/type/*.java</sourceFileExclude>
-          </sourceFileExcludes>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
+<?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>
+  <artifactId>ruta-core</artifactId>
+
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-parent/pom.xml</relativePath>
+  </parent>
+
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+    <postNoticeText>${uniWueNoticeText}</postNoticeText>
+  </properties>
+
+  <url>${uimaWebsiteUrl}</url>
+  <description>The core implementation of the UIMA Ruta rule engine.</description>
+  <name>Apache UIMA Ruta: ${project.artifactId}</name>
+
+  <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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-typesystem</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-core</artifactId>
+      <version>${uimaVersion}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.antlr</groupId>
+      <artifactId>antlr-runtime</artifactId>
+      <exclusions>
+        <exclusion>
+          <groupId>org.antlr</groupId>
+          <artifactId>stringtemplate</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <dependency>
+      <groupId>org.htmlparser</groupId>
+      <artifactId>htmlparser</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-text</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-tools</artifactId>
+      <version>${uimaVersion}</version>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-test-util</artifactId>
+      <version>${uimaVersion}</version>
+      <scope>test</scope>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>com.github.ben-manes.caffeine</groupId>
+      <artifactId>caffeine</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimafit-core</artifactId>
+      <!-- Exclude aop stuff, which is not need by uimafit and only introduces a non-asl license -->
+      <exclusions>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>spring-aop</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>aopalliance</groupId>
+          <artifactId>aopalliance</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+
+    <!-- needed for ruta-ep-ide - TODO this should be moved to engine? -->
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+    </dependency>
+
+    <!-- needed for ruta-ep-textruler/ruta-ep-addons - TODO this should be moved to engine? -->
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-math3</artifactId>
+    </dependency>
+
+    <dependency>
+      <groupId>junit</groupId>
+      <artifactId>junit</artifactId>
+      <scope>test</scope>
+    </dependency>
+    
+<!--     <dependency> -->
+<!--       <groupId>org.apache.uima</groupId> -->
+<!--       <artifactId>uimafit-junit</artifactId> -->
+<!--       <version>${uimafit-version}</version> -->
+<!--       <scope>test</scope> -->
+<!--       Exclude aop stuff, which is not need by uimafit and only introduces a non-asl license -->
+<!--       <exclusions> -->
+<!--         <exclusion> -->
+<!--           <groupId>org.springframework</groupId> -->
+<!--           <artifactId>spring-aop</artifactId> -->
+<!--         </exclusion> -->
+<!--         <exclusion> -->
+<!--           <groupId>aopalliance</groupId> -->
+<!--           <artifactId>aopalliance</artifactId> -->
+<!--         </exclusion> -->
+<!--       </exclusions> -->
+<!--     </dependency> -->
+
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-jdk14</artifactId>
+      <scope>test</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+              <configuration>
+                <excludes combine.children="append">
+                  <exclude>src/main/antlr3/org/apache/uima/ruta/parser/RutaLexer.tokens</exclude> <!-- grammar tokens -->
+                  <exclude>src/main/antlr3/org/apache/uima/ruta/parser/RutaParser.tokens</exclude> <!-- grammar tokens -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/**/*.txt</exclude> <!-- test data -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/**/*.ruta</exclude> <!-- test data -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/action/*.*</exclude> <!-- test data -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/table2.csv</exclude> <!-- test data -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/resource/test_csvfile.csv</exclude> <!-- test data -->
+                  <exclude>src/test/resources/org/apache/uima/ruta/engine/*.html</exclude> <!-- test data -->
+                  <exclude>src/test/resources/META-INF/org.apache.uima.fit/types.txt</exclude> <!-- test data -->
+                  <exclude>src/main/resources/META-INF/org.apache.uima.fit/*.txt</exclude>
+                  <exclude>input/**</exclude> <!-- temp test data -->
+                  <exclude>TypeSystem.xml</exclude> <!-- temp test data -->
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+        <!--This plugin's configuration is used to store Eclipse m2e settings only. It has no influence
+          on the Maven build itself. -->
+        <plugin>
+          <groupId>org.eclipse.m2e</groupId>
+          <artifactId>lifecycle-mapping</artifactId>
+          <version>1.0.0</version>
+          <configuration>
+            <lifecycleMappingMetadata>
+              <pluginExecutions>
+                <pluginExecution>
+                  <pluginExecutionFilter>
+                    <groupId>de.jflex</groupId>
+                    <artifactId>jflex-maven-plugin</artifactId>
+                    <versionRange>[1.6.1,)</versionRange>
+                    <goals>
+                      <goal>generate</goal>
+                    </goals>
+                  </pluginExecutionFilter>
+                  <action>
+                    <execute />
+                  </action>
+                </pluginExecution>
+              </pluginExecutions>
+            </lifecycleMappingMetadata>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <resources>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+    </resources>
+    <plugins>
+      <!-- generate java code for antlr grammars -->
+      <plugin>
+        <groupId>org.antlr</groupId>
+        <artifactId>antlr3-maven-plugin</artifactId>
+        <version>3.5.2</version>
+        <executions>
+          <execution>
+            <id>run antlr</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>antlr</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>de.jflex</groupId>
+        <artifactId>jflex-maven-plugin</artifactId>
+        <version>1.6.1</version>
+        <executions>
+          <execution>
+            <goals>
+              <goal>generate</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>add-antlr-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${basedir}/target/generated-sources/antlr3
+                </source>
+              </sources>
+            </configuration>
+          </execution>
+          <execution>
+            <id>add-jflex-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${basedir}/target/generated-sources/jflex
+                </source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-surefire-plugin</artifactId>
+        <configuration>
+          <argLine>-Xmx650M</argLine>
+        </configuration>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-javadoc-plugin</artifactId>
+        <configuration>
+          <!-- Exclude generated jcas classes -->
+          <sourceFileExcludes>
+            <sourceFileExclude>**/org/apache/uima/ruta/type/*.java</sourceFileExclude>
+          </sourceFileExcludes>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
 </project>
\ No newline at end of file
diff --git a/ruta-docbook/pom.xml b/ruta-docbook/pom.xml
index 7825ca6..a3b1fad 100644
--- a/ruta-docbook/pom.xml
+++ b/ruta-docbook/pom.xml
@@ -1,46 +1,46 @@
-<?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>
-  <artifactId>ruta-docbook</artifactId>
-  <packaging>pom</packaging>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-parent/pom.xml</relativePath>
-  </parent>
-  <name>Apache UIMA Ruta Documentation</name>
-  <url>${uimaWebsiteUrl}</url>
-
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-    <bookNameRoot>tools.ruta.book</bookNameRoot>
-    <maven.deploy.skip>true</maven.deploy.skip>
-  </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>
-
+<?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>
+  <artifactId>ruta-docbook</artifactId>
+  <packaging>pom</packaging>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-parent/pom.xml</relativePath>
+  </parent>
+  <name>Apache UIMA Ruta Documentation</name>
+  <url>${uimaWebsiteUrl}</url>
+
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+    <bookNameRoot>tools.ruta.book</bookNameRoot>
+    <maven.deploy.skip>true</maven.deploy.skip>
+  </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>ruta-3.2.0</tag>
+  </scm>
+
 </project>
\ No newline at end of file
diff --git a/ruta-eclipse-feature/feature.xml b/ruta-eclipse-feature/feature.xml
index 2f4ec3b..13f621b 100644
--- a/ruta-eclipse-feature/feature.xml
+++ b/ruta-eclipse-feature/feature.xml
@@ -20,7 +20,7 @@
 <feature
       id="org.apache.uima.ruta.feature"
       label="UIMA Ruta Workbench"
-      version="3.2.0.qualifier"
+      version="3.2.0"
       provider-name="Apache Software Foundation">
 
    <description url="http://uima.apache.org">
diff --git a/ruta-eclipse-feature/pom.xml b/ruta-eclipse-feature/pom.xml
index 92083e5..d73d938 100644
--- a/ruta-eclipse-feature/pom.xml
+++ b/ruta-eclipse-feature/pom.xml
@@ -1,80 +1,80 @@
-<?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.uima</groupId>
-    <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-parent/pom.xml</relativePath>
-  </parent>
-
-  <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>
-  <url>${uimaWebsiteUrl}</url>
-
-  <properties>
-    <postNoticeText>${uniWueNoticeText}</postNoticeText>
-    <!-- https://issues.apache.org/jira/browse/UIMA-6462 -->
-    <maven.deploy.skip>true</maven.deploy.skip>
-  </properties>
-
-  <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>
+<?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.uima</groupId>
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-parent/pom.xml</relativePath>
+  </parent>
+
+  <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>
+  <url>${uimaWebsiteUrl}</url>
+
+  <properties>
+    <postNoticeText>${uniWueNoticeText}</postNoticeText>
+    <!-- https://issues.apache.org/jira/browse/UIMA-6462 -->
+    <maven.deploy.skip>true</maven.deploy.skip>
+  </properties>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-addons</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-caseditor</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-core-ext</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-engine</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide-ui</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-textruler</artifactId>
+      <version>3.2.0</version>
+    </dependency>
+  </dependencies>
 </project>
\ No newline at end of file
diff --git a/ruta-eclipse-update-site/category.xml b/ruta-eclipse-update-site/category.xml
index d6903a7..21a660c 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.qualifier.jar" id="org.apache.uima.ruta.feature" version="3.2.0.qualifier">
+   <feature url="features/org.apache.uima.ruta.feature_3.2.0.jar" id="org.apache.uima.ruta.feature" version="3.2.0">
       <category name="apache-uima-ruta"/>
    </feature>
    <category-def name="apache-uima-ruta" label="Apache UIMA Ruta">
diff --git a/ruta-eclipse-update-site/pom.xml b/ruta-eclipse-update-site/pom.xml
index b86a991..49d790d 100644
--- a/ruta-eclipse-update-site/pom.xml
+++ b/ruta-eclipse-update-site/pom.xml
@@ -1,110 +1,110 @@
-<?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.uima</groupId>
-    <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-parent/pom.xml</relativePath>
-  </parent>
-
-  <artifactId>ruta-eclipse-update-site</artifactId>
-  <packaging>eclipse-repository</packaging>
-
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <description>The UIMA Ruta Eclipse update site</description>
-  <url>${uimaWebsiteUrl}</url>
-
-  <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>
-    <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.eclipse.tycho</groupId>
-        <artifactId>tycho-p2-repository-plugin</artifactId>
-        <version>${tycho-version}</version>
-        <configuration>
-          <skipArchive>true</skipArchive>
-        </configuration>
-      </plugin>
-    </plugins>
-  </build>
-
-  <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>
+<?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.uima</groupId>
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-parent/pom.xml</relativePath>
+  </parent>
+
+  <artifactId>ruta-eclipse-update-site</artifactId>
+  <packaging>eclipse-repository</packaging>
+
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <description>The UIMA Ruta Eclipse update site</description>
+  <url>${uimaWebsiteUrl}</url>
+
+  <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>ruta-3.2.0</tag>
+  </scm>
+  
+  <properties>
+    <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</version>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <plugins>
+      <plugin>
+        <groupId>org.eclipse.tycho</groupId>
+        <artifactId>tycho-p2-repository-plugin</artifactId>
+        <version>${tycho-version}</version>
+        <configuration>
+          <skipArchive>true</skipArchive>
+        </configuration>
+      </plugin>
+    </plugins>
+  </build>
+
+  <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-ep-addons/pom.xml b/ruta-ep-addons/pom.xml
index de38b50..8633b7b 100644
--- a/ruta-ep-addons/pom.xml
+++ b/ruta-ep-addons/pom.xml
@@ -1,228 +1,228 @@
-<?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>
-  <artifactId>ruta-ep-addons</artifactId>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
-  </parent>
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-  </properties>
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <description>Provides addons for the UIMA Ruta Workbench in Eclipse</description>
-
-  <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>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-core</artifactId>
-      <version>${uimaVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-caseditor</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-ep-cas-editor-ide</artifactId>
-      <version>${uimaVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-ep-cas-editor</artifactId>
-      <version>${uimaVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide-ui</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.app</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui</artifactId>
-      <version>[3.111.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.ide</artifactId>
-      <version>[3.14.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.resources</artifactId>
-      <version>[3.13.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
-      <version>[3.11.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.jobs</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.emf.ecore</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jface.text</artifactId>
-      <version>[3.15.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.preferences</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.debug.ui</artifactId>
-      <version>[3.1.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>plugin.xml</include>
-          <include>icons/**/*.*</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/readme_src</directory>
-      </resource>
-    </resources>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <configuration>
-                <excludes combine.children="append">
-                  <exclude>src/test/resources/ManualTests/*</exclude> <!-- test data -->
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <Bundle-SymbolicName>org.apache.uima.ruta.addons;singleton:=true</Bundle-SymbolicName>
-                <Bundle-Activator>org.apache.uima.ruta.addons.RutaAddonsPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
-                <_nouses>true</_nouses>
-                <Export-Package>
-                  org.apache.uima.ruta.*
-                </Export-Package>
-                <Require-Bundle>
-                  org.eclipse.ui,
-                  org.eclipse.core.runtime,
-                  org.apache.uima.runtime,
-                  org.apache.uima.ruta.engine,
-                  org.eclipse.core.resources,
-                  org.apache.uima.ruta.ide,
-                  org.apache.uima.ruta.ide.ui,
-                  org.eclipse.ui.ide,
-                  org.eclipse.dltk.core,
-                  org.eclipse.jface.text,
-                  org.eclipse.dltk.ui,
-                  org.eclipse.ui.editors,
-                  org.eclipse.dltk.launching,
-                  org.eclipse.debug.ui,
-                  org.apache.uima.caseditor,
-                  org.apache.uima.ruta.caseditor,
-                  org.apache.uima.caseditor.ide
-                </Require-Bundle>
-                <Import-Package>
-                </Import-Package>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
+<?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>
+  <artifactId>ruta-ep-addons</artifactId>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-ep-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
+  </parent>
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+  </properties>
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <description>Provides addons for the UIMA Ruta Workbench in Eclipse</description>
+
+  <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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-core</artifactId>
+      <version>${uimaVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-caseditor</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-ep-cas-editor-ide</artifactId>
+      <version>${uimaVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-ep-cas-editor</artifactId>
+      <version>${uimaVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide-ui</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.app</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui</artifactId>
+      <version>[3.111.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.ide</artifactId>
+      <version>[3.14.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.resources</artifactId>
+      <version>[3.13.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
+      <version>[3.11.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.jobs</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.emf.ecore</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jface.text</artifactId>
+      <version>[3.15.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.preferences</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.debug.ui</artifactId>
+      <version>[3.1.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <includes>
+          <include>plugin.xml</include>
+          <include>icons/**/*.*</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+      <resource>
+        <directory>src/main/readme_src</directory>
+      </resource>
+    </resources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+              <configuration>
+                <excludes combine.children="append">
+                  <exclude>src/test/resources/ManualTests/*</exclude> <!-- test data -->
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>org.apache.uima.ruta.addons;singleton:=true</Bundle-SymbolicName>
+                <Bundle-Activator>org.apache.uima.ruta.addons.RutaAddonsPlugin</Bundle-Activator>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                <_nouses>true</_nouses>
+                <Export-Package>
+                  org.apache.uima.ruta.*
+                </Export-Package>
+                <Require-Bundle>
+                  org.eclipse.ui,
+                  org.eclipse.core.runtime,
+                  org.apache.uima.runtime,
+                  org.apache.uima.ruta.engine,
+                  org.eclipse.core.resources,
+                  org.apache.uima.ruta.ide,
+                  org.apache.uima.ruta.ide.ui,
+                  org.eclipse.ui.ide,
+                  org.eclipse.dltk.core,
+                  org.eclipse.jface.text,
+                  org.eclipse.dltk.ui,
+                  org.eclipse.ui.editors,
+                  org.eclipse.dltk.launching,
+                  org.eclipse.debug.ui,
+                  org.apache.uima.caseditor,
+                  org.apache.uima.ruta.caseditor,
+                  org.apache.uima.caseditor.ide
+                </Require-Bundle>
+                <Import-Package>
+                </Import-Package>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
 </project>
\ No newline at end of file
diff --git a/ruta-ep-caseditor/pom.xml b/ruta-ep-caseditor/pom.xml
index ca4e306..254be4a 100644
--- a/ruta-ep-caseditor/pom.xml
+++ b/ruta-ep-caseditor/pom.xml
@@ -1,190 +1,190 @@
-<?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>
-  <artifactId>ruta-ep-caseditor</artifactId>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
-  </parent>
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-  </properties>
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <description>Provides additional views for the CAS Editor</description>
-
-  <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>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimaj-ep-cas-editor</artifactId>
-      <version>${uimaVersion}</version>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.runtime</artifactId>
-      <version>[3.15.100,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.resources</artifactId>
-      <version>[3.13.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui</artifactId>
-      <version>[3.111.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.ide</artifactId>
-      <version>[3.14.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.views</artifactId>
-      <version>[3.9.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
-      <version>[3.11.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.workbench</artifactId>
-      <version>[3.112.100,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jface.text</artifactId>
-      <version>[3.15.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.app</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>plugin.xml</include>
-          <include>icons/**/*.*</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/readme_src</directory>
-      </resource>
-    </resources>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <configuration>
-                <excludes combine.children="append">
-                  <exclude>src/test/resources/ManualTests/*</exclude> <!-- test data -->
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <Bundle-SymbolicName>org.apache.uima.ruta.caseditor;singleton:=true</Bundle-SymbolicName>
-                <Bundle-Activator>org.apache.uima.ruta.caseditor.RutaCasEditorPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
-                <_nouses>true</_nouses>
-                <Export-Package>
-                  org.apache.uima.ruta.caseditor.*
-                </Export-Package>
-                <Require-Bundle>
-                  org.eclipse.jface.text,
-                  org.eclipse.text,
-                  org.eclipse.ui.editors,
-                  org.eclipse.ui.workbench.texteditor,
-                  org.eclipse.ui,
-                  org.eclipse.ui.ide,
-                  org.eclipse.ui.workbench,
-                  org.eclipse.core.runtime,
-                  org.eclipse.core.resources,
-                  org.apache.uima.caseditor,
-                  org.apache.uima.caseditor.ide,
-                  org.junit4;bundle-version="4.5.0";resolution:=optional
-                </Require-Bundle>
-                <Import-Package>
-                  !org.eclipse.ui,
-                  !org.eclipse.ui.part,
-                  !org.eclipse.core.runtime,
-                  !org.osgi.framework,
-                  !org.apache.uima.caseditor.editor,
-                  *
-                </Import-Package>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-
-    </plugins>
-  </build>
+<?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>
+  <artifactId>ruta-ep-caseditor</artifactId>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-ep-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
+  </parent>
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+  </properties>
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <description>Provides additional views for the CAS Editor</description>
+
+  <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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimaj-ep-cas-editor</artifactId>
+      <version>${uimaVersion}</version>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.runtime</artifactId>
+      <version>[3.15.100,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.resources</artifactId>
+      <version>[3.13.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui</artifactId>
+      <version>[3.111.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.ide</artifactId>
+      <version>[3.14.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.views</artifactId>
+      <version>[3.9.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
+      <version>[3.11.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.workbench</artifactId>
+      <version>[3.112.100,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jface.text</artifactId>
+      <version>[3.15.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.app</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <includes>
+          <include>plugin.xml</include>
+          <include>icons/**/*.*</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+      <resource>
+        <directory>src/main/readme_src</directory>
+      </resource>
+    </resources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+              <configuration>
+                <excludes combine.children="append">
+                  <exclude>src/test/resources/ManualTests/*</exclude> <!-- test data -->
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>org.apache.uima.ruta.caseditor;singleton:=true</Bundle-SymbolicName>
+                <Bundle-Activator>org.apache.uima.ruta.caseditor.RutaCasEditorPlugin</Bundle-Activator>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                <_nouses>true</_nouses>
+                <Export-Package>
+                  org.apache.uima.ruta.caseditor.*
+                </Export-Package>
+                <Require-Bundle>
+                  org.eclipse.jface.text,
+                  org.eclipse.text,
+                  org.eclipse.ui.editors,
+                  org.eclipse.ui.workbench.texteditor,
+                  org.eclipse.ui,
+                  org.eclipse.ui.ide,
+                  org.eclipse.ui.workbench,
+                  org.eclipse.core.runtime,
+                  org.eclipse.core.resources,
+                  org.apache.uima.caseditor,
+                  org.apache.uima.caseditor.ide,
+                  org.junit4;bundle-version="4.5.0";resolution:=optional
+                </Require-Bundle>
+                <Import-Package>
+                  !org.eclipse.ui,
+                  !org.eclipse.ui.part,
+                  !org.eclipse.core.runtime,
+                  !org.osgi.framework,
+                  !org.apache.uima.caseditor.editor,
+                  *
+                </Import-Package>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+
+    </plugins>
+  </build>
 </project>
\ No newline at end of file
diff --git a/ruta-ep-core-ext/pom.xml b/ruta-ep-core-ext/pom.xml
index 2220dfb..718551f 100644
--- a/ruta-ep-core-ext/pom.xml
+++ b/ruta-ep-core-ext/pom.xml
@@ -24,7 +24,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-ep-parent/pom.xml</relativePath>
   </parent>
   <properties>
@@ -36,7 +36,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <dependencies>
diff --git a/ruta-ep-engine/pom.xml b/ruta-ep-engine/pom.xml
index dcca55e..15d5ae1 100644
--- a/ruta-ep-engine/pom.xml
+++ b/ruta-ep-engine/pom.xml
@@ -1,362 +1,362 @@
-<?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>
-  <artifactId>ruta-ep-engine</artifactId>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-parent/pom.xml</relativePath>
-  </parent>
-
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <description>Provides the UIMA Ruta engine to other Eclipse 
-    plugins for their use</description>
-
-  <properties>
-    <postNoticeText>${uniWueNoticeText}
-
-      This product contains htmlparser libraries (http://htmlparser.sourceforge.net/),
-      licensed under the Common Public License.
-    </postNoticeText>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-  </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>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-typesystem</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-basic-type</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core-ext</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.antlr</groupId>
-      <artifactId>antlr-runtime</artifactId>
-      <scope>compile</scope>
-      <exclusions>
-        <exclusion>
-          <groupId>org.antlr</groupId>
-          <artifactId>stringtemplate</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.htmlparser</groupId>
-      <artifactId>htmlparser</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-collections4</artifactId>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-text</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>uimafit-core</artifactId>
-      <scope>compile</scope>
-      <!-- Exclude aop stuff, which is not need by uimafit
-        and only introduces a non-asl license -->
-      <exclusions>
-        <exclusion>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-aop</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>aopalliance</groupId>
-          <artifactId>aopalliance</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>commons-io</groupId>
-      <artifactId>commons-io</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-math3</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>commons-logging</groupId>
-      <artifactId>commons-logging-api</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-core</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-context</artifactId>
-      <scope>compile</scope>
-      <!-- Exclude aop stuff, which is not need by uimafit
-        and only introduces a non-asl license -->
-      <exclusions>
-        <exclusion>
-          <groupId>org.springframework</groupId>
-          <artifactId>spring-aop</artifactId>
-        </exclusion>
-        <exclusion>
-          <groupId>aopalliance</groupId>
-          <artifactId>aopalliance</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-expression</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.springframework</groupId>
-      <artifactId>spring-beans</artifactId>
-      <scope>compile</scope>
-    </dependency>
-    
-    <dependency>
-      <groupId>com.github.ben-manes.caffeine</groupId>
-      <artifactId>caffeine</artifactId>
-    </dependency>
-    
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-simple</artifactId>
-      <version>1.7.30</version>
-    </dependency>
-    <dependency>
-      <groupId>org.slf4j</groupId>
-      <artifactId>slf4j-api</artifactId>
-      <version>1.7.30</version>
-    </dependency>
-
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>src/main/readme_src</directory>
-      </resource>
-    </resources>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <_nouses>true</_nouses>
-                <_exportcontents>
-                  org.apache.uima.ruta,
-                  org.apache.uima.ruta.action,
-                  org.apache.uima.ruta.condition,
-                  org.apache.uima.ruta.constraint,
-                  org.apache.uima.ruta.descriptor,
-                  org.apache.uima.ruta.cache,
-                  org.apache.uima.ruta.engine,
-                  org.apache.uima.ruta.expression,
-                  org.apache.uima.ruta.expression.annotation,
-                  org.apache.uima.ruta.expression.bool,
-                  org.apache.uima.ruta.expression.feature,
-                  org.apache.uima.ruta.expression.list,
-                  org.apache.uima.ruta.expression.number,
-                  org.apache.uima.ruta.expression.resource,
-                  org.apache.uima.ruta.expression.string,
-                  org.apache.uima.ruta.expression.type,
-                  org.apache.uima.ruta.extensions,
-                  org.apache.uima.ruta.parser,
-                  org.apache.uima.ruta.resource,
-                  org.apache.uima.ruta.rule,
-                  org.apache.uima.ruta.rule.quantifier,
-                  org.apache.uima.ruta.seed,
-                  org.apache.uima.ruta.type,
-                  org.apache.uima.ruta.utils,
-                  org.apache.uima.ruta.verbalize,
-                  org.apache.uima.ruta.visitor,
-                  org.apache.uima.ruta.block.fst,
-                  org.apache.uima.ruta.block,
-                  org.apache.uima.ruta.string.*,
-                  org.antlr.runtime,
-                  org.antlr.runtime.debug,
-                  org.antlr.runtime.misc,
-                  org.antlr.runtime.tree,
-                  org.htmlparser,
-                  org.htmlparser.*,
-                  org.apache.commons.text.*,
-                  org.apache.commons.lang3.*,
-                  org.apache.commons.logging,
-                  org.apache.commons.io.*,
-                  org.apache.uima.fit.*,
-                  org.apache.commons.math3.*,
-                  org.springframework.*
-                </_exportcontents>
-
-                <Import-Package>
-                  !org.apache.uima.fit.*,
-                  !bsh, 
-                  !com.sun.net.httpserver,
-                  !edu.emory.mathcs.backport.java.util.concurrent,
-                  !groovy.lang, 
-                  !javax.annotation,
-                  !javax.ejb,
-                  !javax.el, 
-                  !javax.inject,
-                  !javax.interceptor, 
-                  !javax.jms,
-                  !javax.management, 
-                  !javax.management.modelmbean, !javax.management.openmbean,
-                  !javax.management.remote,
-                  !javax.naming, 
-                  !javax.persistence.spi, !javax.rmi,
-                  !javax.servlet,
-                  !javax.swing, 
-                  !javax.swing.border,
-                  !javax.swing.event,
-                  !javax.swing.text, 
-                  !javax.swing.tree, 
-                  !javax.validation,
-                  !javax.validation.bootstrap,
-                  !javax.validation.metadata, 
-                  !javax.xml.namespace,
-                  !javax.xml.parsers, 
-                  !javax.xml.stream,
-                  !javax.xml.stream.events,
-                  !javax.xml.stream.util,
-                  !javax.xml.transform, 
-                  !javax.xml.transform.sax,
-                  !javax.xml.transform.stax,
-                  !javax.xml.ws, 
-                  !javax.xml.*, 
-                  !joptsimple,
-                  !net.sf.cglib.*, 
-                  !net.sf.ehcache.*,
-                  !org.antlr.stringtemplate,
-                  !org.apache.avalon.framework.logger,
-                  !org.apache.log, 
-                  !org.apache.log4j,
-                  !org.apache.log4j.xml,
-                  !org.aspectj.*, 
-                  !org.codehaus.groovy.*, 
-                  !org.hibernate.* ,
-                  !org.joda.*, 
-                  !org.jruby.*, 
-                  !org.omg.CORBA,
-                  !org.springframework.instrument,
-                  !org.w3c.dom, 
-                  !org.xml.sax, 
-                  !org.xml.sax.ext, 
-                  !org.xml.sax.helpers,
-                  !org.aopalliance.*, 
-                  !org.springframework.aop.*,
-                  org.apache.uima.*
-                </Import-Package>
-                <!-- -->
-                <Require-Bundle>org.apache.uima.runtime</Require-Bundle>
-                <!-- <Import-Package>org.apache.uima, org.apache.uima.analysis_component,
-                  org.apache.uima.analysis_engine, org.apache.uima.analysis_engine.annotator,
-                  org.apache.uima.analysis_engine.asb, org.apache.uima.analysis_engine.asb.impl,
-                  org.apache.uima.analysis_engine.impl, org.apache.uima.analysis_engine.impl.compatibility,
-                  org.apache.uima.analysis_engine.metadata, org.apache.uima.analysis_engine.metadata.impl,
-                  org.apache.uima.analysis_engine.service.impl, org.apache.uima.cas, org.apache.uima.cas.admin,
-                  org.apache.uima.cas.impl, org.apache.uima.cas.text, org.apache.uima.cas_data,
-                  org.apache.uima.cas_data.impl, org.apache.uima.flow, org.apache.uima.flow.impl,
-                  org.apache.uima.impl, org.apache.uima.internal.util, org.apache.uima.internal.util.rb_trees,
-                  org.apache.uima.internal.util.text, org.apache.uima.jcas, org.apache.uima.jcas.cas,
-                  org.apache.uima.jcas.impl, org.apache.uima.jcas.tcas, org.apache.uima.resource,
-                  org.apache.uima.resource.impl, org.apache.uima.resource.metadata, org.apache.uima.resource.metadata.impl,
-                  org.apache.uima.resource.service.impl, org.apache.uima.search, org.apache.uima.search.impl,
-                  org.apache.uima.uimacpp, org.apache.uima.util, org.apache.uima.util.impl,
-                  </Import-Package> -->
-                <Embed-Dependency>*;scope=compile</Embed-Dependency>
-                <!-- <Embed-Transitive>true</Embed-Transitive> -->
-                <Bundle-SymbolicName>org.apache.uima.ruta.engine;singleton:=true</Bundle-SymbolicName>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
-                <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
-                <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
-                <Eclipse-RegisterBuddy>org.apache.uima.runtime</Eclipse-RegisterBuddy>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <artifactId>maven-dependency-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copyDependentJars</id>
-            <goals>
-              <goal>copy-dependencies</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.build.outputDirectory}</outputDirectory>
-              <excludeArtifactIds>uimaj-core,uimaj-tools,uimaj-document-annotation,uimaj-adapter-vinci,jVinci,uimaj-cpe,tools,aopalliance,spring-aop,stringtemplate,antlr</excludeArtifactIds>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
+<?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>
+  <artifactId>ruta-ep-engine</artifactId>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-parent/pom.xml</relativePath>
+  </parent>
+
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <description>Provides the UIMA Ruta engine to other Eclipse 
+    plugins for their use</description>
+
+  <properties>
+    <postNoticeText>${uniWueNoticeText}
+
+      This product contains htmlparser libraries (http://htmlparser.sourceforge.net/),
+      licensed under the Common Public License.
+    </postNoticeText>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+  </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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-typesystem</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-basic-type</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core-ext</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.antlr</groupId>
+      <artifactId>antlr-runtime</artifactId>
+      <scope>compile</scope>
+      <exclusions>
+        <exclusion>
+          <groupId>org.antlr</groupId>
+          <artifactId>stringtemplate</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.htmlparser</groupId>
+      <artifactId>htmlparser</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-collections4</artifactId>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-text</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>uimafit-core</artifactId>
+      <scope>compile</scope>
+      <!-- Exclude aop stuff, which is not need by uimafit
+        and only introduces a non-asl license -->
+      <exclusions>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>spring-aop</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>aopalliance</groupId>
+          <artifactId>aopalliance</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>commons-io</groupId>
+      <artifactId>commons-io</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-math3</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>commons-logging</groupId>
+      <artifactId>commons-logging-api</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-core</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-context</artifactId>
+      <scope>compile</scope>
+      <!-- Exclude aop stuff, which is not need by uimafit
+        and only introduces a non-asl license -->
+      <exclusions>
+        <exclusion>
+          <groupId>org.springframework</groupId>
+          <artifactId>spring-aop</artifactId>
+        </exclusion>
+        <exclusion>
+          <groupId>aopalliance</groupId>
+          <artifactId>aopalliance</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-expression</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.springframework</groupId>
+      <artifactId>spring-beans</artifactId>
+      <scope>compile</scope>
+    </dependency>
+    
+    <dependency>
+      <groupId>com.github.ben-manes.caffeine</groupId>
+      <artifactId>caffeine</artifactId>
+    </dependency>
+    
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-simple</artifactId>
+      <version>1.7.30</version>
+    </dependency>
+    <dependency>
+      <groupId>org.slf4j</groupId>
+      <artifactId>slf4j-api</artifactId>
+      <version>1.7.30</version>
+    </dependency>
+
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>src/main/readme_src</directory>
+      </resource>
+    </resources>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <_nouses>true</_nouses>
+                <_exportcontents>
+                  org.apache.uima.ruta,
+                  org.apache.uima.ruta.action,
+                  org.apache.uima.ruta.condition,
+                  org.apache.uima.ruta.constraint,
+                  org.apache.uima.ruta.descriptor,
+                  org.apache.uima.ruta.cache,
+                  org.apache.uima.ruta.engine,
+                  org.apache.uima.ruta.expression,
+                  org.apache.uima.ruta.expression.annotation,
+                  org.apache.uima.ruta.expression.bool,
+                  org.apache.uima.ruta.expression.feature,
+                  org.apache.uima.ruta.expression.list,
+                  org.apache.uima.ruta.expression.number,
+                  org.apache.uima.ruta.expression.resource,
+                  org.apache.uima.ruta.expression.string,
+                  org.apache.uima.ruta.expression.type,
+                  org.apache.uima.ruta.extensions,
+                  org.apache.uima.ruta.parser,
+                  org.apache.uima.ruta.resource,
+                  org.apache.uima.ruta.rule,
+                  org.apache.uima.ruta.rule.quantifier,
+                  org.apache.uima.ruta.seed,
+                  org.apache.uima.ruta.type,
+                  org.apache.uima.ruta.utils,
+                  org.apache.uima.ruta.verbalize,
+                  org.apache.uima.ruta.visitor,
+                  org.apache.uima.ruta.block.fst,
+                  org.apache.uima.ruta.block,
+                  org.apache.uima.ruta.string.*,
+                  org.antlr.runtime,
+                  org.antlr.runtime.debug,
+                  org.antlr.runtime.misc,
+                  org.antlr.runtime.tree,
+                  org.htmlparser,
+                  org.htmlparser.*,
+                  org.apache.commons.text.*,
+                  org.apache.commons.lang3.*,
+                  org.apache.commons.logging,
+                  org.apache.commons.io.*,
+                  org.apache.uima.fit.*,
+                  org.apache.commons.math3.*,
+                  org.springframework.*
+                </_exportcontents>
+
+                <Import-Package>
+                  !org.apache.uima.fit.*,
+                  !bsh, 
+                  !com.sun.net.httpserver,
+                  !edu.emory.mathcs.backport.java.util.concurrent,
+                  !groovy.lang, 
+                  !javax.annotation,
+                  !javax.ejb,
+                  !javax.el, 
+                  !javax.inject,
+                  !javax.interceptor, 
+                  !javax.jms,
+                  !javax.management, 
+                  !javax.management.modelmbean, !javax.management.openmbean,
+                  !javax.management.remote,
+                  !javax.naming, 
+                  !javax.persistence.spi, !javax.rmi,
+                  !javax.servlet,
+                  !javax.swing, 
+                  !javax.swing.border,
+                  !javax.swing.event,
+                  !javax.swing.text, 
+                  !javax.swing.tree, 
+                  !javax.validation,
+                  !javax.validation.bootstrap,
+                  !javax.validation.metadata, 
+                  !javax.xml.namespace,
+                  !javax.xml.parsers, 
+                  !javax.xml.stream,
+                  !javax.xml.stream.events,
+                  !javax.xml.stream.util,
+                  !javax.xml.transform, 
+                  !javax.xml.transform.sax,
+                  !javax.xml.transform.stax,
+                  !javax.xml.ws, 
+                  !javax.xml.*, 
+                  !joptsimple,
+                  !net.sf.cglib.*, 
+                  !net.sf.ehcache.*,
+                  !org.antlr.stringtemplate,
+                  !org.apache.avalon.framework.logger,
+                  !org.apache.log, 
+                  !org.apache.log4j,
+                  !org.apache.log4j.xml,
+                  !org.aspectj.*, 
+                  !org.codehaus.groovy.*, 
+                  !org.hibernate.* ,
+                  !org.joda.*, 
+                  !org.jruby.*, 
+                  !org.omg.CORBA,
+                  !org.springframework.instrument,
+                  !org.w3c.dom, 
+                  !org.xml.sax, 
+                  !org.xml.sax.ext, 
+                  !org.xml.sax.helpers,
+                  !org.aopalliance.*, 
+                  !org.springframework.aop.*,
+                  org.apache.uima.*
+                </Import-Package>
+                <!-- -->
+                <Require-Bundle>org.apache.uima.runtime</Require-Bundle>
+                <!-- <Import-Package>org.apache.uima, org.apache.uima.analysis_component,
+                  org.apache.uima.analysis_engine, org.apache.uima.analysis_engine.annotator,
+                  org.apache.uima.analysis_engine.asb, org.apache.uima.analysis_engine.asb.impl,
+                  org.apache.uima.analysis_engine.impl, org.apache.uima.analysis_engine.impl.compatibility,
+                  org.apache.uima.analysis_engine.metadata, org.apache.uima.analysis_engine.metadata.impl,
+                  org.apache.uima.analysis_engine.service.impl, org.apache.uima.cas, org.apache.uima.cas.admin,
+                  org.apache.uima.cas.impl, org.apache.uima.cas.text, org.apache.uima.cas_data,
+                  org.apache.uima.cas_data.impl, org.apache.uima.flow, org.apache.uima.flow.impl,
+                  org.apache.uima.impl, org.apache.uima.internal.util, org.apache.uima.internal.util.rb_trees,
+                  org.apache.uima.internal.util.text, org.apache.uima.jcas, org.apache.uima.jcas.cas,
+                  org.apache.uima.jcas.impl, org.apache.uima.jcas.tcas, org.apache.uima.resource,
+                  org.apache.uima.resource.impl, org.apache.uima.resource.metadata, org.apache.uima.resource.metadata.impl,
+                  org.apache.uima.resource.service.impl, org.apache.uima.search, org.apache.uima.search.impl,
+                  org.apache.uima.uimacpp, org.apache.uima.util, org.apache.uima.util.impl,
+                  </Import-Package> -->
+                <Embed-Dependency>*;scope=compile</Embed-Dependency>
+                <!-- <Embed-Transitive>true</Embed-Transitive> -->
+                <Bundle-SymbolicName>org.apache.uima.ruta.engine;singleton:=true</Bundle-SymbolicName>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Eclipse-ExtensibleAPI>true</Eclipse-ExtensibleAPI>
+                <!-- <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy> -->
+                <Eclipse-BuddyPolicy>registered</Eclipse-BuddyPolicy>
+                <Eclipse-RegisterBuddy>org.apache.uima.runtime</Eclipse-RegisterBuddy>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <artifactId>maven-dependency-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>copyDependentJars</id>
+            <goals>
+              <goal>copy-dependencies</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.outputDirectory}</outputDirectory>
+              <excludeArtifactIds>uimaj-core,uimaj-tools,uimaj-document-annotation,uimaj-adapter-vinci,jVinci,uimaj-cpe,tools,aopalliance,spring-aop,stringtemplate,antlr</excludeArtifactIds>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
 </project>
\ No newline at end of file
diff --git a/ruta-ep-ide-ui/pom.xml b/ruta-ep-ide-ui/pom.xml
index b220789..9d6d52c 100644
--- a/ruta-ep-ide-ui/pom.xml
+++ b/ruta-ep-ide-ui/pom.xml
@@ -1,299 +1,299 @@
-<?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>
-  <artifactId>ruta-ep-ide-ui</artifactId>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
-  </parent>
-
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <description>Provides the UIMA Ruta development environment for Eclipse</description>
-
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-  </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>
-
-  <dependencies>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.runtime</artifactId>
-      <version>[3.15.100,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.jobs</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.resources</artifactId>
-      <version>[3.13.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.search</artifactId>
-      <version>[3.11.400,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui</artifactId>
-      <version>[3.111.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.ide</artifactId>
-      <version>[3.14.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.views</artifactId>
-      <version>[3.9.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.console</artifactId>
-      <version>[3.8.300,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
-      <version>[3.11.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jface.text</artifactId>
-      <version>[3.15.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.variables</artifactId>
-      <version>[3.4.300,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jdt.launching</artifactId>
-      <version>[3.12.0,4.0.0)</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <!-- 
-            The p2 resolver appears to have trouble with this one and tries to download it with 
-            "tools" as the classifier.
-           -->
-          <groupId>${eclipseP2RepoId}</groupId>
-          <artifactId>org.eclipse.jdt.debug</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jdt.core</artifactId>
-      <version>[3.16.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jdt.debug.ui</artifactId>
-      <version>[3.10.100,4.0.0)</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <!-- 
-            The p2 resolver appears to have trouble with the "icu-data" classifier
-           -->
-          <groupId>${eclipseP2RepoId}</groupId>
-          <artifactId>com.ibm.icu</artifactId>
-        </exclusion>
-        <exclusion>
-          <!-- 
-            The p2 resolver appears to have trouble with this one and tries to download it with 
-            "tools" as the classifier.
-           -->
-          <groupId>${eclipseP2RepoId}</groupId>
-          <artifactId>org.eclipse.jdt.debug</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.contenttype</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.preferences</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.app</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.filesystem</artifactId>
-      <version>[1.0.0,3.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>plugin.xml</include>
-          <include>plugin.properties</include>
-          <include>icons/**/*.*</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/readme_src</directory>
-      </resource>
-    </resources>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <configuration>
-                <excludes combine.children="append">
-                  <exclude>src/main/resources/org/apache/uima/ruta/ide/formatter/*.ruta</exclude> <!-- preview file -->
-                  <exclude>src/main/resources/org/apache/uima/ruta/ide/formatter/preferences/*.ruta</exclude> <!-- preview file -->
-                  <exclude>src/main/resources/org/apache/uima/ruta/ide/launching/*.ruta</exclude> <!-- preview file -->
-                  <exclude>src/main/resources/org/apache/uima/ruta/ide/ui/documentation/*.html</exclude> <!-- hover documentation -->
-                  <exclude>src/main/resources/org/apache/uima/ruta/ide/ui/preferences/*.txt</exclude> <!-- preview file -->
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <Bundle-SymbolicName>org.apache.uima.ruta.ide.ui;singleton:=true</Bundle-SymbolicName>
-                <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeUIPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
-                <_nouses>true</_nouses>
-                <Export-Package>
-                  org.apache.uima.ruta.ide.*
-                </Export-Package>
-                <Require-Bundle>
-                  org.apache.uima.runtime,
-                  org.apache.uima.ruta.engine,
-                  org.apache.uima.ruta.ide,
-                  org.eclipse.core.runtime,
-                  org.eclipse.core.resources,
-                  org.eclipse.core.filesystem,
-                  org.eclipse.ui,
-                  org.eclipse.dltk.launching;bundle-version="3.0.0",
-                  org.eclipse.dltk.core;bundle-version="3.0.0",
-                  org.eclipse.dltk.validators.core;bundle-version="3.0.0",
-                  org.eclipse.dltk.console;bundle-version="3.0.0",
-                  org.eclipse.dltk.console.ui;bundle-version="3.0.0",
-                  org.eclipse.dltk;bundle-version="3.0.0",
-                  org.eclipse.dltk.debug;bundle-version="3.0.0",
-                  org.eclipse.dltk.debug.ui;bundle-version="3.0.0",
-                  org.eclipse.dltk.formatter;bundle-version="3.0.0",
-                  org.eclipse.dltk.testing;bundle-version="3.0.0",
-                  org.eclipse.dltk.ui;bundle-version="3.0.0",
-                  org.eclipse.dltk.validators.ui;bundle-version="3.0.0",
-                  org.eclipse.jface.text,
-                  org.eclipse.ui.editors,
-                  org.eclipse.ui.ide,
-                  org.eclipse.search,
-                  org.eclipse.debug.ui,
-                  org.eclipse.ui.console,
-                  org.eclipse.jdt.core,
-                  org.eclipse.jdt.debug.ui,
-                  org.eclipse.core.variables,
-                  org.eclipse.jdt.launching
-                </Require-Bundle>
-                <Import-Package>
-                </Import-Package>
-                <Bundle-Localization>plugin</Bundle-Localization>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
+<?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>
+  <artifactId>ruta-ep-ide-ui</artifactId>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-ep-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
+  </parent>
+
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <description>Provides the UIMA Ruta development environment for Eclipse</description>
+
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+  </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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.runtime</artifactId>
+      <version>[3.15.100,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.jobs</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.resources</artifactId>
+      <version>[3.13.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.search</artifactId>
+      <version>[3.11.400,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui</artifactId>
+      <version>[3.111.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.ide</artifactId>
+      <version>[3.14.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.views</artifactId>
+      <version>[3.9.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.console</artifactId>
+      <version>[3.8.300,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
+      <version>[3.11.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jface.text</artifactId>
+      <version>[3.15.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.variables</artifactId>
+      <version>[3.4.300,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jdt.launching</artifactId>
+      <version>[3.12.0,4.0.0)</version>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <!-- 
+            The p2 resolver appears to have trouble with this one and tries to download it with 
+            "tools" as the classifier.
+           -->
+          <groupId>${eclipseP2RepoId}</groupId>
+          <artifactId>org.eclipse.jdt.debug</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jdt.core</artifactId>
+      <version>[3.16.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jdt.debug.ui</artifactId>
+      <version>[3.10.100,4.0.0)</version>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <!-- 
+            The p2 resolver appears to have trouble with the "icu-data" classifier
+           -->
+          <groupId>${eclipseP2RepoId}</groupId>
+          <artifactId>com.ibm.icu</artifactId>
+        </exclusion>
+        <exclusion>
+          <!-- 
+            The p2 resolver appears to have trouble with this one and tries to download it with 
+            "tools" as the classifier.
+           -->
+          <groupId>${eclipseP2RepoId}</groupId>
+          <artifactId>org.eclipse.jdt.debug</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.contenttype</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.preferences</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.app</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.filesystem</artifactId>
+      <version>[1.0.0,3.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <includes>
+          <include>plugin.xml</include>
+          <include>plugin.properties</include>
+          <include>icons/**/*.*</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+      <resource>
+        <directory>src/main/readme_src</directory>
+      </resource>
+    </resources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+              <configuration>
+                <excludes combine.children="append">
+                  <exclude>src/main/resources/org/apache/uima/ruta/ide/formatter/*.ruta</exclude> <!-- preview file -->
+                  <exclude>src/main/resources/org/apache/uima/ruta/ide/formatter/preferences/*.ruta</exclude> <!-- preview file -->
+                  <exclude>src/main/resources/org/apache/uima/ruta/ide/launching/*.ruta</exclude> <!-- preview file -->
+                  <exclude>src/main/resources/org/apache/uima/ruta/ide/ui/documentation/*.html</exclude> <!-- hover documentation -->
+                  <exclude>src/main/resources/org/apache/uima/ruta/ide/ui/preferences/*.txt</exclude> <!-- preview file -->
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>org.apache.uima.ruta.ide.ui;singleton:=true</Bundle-SymbolicName>
+                <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeUIPlugin</Bundle-Activator>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                <_nouses>true</_nouses>
+                <Export-Package>
+                  org.apache.uima.ruta.ide.*
+                </Export-Package>
+                <Require-Bundle>
+                  org.apache.uima.runtime,
+                  org.apache.uima.ruta.engine,
+                  org.apache.uima.ruta.ide,
+                  org.eclipse.core.runtime,
+                  org.eclipse.core.resources,
+                  org.eclipse.core.filesystem,
+                  org.eclipse.ui,
+                  org.eclipse.dltk.launching;bundle-version="3.0.0",
+                  org.eclipse.dltk.core;bundle-version="3.0.0",
+                  org.eclipse.dltk.validators.core;bundle-version="3.0.0",
+                  org.eclipse.dltk.console;bundle-version="3.0.0",
+                  org.eclipse.dltk.console.ui;bundle-version="3.0.0",
+                  org.eclipse.dltk;bundle-version="3.0.0",
+                  org.eclipse.dltk.debug;bundle-version="3.0.0",
+                  org.eclipse.dltk.debug.ui;bundle-version="3.0.0",
+                  org.eclipse.dltk.formatter;bundle-version="3.0.0",
+                  org.eclipse.dltk.testing;bundle-version="3.0.0",
+                  org.eclipse.dltk.ui;bundle-version="3.0.0",
+                  org.eclipse.dltk.validators.ui;bundle-version="3.0.0",
+                  org.eclipse.jface.text,
+                  org.eclipse.ui.editors,
+                  org.eclipse.ui.ide,
+                  org.eclipse.search,
+                  org.eclipse.debug.ui,
+                  org.eclipse.ui.console,
+                  org.eclipse.jdt.core,
+                  org.eclipse.jdt.debug.ui,
+                  org.eclipse.core.variables,
+                  org.eclipse.jdt.launching
+                </Require-Bundle>
+                <Import-Package>
+                </Import-Package>
+                <Bundle-Localization>plugin</Bundle-Localization>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
\ No newline at end of file
diff --git a/ruta-ep-ide/pom.xml b/ruta-ep-ide/pom.xml
index 2d98e90..d9a7a2b 100644
--- a/ruta-ep-ide/pom.xml
+++ b/ruta-ep-ide/pom.xml
@@ -1,243 +1,243 @@
-<?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>
-  <artifactId>ruta-ep-ide</artifactId>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
-  </parent>
-
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <description>Provides the UIMA Ruta development environment for Eclipse</description>
-
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-    <postNoticeText>${uniWueNoticeText}</postNoticeText>
-  </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>
-
-  <dependencies>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.runtime</artifactId>
-      <version>[3.15.100,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.contenttype</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.resources</artifactId>
-      <version>[3.13.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.core.filesystem</artifactId>
-      <version>[1.7.200,2.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui</artifactId>
-      <version>[3.111.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.preferences</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.app</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jdt.launching</artifactId>
-      <version>[3.12.0,4.0.0)</version>
-      <scope>provided</scope>
-      <exclusions>
-        <exclusion>
-          <!-- 
-            The p2 resolver appears to have trouble with this one and tries to download it with 
-            "tools" as the classifier.
-           -->
-          <groupId>${eclipseP2RepoId}</groupId>
-          <artifactId>org.eclipse.jdt.debug</artifactId>
-        </exclusion>
-      </exclusions>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jdt.core</artifactId>
-      <version>[3.3.0,6.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.commons</groupId>
-      <artifactId>commons-lang3</artifactId>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>plugin.xml</include>
-          <include>plugin.properties</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/readme_src</directory>
-      </resource>
-    </resources>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.rat</groupId>
-          <artifactId>apache-rat-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>default-cli</id>
-              <configuration>
-                <excludes combine.children="append">
-                  <exclude>src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.tokens</exclude> <!-- grammar tokens -->
-                  <exclude>src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.tokens</exclude> <!-- grammar tokens -->
-                </excludes>
-              </configuration>
-            </execution>
-          </executions>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-
-    <plugins>
-      <!-- generate java code for antlr grammars -->
-      <plugin>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr3-maven-plugin</artifactId>
-        <version>3.5.2</version>
-        <executions>
-          <execution>
-            <id>run antlr</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>antlr</goal>
-            </goals>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.codehaus.mojo</groupId>
-        <artifactId>build-helper-maven-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>add-source</id>
-            <phase>generate-sources</phase>
-            <goals>
-              <goal>add-source</goal>
-            </goals>
-            <configuration>
-              <sources>
-                <source>${basedir}/target/generated-sources/antlr3
-                </source>
-              </sources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <Bundle-SymbolicName>org.apache.uima.ruta.ide;singleton:=true</Bundle-SymbolicName>
-                <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeCorePlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
-                <_nouses>true</_nouses>
-                <Export-Package>
-                  org.apache.uima.ruta.ide.*
-                </Export-Package>
-                <Require-Bundle>
-                  org.eclipse.core.runtime,
-                  org.eclipse.dltk.core;bundle-version="5.0.0",
-                  org.eclipse.core.resources,
-                  org.eclipse.core.filesystem,
-                  org.eclipse.dltk.launching;bundle-version="5.0.0",
-                  org.eclipse.dltk.validators.core;bundle-version="5.0.0",
-                  org.eclipse.ui,
-                  org.apache.uima.runtime,
-                  org.apache.uima.ruta.engine,
-                  org.eclipse.search,
-                  org.eclipse.debug.ui,
-                  org.eclipse.ui.console,
-                  org.eclipse.jdt.core,
-                  org.eclipse.jdt.debug.ui,
-                  org.eclipse.core.variables,
-                  org.eclipse.jdt.launching
-                </Require-Bundle>
-                <!-- <Bundle-ClassPath>.,antlr-runtime-3.4.jar,stringtemplate-3.2.1.jar</Bundle-ClassPath>
-                  !org.eclipse.core.runtime, !org.antlr.runtime, !org.antlr.stringtemplate, * -->
-                <Import-Package>
-                </Import-Package>
-                <Bundle-Localization>plugin</Bundle-Localization>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
+<?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>
+  <artifactId>ruta-ep-ide</artifactId>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-ep-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
+  </parent>
+
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <description>Provides the UIMA Ruta development environment for Eclipse</description>
+
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+    <postNoticeText>${uniWueNoticeText}</postNoticeText>
+  </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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.runtime</artifactId>
+      <version>[3.15.100,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.contenttype</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.resources</artifactId>
+      <version>[3.13.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.core.filesystem</artifactId>
+      <version>[1.7.200,2.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui</artifactId>
+      <version>[3.111.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.preferences</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.app</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jdt.launching</artifactId>
+      <version>[3.12.0,4.0.0)</version>
+      <scope>provided</scope>
+      <exclusions>
+        <exclusion>
+          <!-- 
+            The p2 resolver appears to have trouble with this one and tries to download it with 
+            "tools" as the classifier.
+           -->
+          <groupId>${eclipseP2RepoId}</groupId>
+          <artifactId>org.eclipse.jdt.debug</artifactId>
+        </exclusion>
+      </exclusions>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jdt.core</artifactId>
+      <version>[3.3.0,6.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.commons</groupId>
+      <artifactId>commons-lang3</artifactId>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <includes>
+          <include>plugin.xml</include>
+          <include>plugin.properties</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+      <resource>
+        <directory>src/main/readme_src</directory>
+      </resource>
+    </resources>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.rat</groupId>
+          <artifactId>apache-rat-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>default-cli</id>
+              <configuration>
+                <excludes combine.children="append">
+                  <exclude>src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaLexer.tokens</exclude> <!-- grammar tokens -->
+                  <exclude>src/main/antlr3/org/apache/uima/ruta/ide/core/parser/RutaParser.tokens</exclude> <!-- grammar tokens -->
+                </excludes>
+              </configuration>
+            </execution>
+          </executions>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+
+    <plugins>
+      <!-- generate java code for antlr grammars -->
+      <plugin>
+        <groupId>org.antlr</groupId>
+        <artifactId>antlr3-maven-plugin</artifactId>
+        <version>3.5.2</version>
+        <executions>
+          <execution>
+            <id>run antlr</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>antlr</goal>
+            </goals>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.codehaus.mojo</groupId>
+        <artifactId>build-helper-maven-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>add-source</id>
+            <phase>generate-sources</phase>
+            <goals>
+              <goal>add-source</goal>
+            </goals>
+            <configuration>
+              <sources>
+                <source>${basedir}/target/generated-sources/antlr3
+                </source>
+              </sources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>org.apache.uima.ruta.ide;singleton:=true</Bundle-SymbolicName>
+                <Bundle-Activator>org.apache.uima.ruta.ide.RutaIdeCorePlugin</Bundle-Activator>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                <_nouses>true</_nouses>
+                <Export-Package>
+                  org.apache.uima.ruta.ide.*
+                </Export-Package>
+                <Require-Bundle>
+                  org.eclipse.core.runtime,
+                  org.eclipse.dltk.core;bundle-version="5.0.0",
+                  org.eclipse.core.resources,
+                  org.eclipse.core.filesystem,
+                  org.eclipse.dltk.launching;bundle-version="5.0.0",
+                  org.eclipse.dltk.validators.core;bundle-version="5.0.0",
+                  org.eclipse.ui,
+                  org.apache.uima.runtime,
+                  org.apache.uima.ruta.engine,
+                  org.eclipse.search,
+                  org.eclipse.debug.ui,
+                  org.eclipse.ui.console,
+                  org.eclipse.jdt.core,
+                  org.eclipse.jdt.debug.ui,
+                  org.eclipse.core.variables,
+                  org.eclipse.jdt.launching
+                </Require-Bundle>
+                <!-- <Bundle-ClassPath>.,antlr-runtime-3.4.jar,stringtemplate-3.2.1.jar</Bundle-ClassPath>
+                  !org.eclipse.core.runtime, !org.antlr.runtime, !org.antlr.stringtemplate, * -->
+                <Import-Package>
+                </Import-Package>
+                <Bundle-Localization>plugin</Bundle-Localization>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
\ No newline at end of file
diff --git a/ruta-ep-parent/pom.xml b/ruta-ep-parent/pom.xml
index f11fa72..7461e93 100644
--- a/ruta-ep-parent/pom.xml
+++ b/ruta-ep-parent/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
 
@@ -46,7 +46,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <properties>
diff --git a/ruta-ep-textruler/pom.xml b/ruta-ep-textruler/pom.xml
index 35e3705..d8d5ca3 100644
--- a/ruta-ep-textruler/pom.xml
+++ b/ruta-ep-textruler/pom.xml
@@ -1,158 +1,158 @@
-<?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>
-  <artifactId>ruta-ep-textruler</artifactId>
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>ruta-ep-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
-    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
-  </parent>
-
-  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <description>UIMA Ruta TextRuler plugin for rule learning</description>
-
-  <properties>
-    <uimaScmProject>${project.artifactId}</uimaScmProject>
-  </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>
-
-  <dependencies>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-core</artifactId>
-      <version>${project.parent.version}</version>
-      <scope>compile</scope>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>org.apache.uima</groupId>
-      <artifactId>ruta-ep-ide-ui</artifactId>
-      <version>${project.parent.version}</version>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.equinox.app</artifactId>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.jface.text</artifactId>
-      <version>[3.15.0,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
-      <version>[3.11.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.editors</artifactId>
-      <version>[3.11.300,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.ui.views</artifactId>
-      <version>[3.9.200,4.0.0)</version>
-      <scope>provided</scope>
-    </dependency>
-    <dependency>
-      <groupId>${eclipseP2RepoId}</groupId>
-      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
-      <scope>provided</scope>
-    </dependency>
-  </dependencies>
-
-  <build>
-    <resources>
-      <resource>
-        <directory>.</directory>
-        <includes>
-          <include>plugin.xml</include>
-          <include>icons/**/*.*</include>
-        </includes>
-      </resource>
-      <resource>
-        <directory>src/main/resources</directory>
-      </resource>
-      <resource>
-        <directory>src/main/readme_src</directory>
-      </resource>
-    </resources>
-
-    <plugins>
-      <plugin>
-        <groupId>org.apache.felix</groupId>
-        <artifactId>maven-bundle-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>uima-bundle</id>
-            <configuration>
-              <instructions>
-                <Bundle-SymbolicName>org.apache.uima.ruta.textruler;singleton:=true</Bundle-SymbolicName>
-                <Bundle-Activator>org.apache.uima.ruta.textruler.TextRulerPlugin</Bundle-Activator>
-                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
-                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
-                <_nouses>true</_nouses>
-                <Export-Package>
-                  org.apache.uima.ruta.textruler.*
-                </Export-Package>
-                <Require-Bundle>
-                  org.apache.uima.runtime,
-                  org.apache.uima.ruta.ide,
-                  org.apache.uima.ruta.ide.ui,
-                  org.apache.uima.ruta.engine,
-                  org.eclipse.core.runtime,
-                  org.eclipse.core.resources,
-                  org.eclipse.ui,
-                  org.eclipse.dltk.core,
-                  org.eclipse.dltk.ui,
-                  org.eclipse.jface.text,
-                  org.eclipse.ui.editors,
-                  org.eclipse.search,
-                  org.eclipse.debug.ui,
-                  org.eclipse.ui.console
-                </Require-Bundle>
-                <Import-Package>
-                </Import-Package>
-              </instructions>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-
+<?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>
+  <artifactId>ruta-ep-textruler</artifactId>
+  <parent>
+    <groupId>org.apache.uima</groupId>
+    <artifactId>ruta-ep-parent</artifactId>
+    <version>3.2.0</version>
+    <relativePath>../ruta-ep-parent/pom.xml</relativePath>
+  </parent>
+
+  <name>Apache UIMA Ruta Eclipse: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <description>UIMA Ruta TextRuler plugin for rule learning</description>
+
+  <properties>
+    <uimaScmProject>${project.artifactId}</uimaScmProject>
+  </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>ruta-3.2.0</tag>
+  </scm>
+
+  <dependencies>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-core</artifactId>
+      <version>${project.parent.version}</version>
+      <scope>compile</scope>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>org.apache.uima</groupId>
+      <artifactId>ruta-ep-ide-ui</artifactId>
+      <version>${project.parent.version}</version>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.equinox.app</artifactId>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.jface.text</artifactId>
+      <version>[3.15.0,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.workbench.texteditor</artifactId>
+      <version>[3.11.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.editors</artifactId>
+      <version>[3.11.300,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.ui.views</artifactId>
+      <version>[3.9.200,4.0.0)</version>
+      <scope>provided</scope>
+    </dependency>
+    <dependency>
+      <groupId>${eclipseP2RepoId}</groupId>
+      <artifactId>org.eclipse.emf.ecore.xmi</artifactId>
+      <scope>provided</scope>
+    </dependency>
+  </dependencies>
+
+  <build>
+    <resources>
+      <resource>
+        <directory>.</directory>
+        <includes>
+          <include>plugin.xml</include>
+          <include>icons/**/*.*</include>
+        </includes>
+      </resource>
+      <resource>
+        <directory>src/main/resources</directory>
+      </resource>
+      <resource>
+        <directory>src/main/readme_src</directory>
+      </resource>
+    </resources>
+
+    <plugins>
+      <plugin>
+        <groupId>org.apache.felix</groupId>
+        <artifactId>maven-bundle-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>uima-bundle</id>
+            <configuration>
+              <instructions>
+                <Bundle-SymbolicName>org.apache.uima.ruta.textruler;singleton:=true</Bundle-SymbolicName>
+                <Bundle-Activator>org.apache.uima.ruta.textruler.TextRulerPlugin</Bundle-Activator>
+                <Bundle-RequiredExecutionEnvironment>JavaSE-1.8</Bundle-RequiredExecutionEnvironment>
+                <Bundle-ActivationPolicy>lazy</Bundle-ActivationPolicy>
+                <_nouses>true</_nouses>
+                <Export-Package>
+                  org.apache.uima.ruta.textruler.*
+                </Export-Package>
+                <Require-Bundle>
+                  org.apache.uima.runtime,
+                  org.apache.uima.ruta.ide,
+                  org.apache.uima.ruta.ide.ui,
+                  org.apache.uima.ruta.engine,
+                  org.eclipse.core.runtime,
+                  org.eclipse.core.resources,
+                  org.eclipse.ui,
+                  org.eclipse.dltk.core,
+                  org.eclipse.dltk.ui,
+                  org.eclipse.jface.text,
+                  org.eclipse.ui.editors,
+                  org.eclipse.search,
+                  org.eclipse.debug.ui,
+                  org.eclipse.ui.console
+                </Require-Bundle>
+                <Import-Package>
+                </Import-Package>
+              </instructions>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+
 </project>
\ No newline at end of file
diff --git a/ruta-maven-archetype/pom.xml b/ruta-maven-archetype/pom.xml
index 7c35bed..7591177 100644
--- a/ruta-maven-archetype/pom.xml
+++ b/ruta-maven-archetype/pom.xml
@@ -26,7 +26,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
   <properties>
@@ -38,7 +38,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <build>
diff --git a/ruta-maven-plugin/pom.xml b/ruta-maven-plugin/pom.xml
index 2699adf..0200a6e 100644
--- a/ruta-maven-plugin/pom.xml
+++ b/ruta-maven-plugin/pom.xml
@@ -32,7 +32,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
   <properties>
@@ -44,7 +44,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <dependencyManagement>
diff --git a/ruta-parent/pom.xml b/ruta-parent/pom.xml
index 50f4a1d..8e3df59 100644
--- a/ruta-parent/pom.xml
+++ b/ruta-parent/pom.xml
@@ -1,310 +1,308 @@
-<?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.uima</groupId>
-    <artifactId>parent-pom</artifactId>
-    <version>15</version>
-    <relativePath />
-  </parent>
-
-  <artifactId>ruta-parent</artifactId>
-  <packaging>pom</packaging>
-  <version>3.2.0-SNAPSHOT</version>
-  <name>Apache UIMA Ruta: ${project.artifactId}</name>
-  <url>${uimaWebsiteUrl}</url>
-  <inceptionYear>2011</inceptionYear>
-  <description>The common parent pom for the UIMA Ruta</description>
-
-  <!-- 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>
-
-  <!-- The repositories and pluginRepositories section is duplicated from 
-    the parent pom one, and adds the Apache Snapshot Nexus repository where UIMA 
-    snapshots are deployed. This is needed if for instance, a project depends 
-    on some new SNAPSHOT level of a build tool, where the users hasn't checked 
-    out the build tooling. This allows maven to find the snapshots when looking 
-    for the parent of this pom -->
-  <repositories>
-    <!-- modify central repository access: Turn on checksum checking -->
-    <repository>
-      <id>central</id>
-      <name>Maven Repository Switchboard</name>
-      <layout>default</layout>
-      <url>https://repo1.maven.org/maven2</url>
-
-      <releases>
-        <enabled>true</enabled>
-        <checksumPolicy>fail</checksumPolicy>
-        <updatePolicy>never</updatePolicy>
-      </releases>
-
-      <snapshots>
-        <enabled>false</enabled>
-      </snapshots>
-    </repository>
-  </repositories>
-
-  <properties>
-    <uniWueNoticeText>Portions of UIMA Ruta were originally developed by
-      the Universität Würzburg.
-      Copyright (c) 2006, 2011 Universität
-      Würzburg.</uniWueNoticeText>
-    <postNoticeText>${uniWueNoticeText}
-
-      This product contains icons
-      developed by Mark James
-      (http://www.famfamfam.com/lab/icons/silk/), licensed under the
-      Creative Commons Attribution 3.0 License.
-    </postNoticeText>
-
-    <uimaVersion>3.3.0</uimaVersion>
-    <uimafit-version>3.3.0</uimafit-version>
-    <spring-version>5.3.20</spring-version>
-    <junit-version>4.13.2</junit-version>
-    <slf4j-version>1.7.36</slf4j-version>
-
-    <antlr-version>3.5.3</antlr-version>
-    <htmlparser-version>1.6</htmlparser-version>
-    <commons-collections-version>3.2.2</commons-collections-version>
-    <commons-collections4-version>4.4</commons-collections4-version>
-    <commons-text-version>1.9</commons-text-version>
-    <commons-lang3-version>3.12.0</commons-lang3-version>
-    <commons-io-version>2.11.0</commons-io-version>
-    <commons-math3-version>3.6.1</commons-math3-version>
-    <commons-logging-version>1.1.1</commons-logging-version>
-    <commons-logging-api-version>1.1</commons-logging-api-version>
-    <caffeine-version>2.9.3</caffeine-version>
-
-    <api_check_oldVersion>3.2.0</api_check_oldVersion>
-
-    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
-    <maven.compiler.target>1.8</maven.compiler.target>
-    <maven.compiler.source>1.8</maven.compiler.source>
-  </properties>
-
-  <dependencyManagement>
-    <dependencies>
-      <dependency>
-        <groupId>org.antlr</groupId>
-        <artifactId>antlr-runtime</artifactId>
-        <version>${antlr-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.htmlparser</groupId>
-        <artifactId>htmlparser</artifactId>
-        <version>${htmlparser-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-collections</groupId>
-        <artifactId>commons-collections</artifactId>
-        <version>${commons-collections-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-collections4</artifactId>
-        <version>${commons-collections4-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-text</artifactId>
-        <version>${commons-text-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-lang3</artifactId>
-        <version>${commons-lang3-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.uima</groupId>
-        <artifactId>uimafit-core</artifactId>
-        <version>${uimafit-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-io</groupId>
-        <artifactId>commons-io</artifactId>
-        <version>${commons-io-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.apache.commons</groupId>
-        <artifactId>commons-math3</artifactId>
-        <version>${commons-math3-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-logging</groupId>
-        <artifactId>commons-logging</artifactId>
-        <version>${commons-logging-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>commons-logging</groupId>
-        <artifactId>commons-logging-api</artifactId>
-        <version>${commons-logging-api-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-core</artifactId>
-        <version>${spring-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-context</artifactId>
-        <version>${spring-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-expression</artifactId>
-        <version>${spring-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.springframework</groupId>
-        <artifactId>spring-beans</artifactId>
-        <version>${spring-version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>com.github.ben-manes.caffeine</groupId>
-        <artifactId>caffeine</artifactId>
-        <version>${caffeine-version}</version>
-      </dependency>
-
-      <dependency>
-        <groupId>junit</groupId>
-        <artifactId>junit</artifactId>
-        <version>${junit-version}</version>
-      </dependency>
-      <dependency>
-        <groupId>org.slf4j</groupId>
-        <artifactId>slf4j-jdk14</artifactId>
-        <version>${slf4j-version}</version>
-        <scope>test</scope>
-      </dependency>
-    </dependencies>
-  </dependencyManagement>
-
-  <build>
-    <pluginManagement>
-      <plugins>
-        <plugin>
-          <groupId>org.apache.uima</groupId>
-          <artifactId>uima-build-helper-maven-plugin</artifactId>
-          <version>7</version>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <configuration>
-            <source>${maven.compiler.source}</source>
-            <target>${maven.compiler.target}</target>
-          </configuration>
-        </plugin>
-        <plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-javadoc-plugin</artifactId>
-          <executions>
-            <execution>
-              <id>attach-javadocs</id>
-              <configuration>
-                <source>${maven.compiler.source}</source>
-              </configuration>
-            </execution>
-          </executions>
-          <configuration>
-            <source>${maven.compiler.source}</source>
-          </configuration>
-        </plugin>
-      </plugins>
-    </pluginManagement>
-    <plugins>
-      <plugin>
-        <groupId>org.apache.maven.plugins</groupId>
-        <artifactId>maven-toolchains-plugin</artifactId>
-        <executions>
-          <execution>
-            <goals>
-              <goal>toolchain</goal>
-            </goals>
-          </execution>
-        </executions>
-        <configuration>
-          <toolchains>
-            <jdk>
-              <version>${maven.compiler.target}</version>
-            </jdk>
-          </toolchains>
-        </configuration>
-      </plugin>
-      <plugin>
-        <artifactId>maven-resources-plugin</artifactId>
-        <executions>
-          <execution>
-            <id>copy customized bin LICENSE file</id>
-            <phase>prepare-package</phase>
-            <goals>
-              <goal>copy-resources</goal>
-            </goals>
-            <configuration>
-              <outputDirectory>${project.build.directory}/classes/META-INF</outputDirectory>
-              <resources>
-                <resource>
-                  <directory>src/main/readme_bin</directory>
-                  <includes>
-                    <include>LICENSE</include>
-                    <include>NOTICE</include>
-                  </includes>
-                  <filtering>true</filtering>
-                </resource>
-              </resources>
-            </configuration>
-          </execution>
-        </executions>
-      </plugin>
-    </plugins>
-  </build>
-  
-  <profiles>
-    <profile>
-      <id>spotbugs</id>
-      <build>
-        <pluginManagement>
-          <plugins>
-            <plugin>
-              <groupId>com.github.spotbugs</groupId>
-              <artifactId>spotbugs-maven-plugin</artifactId>
-              <version>4.7.0.0</version>
-            </plugin>
-          </plugins>
-        </pluginManagement>
-      </build>
-    </profile>
-  </profiles>
-</project>
+<?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.uima</groupId>
+    <artifactId>parent-pom</artifactId>
+    <version>15</version>
+    <relativePath />
+  </parent>
+
+  <artifactId>ruta-parent</artifactId>
+  <packaging>pom</packaging>
+  <version>3.2.0</version>
+  <name>Apache UIMA Ruta: ${project.artifactId}</name>
+  <url>${uimaWebsiteUrl}</url>
+  <inceptionYear>2011</inceptionYear>
+  <description>The common parent pom for the UIMA Ruta</description>
+
+  <!-- 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>ruta-3.2.0</tag>
+  </scm>
+
+  <!-- The repositories and pluginRepositories section is duplicated from 
+    the parent pom one, and adds the Apache Snapshot Nexus repository where UIMA 
+    snapshots are deployed. This is needed if for instance, a project depends 
+    on some new SNAPSHOT level of a build tool, where the users hasn't checked 
+    out the build tooling. This allows maven to find the snapshots when looking 
+    for the parent of this pom -->
+  <repositories>
+    <!-- modify central repository access: Turn on checksum checking -->
+    <repository>
+      <id>central</id>
+      <name>Maven Repository Switchboard</name>
+      <layout>default</layout>
+      <url>https://repo1.maven.org/maven2</url>
+
+      <releases>
+        <enabled>true</enabled>
+        <checksumPolicy>fail</checksumPolicy>
+        <updatePolicy>never</updatePolicy>
+      </releases>
+
+      <snapshots>
+        <enabled>false</enabled>
+      </snapshots>
+    </repository>
+  </repositories>
+
+  <properties>
+    <uniWueNoticeText>Portions of UIMA Ruta were originally developed by
+      the Universität Würzburg.
+      Copyright (c) 2006, 2011 Universität
+      Würzburg.</uniWueNoticeText>
+    <postNoticeText>${uniWueNoticeText}
+
+      This product contains icons
+      developed by Mark James
+      (http://www.famfamfam.com/lab/icons/silk/), licensed under the
+      Creative Commons Attribution 3.0 License.
+    </postNoticeText>
+
+    <uimaVersion>3.3.0</uimaVersion>
+    <uimafit-version>3.3.0</uimafit-version>
+    <spring-version>5.3.20</spring-version>
+    <junit-version>4.13.2</junit-version>
+    <slf4j-version>1.7.36</slf4j-version>
+
+    <antlr-version>3.5.3</antlr-version>
+    <htmlparser-version>1.6</htmlparser-version>
+    <commons-collections-version>3.2.2</commons-collections-version>
+    <commons-collections4-version>4.4</commons-collections4-version>
+    <commons-text-version>1.9</commons-text-version>
+    <commons-lang3-version>3.12.0</commons-lang3-version>
+    <commons-io-version>2.11.0</commons-io-version>
+    <commons-math3-version>3.6.1</commons-math3-version>
+    <commons-logging-version>1.1.1</commons-logging-version>
+    <commons-logging-api-version>1.1</commons-logging-api-version>
+    <caffeine-version>2.9.3</caffeine-version>
+
+    <api_check_oldVersion>3.2.0</api_check_oldVersion>
+
+    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
+    <maven.compiler.target>1.8</maven.compiler.target>
+    <maven.compiler.source>1.8</maven.compiler.source>
+  </properties>
+
+  <dependencyManagement>
+    <dependencies>
+      <dependency>
+        <groupId>org.antlr</groupId>
+        <artifactId>antlr-runtime</artifactId>
+        <version>${antlr-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.htmlparser</groupId>
+        <artifactId>htmlparser</artifactId>
+        <version>${htmlparser-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-collections</groupId>
+        <artifactId>commons-collections</artifactId>
+        <version>${commons-collections-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-collections4</artifactId>
+        <version>${commons-collections4-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-text</artifactId>
+        <version>${commons-text-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-lang3</artifactId>
+        <version>${commons-lang3-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.uima</groupId>
+        <artifactId>uimafit-core</artifactId>
+        <version>${uimafit-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-io</groupId>
+        <artifactId>commons-io</artifactId>
+        <version>${commons-io-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.commons</groupId>
+        <artifactId>commons-math3</artifactId>
+        <version>${commons-math3-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-logging</groupId>
+        <artifactId>commons-logging</artifactId>
+        <version>${commons-logging-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>commons-logging</groupId>
+        <artifactId>commons-logging-api</artifactId>
+        <version>${commons-logging-api-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-core</artifactId>
+        <version>${spring-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-context</artifactId>
+        <version>${spring-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-expression</artifactId>
+        <version>${spring-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.springframework</groupId>
+        <artifactId>spring-beans</artifactId>
+        <version>${spring-version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>com.github.ben-manes.caffeine</groupId>
+        <artifactId>caffeine</artifactId>
+        <version>${caffeine-version}</version>
+      </dependency>
+
+      <dependency>
+        <groupId>junit</groupId>
+        <artifactId>junit</artifactId>
+        <version>${junit-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.slf4j</groupId>
+        <artifactId>slf4j-jdk14</artifactId>
+        <version>${slf4j-version}</version>
+        <scope>test</scope>
+      </dependency>
+    </dependencies>
+  </dependencyManagement>
+
+  <build>
+    <pluginManagement>
+      <plugins>
+        <plugin>
+          <groupId>org.apache.uima</groupId>
+          <artifactId>uima-build-helper-maven-plugin</artifactId>
+          <version>7</version>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-compiler-plugin</artifactId>
+          <configuration>
+            <source>${maven.compiler.source}</source>
+            <target>${maven.compiler.target}</target>
+          </configuration>
+        </plugin>
+        <plugin>
+          <groupId>org.apache.maven.plugins</groupId>
+          <artifactId>maven-javadoc-plugin</artifactId>
+          <executions>
+            <execution>
+              <id>attach-javadocs</id>
+              <configuration>
+                <source>${maven.compiler.source}</source>
+              </configuration>
+            </execution>
+          </executions>
+          <configuration>
+            <source>${maven.compiler.source}</source>
+          </configuration>
+        </plugin>
+      </plugins>
+    </pluginManagement>
+    <plugins>
+      <plugin>
+        <groupId>org.apache.maven.plugins</groupId>
+        <artifactId>maven-toolchains-plugin</artifactId>
+        <executions>
+          <execution>
+            <goals>
+              <goal>toolchain</goal>
+            </goals>
+          </execution>
+        </executions>
+        <configuration>
+          <toolchains>
+            <jdk>
+              <version>${maven.compiler.target}</version>
+            </jdk>
+          </toolchains>
+        </configuration>
+      </plugin>
+      <plugin>
+        <artifactId>maven-resources-plugin</artifactId>
+        <executions>
+          <execution>
+            <id>copy customized bin LICENSE file</id>
+            <phase>prepare-package</phase>
+            <goals>
+              <goal>copy-resources</goal>
+            </goals>
+            <configuration>
+              <outputDirectory>${project.build.directory}/classes/META-INF</outputDirectory>
+              <resources>
+                <resource>
+                  <directory>src/main/readme_bin</directory>
+                  <includes>
+                    <include>LICENSE</include>
+                    <include>NOTICE</include>
+                  </includes>
+                  <filtering>true</filtering>
+                </resource>
+              </resources>
+            </configuration>
+          </execution>
+        </executions>
+      </plugin>
+    </plugins>
+  </build>
+  
+  <profiles>
+    <profile>
+      <id>spotbugs</id>
+      <build>
+        <pluginManagement>
+          <plugins>
+            <plugin>
+              <groupId>com.github.spotbugs</groupId>
+              <artifactId>spotbugs-maven-plugin</artifactId>
+              <version>4.7.0.0</version>
+            </plugin>
+          </plugins>
+        </pluginManagement>
+      </build>
+    </profile>
+  </profiles>
+</project>
diff --git a/ruta-typesystem/pom.xml b/ruta-typesystem/pom.xml
index d2aa23e..08151b7 100644
--- a/ruta-typesystem/pom.xml
+++ b/ruta-typesystem/pom.xml
@@ -23,7 +23,7 @@
   <parent>
     <groupId>org.apache.uima</groupId>
     <artifactId>ruta-parent</artifactId>
-    <version>3.2.0-SNAPSHOT</version>
+    <version>3.2.0</version>
     <relativePath>../ruta-parent/pom.xml</relativePath>
   </parent>
 
@@ -39,7 +39,7 @@
     <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>
+    <tag>ruta-3.2.0</tag>
   </scm>
 
   <dependencies>
