Merge branch 'main' into bugfix/345-Certain-select-operations-deplete-FS-ID-pool
diff --git a/Jenkinsfile b/Jenkinsfile
index 60cd449..86153e9 100644
--- a/Jenkinsfile
+++ b/Jenkinsfile
@@ -18,6 +18,6 @@
 @Library('uima-build-jenkins-shared-library') _
 
 defaultPipeline {
-  // extraMavenArguments = '-Pjacoco,spotbugs,pmd,run-rat-report -Ddisable-rc-auto-staging'
-  extraMavenArguments = '-Prun-rat-report -Ddisable-rc-auto-staging'
+  // extraMavenArguments = '-Pjacoco,spotbugs,pmd -Ddisable-rc-auto-staging'
+  extraMavenArguments = '-Ddisable-rc-auto-staging'
 }
diff --git a/pom.xml b/pom.xml
index d9096db..2de14fa 100644
--- a/pom.xml
+++ b/pom.xml
@@ -47,22 +47,17 @@
   </scm>
 
   <properties>
-    <jiraVersion>${parsedVersion.majorVersion}.${parsedVersion.minorVersion}.${parsedVersion.incrementalVersion}SDK</jiraVersion>
     <assemblyBinDescriptor>src/main/assembly/bin-without-jackson.xml</assemblyBinDescriptor> 
     <postNoticeText>${ibmNoticeText}</postNoticeText>    
   </properties>
 
-  <!-- dependencies that go into the various builds via dependency-sets -->
-  <!-- version is specified here -->
-  <!-- default scope is compile -->
-  <!-- Used for assemblies, to insure they're built *before* the assembly -->
+  <modules>
+    <module>uimaj-bom</module>
+    <module>uimaj-parent</module>
+    <module>aggregate-uimaj</module>
+  </modules>
   
-  <!-- Note: as of 6/2013 it seems these dependencies may not be needed
-       They are not up-to-date with all the subprojects, but that doesn't
-       seem to matter.
-       
-       Consider deleting at some point -->
-        
+  <!-- The dependencies here are required for the binary distribution assembly! -->
   <dependencies>
     <dependency>
       <groupId>org.apache.uima</groupId> 
@@ -139,6 +134,9 @@
       <artifactId>uimaj-json</artifactId>
       <version>${project.version}</version>
     </dependency>
+
+    <!-- BEGIN: uimaj-v3migration-jcas -->
+    <!-- These can be removed when we remove the migration module -->
     <dependency>
       <groupId>org.apache.uima</groupId>
       <artifactId>uimaj-v3migration-jcas</artifactId>
@@ -159,6 +157,8 @@
       <artifactId>javaparser-core</artifactId>
       <version>3.2.2</version>
     </dependency>
+    <!-- END: uimaj-v3migration-jcas -->
+
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
@@ -171,27 +171,16 @@
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
-      <version>${log4j-version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-core</artifactId>
-      <version>${log4j-version}</version>
     </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-api</artifactId>
-      <version>${log4j-version}</version>
     </dependency>
   </dependencies>
-
-  <modules>
-    <module>uimaj-bom</module>
-    <module>uimaj-parent</module>
-    <module>aggregate-uimaj</module>
-    <!-- UIMA 3.4.1 has no issues from Jira -->
-    <!-- module>uimaj-legacy-jira-report</module -->
-  </modules>
   
   <build>
     <plugins>
@@ -221,18 +210,6 @@
               </groups>
               <sourcepath>uimaj-core/src/main/java;uimaj-json/src/main/java;uimaj-document-annotation/src/main/java</sourcepath>
               <excludePackageNames>*.internal.*:*.impl.*</excludePackageNames>
-              <!-- add a few classes in impl packages that are directly used by user code -->
-              <additionalparam>
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASDeserializer.java
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASParsingException.java
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XCASSerializer.java
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasDeserializer.java
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiCasSerializer.java
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/XmiSerializationSharedData.java
-                ${basedir}/uimaj-core/src/main/java/org/apache/uima/cas/impl/Serialization.java                
-                ${basedir}/uimaj-cpe/src/main/java/org/apache/uima/collection/impl/metadata/cpe/CpeDescriptorFactory.java
-                ${basedir}/uimaj-cpe/src/main/java/org/apache/uima/collection/impl/cpm/engine/CPMChunkTimeoutException.java
-              </additionalparam>
               <doctitle>Apache UIMA Java SDK ${project.version} User-Level API Documentation</doctitle>
               <windowtitle>Apache UIMA Java SDK ${project.version} User-Level API Documentation</windowtitle>
               <additionalDependencies>
@@ -241,6 +218,21 @@
                   <artifactId>jackson-core</artifactId>
                   <version>${jackson-version}</version>
                 </additionalDependency>
+                <additionalDependency>
+                  <groupId>org.slf4j</groupId>
+                  <artifactId>slf4j-api</artifactId>
+                  <version>${slf4j-version}</version>
+                </additionalDependency>
+                <additionalDependency>
+                  <groupId>org.apache.logging.log4j</groupId>
+                  <artifactId>log4j-api</artifactId>
+                  <version>${log4j-version}</version>
+                </additionalDependency>
+                <additionalDependency>
+                  <groupId>org.apache.logging.log4j</groupId>
+                  <artifactId>log4j-core</artifactId>
+                  <version>${log4j-version}</version>
+                </additionalDependency>
               </additionalDependencies>
             </configuration>
           </execution>
@@ -277,6 +269,7 @@
                   <!-- These markdown files cannot bear a license header -->
                   <exclude>NOTICE.md</exclude>
                   <exclude>src/main/bin_distr_license_notices/NOTICE.md</exclude>
+                  <exclude>src/main/bin_distr_license_notices/NOTICE-without-jackson.md</exclude>
                   <!-- These configuration files cannot bear a license header -->
                   <exclude>.github/**/*</exclude>
                   <exclude>src/main/eclipse/org.eclipse.jdt.core.prefs</exclude>
@@ -304,7 +297,6 @@
                   <exclude>uimaj-internal-tools/**</exclude>
                   <exclude>uimaj-json/**</exclude>
                   <exclude>uimaj-v3migration-jcas/**</exclude>
-                  <exclude>uimaj-legacy-jira-report/**</exclude>
                 </excludes>
               </configuration>
             </execution>
@@ -332,49 +324,7 @@
         </plugins>
       </build>
     </profile>
-    
-    <profile>
-      <id>generate-changes-report</id>
-      <activation>
-        <file>
-          <exists>marker-file-enabling-changes-report</exists>
-        </file>
-      </activation>
-      <build>
-        <plugins>
-          <plugin>
-            <groupId>org.apache.maven.plugins</groupId>
-            <artifactId>maven-antrun-plugin</artifactId>
-            <executions>
-              <execution>
-                <!-- 
-                 - Copies the legacy Jira issue report to the issuesFixed folder. We cannot simple
-                 - configure the uimaj-legacy-jira-report module to write the report directly there
-                 - because otherwise it woudl be cleaned during the clean phase of the root module.
-                 -->
-                <id>copy-legacy-jira-issues-report-to-issues-fixed-folder</id>
-                <phase>generate-resources</phase>
-                <goals>
-                  <goal>run</goal>
-                </goals>
-                <configuration>
-                  <target>
-                    <!-- 
-                      GitHub changes report is always generated, Jira only during release builds,
-                      so it could be missing - hence failonerror="false"
-                      -->
-                    <copy todir="${basedir}/issuesFixed" failonerror="false">
-                      <fileset dir="uimaj-legacy-jira-report/target/issuesFixed" />
-                    </copy>
-                  </target>
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-    
+        
     <profile>
       <id>apache-release-rc-auto-staging-config</id>
       <activation>
@@ -390,6 +340,7 @@
             <inherited>false</inherited>
             <executions>
               <execution>
+                <id>release-rc-auto-staging</id>
                 <phase>install</phase>
                 <goals>
                   <goal>run</goal>
@@ -420,19 +371,5 @@
         </plugins>
       </build>
     </profile>
-      
-    <profile>
-      <id>json-support</id>
-      <activation>
-        <!-- active by default, turn off via command line -P!json-support  -->
-        <file><exists>pom.xml</exists></file>
-      </activation>
-      <properties>
-        <assemblyBinDescriptor>src/main/assembly/bin.xml</assemblyBinDescriptor>  
-      </properties>
-      <modules>
-        <module>uimaj-json</module>
-      </modules>
-    </profile>
   </profiles>
 </project>
diff --git a/src/main/assembly/bin-without-jackson.xml b/src/main/assembly/bin-without-jackson.xml
new file mode 100644
index 0000000..027b274
--- /dev/null
+++ b/src/main/assembly/bin-without-jackson.xml
@@ -0,0 +1,362 @@
+<!--
+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.
+-->
+
+<assembly>
+  <id>bin</id>
+  <formats>
+    <format>zip</format>
+  </formats>
+
+  <includeBaseDirectory>true</includeBaseDirectory>
+
+  <baseDirectory>/apache-uima</baseDirectory>
+
+  <dependencySets>
+    <!-- Because our artifactIds are uimaj-xxx but our jars are uima-xxx,
+    I need a separate dependency set for each module so that I can
+    specify the jar file name.  If we didn't have this inconsistency
+    we could have a single dependencySet that included all modules
+    and had an outputFileNameMapping of ${project.artifactId}.jar -->
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-bootstrap</include>
+      </includes>
+      <unpack>false</unpack>
+      <outputFileNameMapping>uimaj-bootstrap.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-core</include>
+      </includes>
+      <unpack>false</unpack>
+      <outputFileNameMapping>uima-core.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-cpe</include>
+      </includes>
+      <unpack>false</unpack>
+      <outputFileNameMapping>uima-cpe.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-document-annotation</include>
+      </includes>
+      <unpack>false</unpack>
+      <outputFileNameMapping>uima-document-annotation.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-examples</include>
+      </includes>
+      <unpack>false</unpack>
+      <outputFileNameMapping>uima-examples.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-tools</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputFileNameMapping>uima-tools.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-adapter-vinci</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputFileNameMapping>uima-adapter-vinci.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:jVinci</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputFileNameMapping>jVinci.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-json</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputFileNameMapping>uimaj-json.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-v3migration-jcas</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputFileNameMapping>uimaj-v3migration-jcas.jar</outputFileNameMapping>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+
+    <!-- Copy each eclipse plugin into the /eclipsePlugins dir of the distribution -->
+    <dependencySet>
+      <includes>
+        <include>org.apache.uima:uimaj-ep-cas-editor</include>
+        <include>org.apache.uima:uimaj-ep-cas-editor-ide</include>
+        <include>org.apache.uima:uimaj-ep-configurator</include>
+        <include>org.apache.uima:uimaj-ep-debug</include>
+        <include>org.apache.uima:uimaj-ep-jcasgen</include>
+        <include>org.apache.uima:uimaj-ep-pear-packager</include>
+        <include>org.apache.uima:uimaj-ep-runtime</include>
+        <include>org.apache.uima:uimaj-ep-launcher</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputDirectory>eclipsePlugins</outputDirectory>
+      <outputFileNameMapping>${artifact.build.finalName}.jar</outputFileNameMapping>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+
+    <!--  loggers and other lib 3rd party jars not renamed -->
+    <dependencySet>
+      <includes>
+        <include>org.bitbucket.mstrobel:procyon-compilertools</include>
+        <include>org.bitbucket.mstrobel:procyon-core</include>
+        <include>com.github.javaparser:javaparser-core</include>
+        <include>org.slf4j:slf4j-api</include>
+        <!-- hook to built-in Java backend for slf4j included -->
+        <include>org.slf4j:slf4j-jdk14</include>
+      </includes>
+      <unpack>false</unpack>
+      <scope>runtime</scope>
+      <outputDirectory>lib</outputDirectory>
+      <useProjectArtifact>false</useProjectArtifact>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </dependencySet>
+  </dependencySets>
+
+  <!-- Add other files - scripts, documentation, examples -->
+  <fileSets>
+    <fileSet>
+      <directory>src/main/scripts</directory>
+      <outputDirectory>bin</outputDirectory>
+      <includes><include>*.sh</include></includes>
+      <fileMode>755</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/scripts</directory>
+      <outputDirectory>bin</outputDirectory>
+      <excludes><exclude>*.sh</exclude></excludes>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+    <fileSet>
+      <directory>src/main/properties</directory>
+      <outputDirectory>config</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+
+    <!-- copy standard top level files -->
+    <fileSet>
+      <directory>.</directory>
+      <outputDirectory></outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes>
+        <include>README*</include>
+        <include>readme*</include>
+        <include>RELEASE_NOTES*</include>
+        <include>Release-Notes*</include>
+        <include>issuesFixed/**</include>
+      </includes>
+    </fileSet>
+
+    <fileSet>
+      <directory>target/site/apidocs</directory>
+      <outputDirectory>docs/d/api</outputDirectory>
+      <excludes>
+        <exclude>options</exclude>
+        <exclude>packages</exclude>
+        <exclude>files</exclude>
+        <exclude>argfile</exclude>
+      </excludes>
+      <fileMode>444</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+
+    <!-- Documentation -->
+    <fileSet>
+      <directory>uimaj-documentation/target/site/</directory>
+      <outputDirectory>docs</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <excludes>
+        <exclude>**/maint.*</exclude>
+        <exclude>**/maint/**</exclude>
+      </excludes>
+    </fileSet>
+
+    <!-- examples -->
+    <fileSet>
+      <directory>uimaj-examples/src/main</directory>
+      <outputDirectory>examples</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+      <includes>
+        <include>deploy/**</include>
+        <include>descriptors/**</include>
+        <include>resources/**</include>
+        <include>run_configuration/**</include>
+      </includes>
+    </fileSet>
+
+    <fileSet>
+      <directory>uimaj-examples/src/main/java</directory>
+      <outputDirectory>examples/src</outputDirectory>
+      <excludes>
+        <exclude>org/apache/uima/examples/xmi/XmiEcoreCasConsumer.java</exclude>
+        <exclude>org/apache/uima/examples/xmi/Ecore2UimaTypeSystem.java</exclude>
+        <exclude>org/apache/uima/examples/xmi/UimaTypeSystem2Ecore.java</exclude>
+      </excludes>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+    <fileSet>
+      <directory>uimaj-examples/src/main/data</directory>
+      <outputDirectory>examples/data</outputDirectory>
+      <fileMode>644</fileMode>
+      <!-- next mode 777 because some examples write into dir
+           and we want to eliminate failures due to write permissions -->
+      <directoryMode>777</directoryMode>
+    </fileSet>
+
+    <!-- Copy the API Change reports -->
+    <fileSet>
+      <directory>uimaj-core/api-change-report</directory>
+      <outputDirectory>uimaj-core/api-change-report</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+    <fileSet>
+      <directory>uimaj-cpe/api-change-report</directory>
+      <outputDirectory>uimaj-cpe/api-change-report</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+    <fileSet>
+      <directory>uimaj-json/api-change-report</directory>
+      <outputDirectory>uimaj-json/api-change-report</outputDirectory>
+      <fileMode>644</fileMode>
+      <directoryMode>755</directoryMode>
+    </fileSet>
+  </fileSets>
+
+  <files>
+    <!-- copy bin distr license and notice -->
+    <file>
+      <source>src/main/bin_distr_license_notices/LICENSE.txt</source>
+      <outputDirectory></outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>src/main/bin_distr_license_notices/NOTICE-without-jackson.md</source>
+      <destName>NOTICE.md</destName>
+      <outputDirectory></outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+
+    <file>
+      <source>uimaj-examples/src/main/eclipseProject/project</source>
+      <outputDirectory>examples</outputDirectory>
+      <destName>.project</destName>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>uimaj-examples/src/main/eclipseProject/classpath</source>
+      <outputDirectory>examples</outputDirectory>
+      <destName>.classpath</destName>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>uimaj-examples/src/main/eclipseProject/ecore_src_readme.txt</source>
+      <outputDirectory>examples/ecore_src</outputDirectory>
+      <destName>readme.txt</destName>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>uimaj-examples/src/main/java/org/apache/uima/examples/xmi/XmiEcoreCasConsumer.java</source>
+      <outputDirectory>examples/ecore_src/org/apache/uima/examples/xmi</outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>uimaj-examples/src/main/java/org/apache/uima/examples/xmi/Ecore2UimaTypeSystem.java</source>
+      <outputDirectory>examples/ecore_src/org/apache/uima/examples/xmi</outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>uimaj-examples/src/main/java/org/apache/uima/examples/xmi/UimaTypeSystem2Ecore.java</source>
+      <outputDirectory>examples/ecore_src/org/apache/uima/examples/xmi</outputDirectory>
+      <fileMode>644</fileMode>
+    </file>
+    <file>
+      <source>api-change-report.html</source>
+      <outputDirectory>.</outputDirectory>
+    </file>
+  </files>
+</assembly>
\ No newline at end of file
diff --git a/src/main/assembly/bin.xml b/src/main/assembly/bin.xml
index daa6770..081e561 100644
--- a/src/main/assembly/bin.xml
+++ b/src/main/assembly/bin.xml
@@ -178,11 +178,6 @@
         <include>org.bitbucket.mstrobel:procyon-core</include>
         <include>com.github.javaparser:javaparser-core</include>
         <include>org.slf4j:slf4j-api</include>
-        <!--  log4j not default included
-        <include>org.apache.logging.log4j:log4j-slf4j-impl</include>
-        <include>org.apache.logging.log4j:log4j-core</include>
-        <include>org.apache.logging.log4j:log4j-api</include>
-         -->
         <!-- hook to built-in Java backend for slf4j included -->
         <include>org.slf4j:slf4j-jdk14</include>
       </includes>
diff --git a/src/main/bin_distr_license_notices/NOTICE-without-jackson.md b/src/main/bin_distr_license_notices/NOTICE-without-jackson.md
new file mode 100644
index 0000000..0600d54
--- /dev/null
+++ b/src/main/bin_distr_license_notices/NOTICE-without-jackson.md
@@ -0,0 +1,15 @@
+# Apache UIMA Java SDK
+
+Copyright 2006 The Apache Software Foundation
+
+This product includes software developed at
+The Apache Software Foundation (http://www.apache.org/).
+
+Portions of UIMA were originally developed by
+International Business Machines Corporation and are
+licensed to the Apache Software Foundation under the
+"Software Grant License Agreement", informally known as the 
+"IBM UIMA License Agreement".
+Copyright (c) 2003, 2006 IBM Corporation.
+
+ResolverUtil.java Copyright 2005-2006 Tim Fennell
diff --git a/src/main/eclipse/org.eclipse.jdt.core.prefs b/src/main/eclipse/org.eclipse.jdt.core.prefs
index d92babd..9a7cc7b 100644
--- a/src/main/eclipse/org.eclipse.jdt.core.prefs
+++ b/src/main/eclipse/org.eclipse.jdt.core.prefs
@@ -1,15 +1,15 @@
 eclipse.preferences.version=1
 org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled
-org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.8
-org.eclipse.jdt.core.compiler.compliance=1.8
+org.eclipse.jdt.core.compiler.codegen.targetPlatform=17
+org.eclipse.jdt.core.compiler.compliance=17
 org.eclipse.jdt.core.compiler.problem.assertIdentifier=error
 org.eclipse.jdt.core.compiler.problem.enablePreviewFeatures=disabled
 org.eclipse.jdt.core.compiler.problem.enumIdentifier=error
 org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning
 org.eclipse.jdt.core.compiler.problem.reportPreviewFeatures=ignore
-org.eclipse.jdt.core.compiler.processAnnotations=enabled
-org.eclipse.jdt.core.compiler.release=disabled
-org.eclipse.jdt.core.compiler.source=1.8
+org.eclipse.jdt.core.compiler.processAnnotations=disabled
+org.eclipse.jdt.core.compiler.release=enabled
+org.eclipse.jdt.core.compiler.source=17
 org.eclipse.jdt.core.formatter.align_assignment_statements_on_columns=false
 org.eclipse.jdt.core.formatter.align_fields_grouping_blank_lines=2147483647
 org.eclipse.jdt.core.formatter.align_selector_in_method_invocation_on_expression_first_line=false
diff --git a/uimaj-core/pom.xml b/uimaj-core/pom.xml
index 8597966..064ba3b 100644
--- a/uimaj-core/pom.xml
+++ b/uimaj-core/pom.xml
@@ -40,73 +40,29 @@
   </properties>
 
   <dependencies>
-    
-    <!-- Loggers -->
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId>  <!-- core, not api, because need to set log level via api -->
-      <version>${log4j-version}</version>
-      <!--  "provided" fails in maven test - says cannot initialize class that makes ref to classes in this jar 
-            "test" fails in maven compile - cannot compile -->
-      <scope>provided</scope>
-    </dependency>
-
-    <!-- dependency>  moved to surefire configuration
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-core</artifactId-->  <!-- core, not api, because need to set log level via api -->
-      <!-- version>${log4j-version}</version-->
-      <!--  "provided" fails in maven test - says cannot initialize class that makes ref to classes in this jar 
-            "test" fails in maven compile - cannot compile -->
-      <!-- scope>test</scope>
-    </dependency-->
-
-    <dependency>
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-      <version>${log4j-version}</version>
-      <!--  "provided" fails in maven test - says cannot initialize class that makes ref to classes in this jar 
-            "test" fails in maven compile - cannot compile -->
-      <scope>provided</scope>
-    </dependency>
-
-     <!-- dependency>  moved to surefire configuration
-      <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-api</artifactId>
-      <version>${log4j-version}</version>
-      <scope>test</scope>  
-    </dependency-->
-
     <dependency>
       <groupId>org.slf4j</groupId>
       <artifactId>slf4j-api</artifactId>
     </dependency>
-    
-    <!-- needed to convert slf4j markers into log4j markers 
-         and for running the test -->
+
+    <!-- Optional loggers -->
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-      <version>${log4j-version}</version>
-      <!-- scope provided: put in compile classpath, excluded from test classpath, not passed along -->
+      <artifactId>log4j-core</artifactId>
       <scope>provided</scope>
     </dependency>
-
-     <!-- dependency>  moved to surefire configuration  
+    <dependency>
       <groupId>org.apache.logging.log4j</groupId>
-      <artifactId>log4j-slf4j-impl</artifactId>
-      <version>${log4j-version}</version>
-      <scope>test</scope> 
-    </dependency-->
-
-    <!--  causes build error: package org.apache.logging.slf4j does not exist
+      <artifactId>log4j-api</artifactId>
+      <scope>provided</scope>
+    </dependency>
     <dependency>
       <groupId>org.apache.logging.log4j</groupId>
       <artifactId>log4j-slf4j-impl</artifactId>
       <version>${log4j-version}</version>
-      <scope>test</scope>
+      <scope>provided</scope>
     </dependency>
-                     -->
-
+    
     <dependency>
       <groupId>org.apache.uima</groupId>
       <artifactId>uimaj-test-util</artifactId>
@@ -161,37 +117,8 @@
     <dependency>
       <groupId>org.apache.commons</groupId>
       <artifactId>commons-lang3</artifactId>
-      <version>3.12.0</version>
       <scope>test</scope>
     </dependency>
-
-    <!--  Uncomment one of these to add Saxon8 or 9 to the classpath for JUnit tests.
-          1 fails due to different formatting and a dropped xmlns attribute, 
-          5 work when run separately or by mvn, but fail when running all tests from Eclipse:
-              Caused by: org.xml.sax.SAXParseException: cvc-elt.1: Cannot find the declaration of element '....'
-      -->
-   <!--
-    <dependency>
-      <groupId>net.sf.saxon</groupId>
-      <artifactId>Saxon-HE</artifactId>
-      <version>9.7.0-14</version>
-      <scope>test</scope>
-    </dependency>
-      
- 
-    <dependency>
-      <groupId>net.sf.saxon</groupId>
-      <artifactId>saxon</artifactId>
-      <version>8.7</version>
-      <scope>test</scope>
-    </dependency>
-    <dependency>
-      <groupId>net.sf.saxon</groupId>
-      <artifactId>saxon-dom</artifactId>
-      <version>8.7</version>
-      <scope>test</scope>
-    </dependency>
-  -->
   </dependencies>
 
   <build>
@@ -219,15 +146,6 @@
           </executions>
         </plugin>
 
-        <!-- Uncomment the next to run with -Xlint:unchecked -->
-        <!--plugin>
-          <groupId>org.apache.maven.plugins</groupId>
-          <artifactId>maven-compiler-plugin</artifactId>
-          <configuration>
-            <compilerArgument>-Xlint:unchecked</compilerArgument>
-          </configuration>
-        </plugin-->
-
         <plugin>
           <groupId>org.apache.rat</groupId>
           <artifactId>apache-rat-plugin</artifactId>
@@ -311,26 +229,6 @@
         </configuration>
       </plugin>
     
-      <!-- experiment with CLIRR
-        gets fatal error: 
-        
-        net.sf.clirr.core.CheckerException: Unable to find information in class org.apache.uima.cas.impl.AnnotationBaseImpl 
-        referring back to nested class org.apache.uima.cas.impl.AnnotationBaseImpl$1
-        at net.sf.clirr.core.internal.bcel.BcelScopeHelper.getClassScope(BcelScopeHelper.java:127)
-        at net.sf.clirr.core.internal.bcel.BcelJavaType.getDeclaredScope(BcelJavaType.java:141)
-        at net.sf.clirr.core.internal.bcel.BcelJavaType.getEffectiveScope(BcelJavaType.java:145)
-        at net.sf.clirr.core.internal.checks.ClassScopeCheck.check(ClassScopeCheck.java:72)
-        at net.sf.clirr.core.Checker.runClassChecks(Checker.java:190)
-        at net.sf.clirr.core.Checker.reportDiffs(Checker.java:136)
-        at org.codehaus.mojo.clirr.AbstractClirrMojo.executeClirr(AbstractClirrMojo.java:236) 
-      -->
-      <!--plugin>  
-        <artifactId>clirr-maven-plugin</artifactId>
-        <groupId>org.codehaus.mojo</groupId>
-        <version>2.2.3-SNAPSHOT</version>
-        
-      </plugin-->
-      
       <!-- filter the template for the version java code
            to insert the version from properties -->
       <plugin>
diff --git a/uimaj-documentation/pom.xml b/uimaj-documentation/pom.xml
index 9d638ab..d6d3894 100644
--- a/uimaj-documentation/pom.xml
+++ b/uimaj-documentation/pom.xml
@@ -32,6 +32,10 @@
   <name>Apache UIMA Java SDK Documentation</name>
   <url>https://uima.apache.org</url>
 
+  <properties>
+    <maven.deploy.skip>true</maven.deploy.skip>
+  </properties>
+
   <build>
     <plugins>
       <plugin>
diff --git a/uimaj-json/pom.xml b/uimaj-json/pom.xml
index bb43fe3..840f633 100644
--- a/uimaj-json/pom.xml
+++ b/uimaj-json/pom.xml
@@ -26,8 +26,8 @@
     <relativePath>../uimaj-parent/pom.xml</relativePath>
   </parent>
   <artifactId>uimaj-json</artifactId>
-  <name>Apache UIMA Base: ${project.artifactId}: JSON</name>
-  <description>JSON support for UIMA SDK</description>
+  <name>Apache UIMA Base: ${project.artifactId}: JSON (deprecated)</name>
+  <description>JSON support for UIMA SDK. This module is deprecated. Use https://github.com/apache/uima-uimaj-io-jsoncas instead.</description>
 
   <dependencies>
     <dependency>
diff --git a/uimaj-legacy-jira-report/pom.xml b/uimaj-legacy-jira-report/pom.xml
deleted file mode 100644
index 00092c6..0000000
--- a/uimaj-legacy-jira-report/pom.xml
+++ /dev/null
@@ -1,79 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!--
-   Licensed to the Apache Software Foundation (ASF) under one
-   or more contributor license agreements.  See the NOTICE file
-   distributed with this work for additional information
-   regarding copyright ownership.  The ASF licenses this file
-   to you under the Apache License, Version 2.0 (the
-   "License"); you may not use this file except in compliance
-   with the License.  You may obtain a copy of the License at
-
-     http://www.apache.org/licenses/LICENSE-2.0
-
-   Unless required by applicable law or agreed to in writing,
-   software distributed under the License is distributed on an
-   "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
-   KIND, either express or implied.  See the License for the
-   specific language governing permissions and limitations
-   under the License.
--->
-<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd">
-  <modelVersion>4.0.0</modelVersion>
-
-  <parent>
-    <groupId>org.apache.uima</groupId>
-    <artifactId>uimaj-parent</artifactId>
-    <version>3.4.1-SNAPSHOT</version>
-    <relativePath>../uimaj-parent/pom.xml</relativePath>
-  </parent>
-
-  <artifactId>uimaj-legacy-jira-report</artifactId>
-  <packaging>pom</packaging>
-
-  <properties>
-    <jiraVersion>3.4.0SDK</jiraVersion>
-    <maven.deploy.skip>true</maven.deploy.skip>
-  </properties>
-
-  <issueManagement>
-    <system>Jira</system>
-    <url>https://issues.apache.org/jira/browse/UIMA</url>
-  </issueManagement>
-
-  <profiles>
-    <profile>
-      <id>apache-release</id>
-      <build>
-        <!-- Run jira report -->
-        <!-- depends on having -DjiraVersion set -->
-        <plugins>
-          <plugin>
-            <artifactId>maven-changes-plugin</artifactId>
-            <executions>
-              <execution>
-                <id>default-cli</id>
-                <phase>generate-resources</phase>
-                <goals>
-                  <goal>jira-report</goal>
-                </goals>
-                <configuration>
-                  <useJql>true</useJql>
-                  <fixVersionIds>${jiraVersion}</fixVersionIds>
-                  <columnNames>Type,Key,Status,Summary</columnNames>
-                  <resolutionIds>Fixed</resolutionIds>
-                  <statusIds>Closed,Resolved</statusIds>
-                  <sortColumnNames>Type, Key</sortColumnNames>
-                  <!-- changed sortColumnNames for Jira 5
-                       was: <sortColumnNames>Status, Key, Type</sortColumnNames>
-                   -->
-                  <outputDirectory>target/issuesFixed</outputDirectory>
-                  <maxEntries>1000</maxEntries> <!-- hopefully, bigger than ever needed -->
-                </configuration>
-              </execution>
-            </executions>
-          </plugin>
-        </plugins>
-      </build>
-    </profile>
-  </profiles>
-</project>
diff --git a/uimaj-parent/pom.xml b/uimaj-parent/pom.xml
index f495232..81bf280 100644
--- a/uimaj-parent/pom.xml
+++ b/uimaj-parent/pom.xml
@@ -139,11 +139,12 @@
      properties already, they should be injected manually into the plugins. 
     -->
     <slf4j-version>1.7.36</slf4j-version>
-    <maven.version>3.2.5</maven.version>
+    <maven.version>3.8.1</maven.version>
 
     <log4j-version>2.20.0</log4j-version>
     <commons-io-version>2.13.0</commons-io-version>
     <commons-csv-version>1.10.0</commons-csv-version>
+    <commons-lang3-version>3.13.0</commons-lang3-version>
     <jackson-version>2.15.2</jackson-version>
     <junit-version>5.10.0</junit-version>
     <junit-vintage-version>4.13.2</junit-vintage-version>
@@ -216,6 +217,14 @@
         <artifactId>slf4j-api</artifactId>
         <version>${slf4j-version}</version>
       </dependency>
+
+      <dependency>
+        <groupId>org.apache.logging.log4j</groupId>
+        <artifactId>log4j-bom</artifactId>
+        <version>${log4j-version}</version>
+        <type>pom</type>
+        <scope>import</scope>
+      </dependency>
       
       <dependency>
         <groupId>commons-io</groupId>
@@ -224,6 +233,11 @@
       </dependency>
       <dependency>
         <groupId>org.apache.commons</groupId>
+        <artifactId>commons-lang3</artifactId>
+        <version>${commons-lang3-version}</version>
+      </dependency>
+      <dependency>
+        <groupId>org.apache.commons</groupId>
         <artifactId>commons-csv</artifactId>
         <version>${commons-csv-version}</version>
       </dependency>