diff --git a/.gitlab/ci/configure_fedora39_java.cmake b/.gitlab/ci/configure_fedora39_java.cmake
index 7730670a912205a1b9bce5ef0a2d9654b3e8ccdd..12d1d9c9b30ce9763c27c101f0f91481d2e4ca7e 100644
--- a/.gitlab/ci/configure_fedora39_java.cmake
+++ b/.gitlab/ci/configure_fedora39_java.cmake
@@ -3,7 +3,7 @@ set(VTK_JAVA_TARGET_VERSION $ENV{VTK_JAVA_VERSION} CACHE STRING "" FORCE)
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_fedora39.cmake")
 
-set(MAVEN_LOCAL_NATIVE_NAME "Linux-amd64")
+set(MAVEN_LOCAL_NATIVE_NAME "linux-amd" CACHE STRING "" FORCE)
 set(VTK_GENERATE_SPDX OFF CACHE BOOL "" FORCE)
 
 set(VTK_MODULE_ENABLE_VTK_fides NO CACHE STRING "")
diff --git a/.gitlab/ci/configure_macos_arm64_java.cmake b/.gitlab/ci/configure_macos_arm64_java.cmake
index c203228c9ab5a48e4be5d4883f8423c8304b5d96..f590c264b30a25a876ed7e8bde1e4eb2232cb846 100644
--- a/.gitlab/ci/configure_macos_arm64_java.cmake
+++ b/.gitlab/ci/configure_macos_arm64_java.cmake
@@ -3,7 +3,7 @@ set(VTK_JAVA_TARGET_VERSION $ENV{VTK_JAVA_VERSION} CACHE STRING "" FORCE)
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_macos.cmake")
 
-set(MAVEN_LOCAL_NATIVE_NAME "Darwin-arm64")
+set(MAVEN_LOCAL_NATIVE_NAME "darwin-arm" CACHE STRING "" FORCE)
 
 set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "")
 
diff --git a/.gitlab/ci/configure_macos_x86_64_java.cmake b/.gitlab/ci/configure_macos_x86_64_java.cmake
index cb5a54abbe2f40da12092ae6d9fe830faf4153eb..ff5e7ca4f30112a137c95ce316a0d8ffa5e6e444 100644
--- a/.gitlab/ci/configure_macos_x86_64_java.cmake
+++ b/.gitlab/ci/configure_macos_x86_64_java.cmake
@@ -3,7 +3,7 @@ set(VTK_JAVA_TARGET_VERSION $ENV{VTK_JAVA_VERSION} CACHE STRING "" FORCE)
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_macos.cmake")
 
-set(MAVEN_LOCAL_NATIVE_NAME "Darwin-amd64")
+set(MAVEN_LOCAL_NATIVE_NAME "darwin-amd" CACHE STRING "" FORCE)
 
 # Ensure that we're targeting 11.0.
 set(CMAKE_OSX_DEPLOYMENT_TARGET "11.0" CACHE STRING "")
diff --git a/.gitlab/ci/configure_options.cmake b/.gitlab/ci/configure_options.cmake
index 5348c4403c004b3aa2a1b8c7af0d27598e088764..59b3d0c29b3271ac802fbae80841afbe72c70c3f 100644
--- a/.gitlab/ci/configure_options.cmake
+++ b/.gitlab/ci/configure_options.cmake
@@ -50,27 +50,30 @@ if ("$ENV{CMAKE_CONFIGURATION}" MATCHES "java")
   set(BUILD_TESTING OFF CACHE BOOL "" FORCE)
   set(CMAKE_INSTALL_JNILIBDIR "" CACHE STRING "")
   set(JOGL_VERSION "2.3.2" CACHE STRING "")
+  # Naming is <arch-platform> since some maven versions fail to properly parse
+  # the artifact name when numbers are trailing in the classifer name.
+  set(MAVEN_NATIVE_ARTIFACTS "darwin-amd;darwin-arm;linux-amd;windows-amd" CACHE STRING "" FORCE)
   set(MAVEN_VTK_ARTIFACT_SUFFIX "-java${VTK_JAVA_TARGET_VERSION}" CACHE STRING "")
-  set(MAVEN_VTK_SNAPSHOT "-SNAPSHOT" CACHE STRING "")
+  # Disable snapshots for tag releases and also when the env variable
+  # VTK_JAVA_FORCE_RELEASE is defined through the Gitlab schedule pipeline UI.
+  # Note that VTK_JAVA_FORCE_RELEASE is used to create/override VTK java
+  # releases.
+  if (NOT DEFINED ENV{CI_COMMIT_TAG} AND NOT DEFINED ENV{VTK_JAVA_FORCE_RELEASE})
+    set(MAVEN_VTK_SNAPSHOT "-SNAPSHOT" CACHE STRING "")
+  endif()
   set(VTK_BUILD_TESTING OFF CACHE BOOL "" FORCE)
-  set(VTK_DEBUG_LEAKS OFF CACHE BOOL "" FORCE)
   set(VTK_CUSTOM_LIBRARY_SOVERSION "" CACHE STRING "")
   set(VTK_CUSTOM_LIBRARY_VERSION "" CACHE STRING "")
+  set(VTK_DEBUG_LEAKS OFF CACHE BOOL "" FORCE)
   set(VTK_GROUP_ENABLE_Rendering "YES" CACHE STRING "")
   set(VTK_JAVA_JOGL_COMPONENT "YES" CACHE STRING "")
+  set(VTK_MODULE_ENABLE_VTK_RenderingOpenXR NO CACHE STRING "" FORCE)
   set(VTK_MODULE_ENABLE_VTK_TestingCore NO CACHE STRING "")
   set(VTK_MODULE_ENABLE_VTK_TestingDataModel NO CACHE STRING "")
   set(VTK_MODULE_ENABLE_VTK_TestingGenericBridge NO STRING STRING "")
   set(VTK_MODULE_ENABLE_VTK_TestingIOSQL NO CACHE STRING "")
   set(VTK_MODULE_ENABLE_VTK_TestingRendering NO CACHE STRING "")
-  set(VTK_MODULE_ENABLE_VTK_RenderingOpenXR NO CACHE STRING "" FORCE)
   set(VTK_VERSIONED_INSTALL "OFF" CACHE BOOL "" FORCE)
-  set(MAVEN_NATIVE_ARTIFACTS
-    Darwin-amd64
-    Darwin-arm64
-    Linux-amd64
-    Windows-amd64
-  )
 endif()
 
 # qt
diff --git a/.gitlab/ci/configure_windows_vs2022_java.cmake b/.gitlab/ci/configure_windows_vs2022_java.cmake
index 3c5fdb0d9dccb4e6acc2112148b9568903b6b4e1..f68bfb2126d6ffaf998936c6cd20e1edfeb86e11 100644
--- a/.gitlab/ci/configure_windows_vs2022_java.cmake
+++ b/.gitlab/ci/configure_windows_vs2022_java.cmake
@@ -5,6 +5,6 @@ set(VTK_MODULE_ENABLE_VTK_vtkvtkm NO CACHE STRING "") # Java Wrap errors in wind
 
 include("${CMAKE_CURRENT_LIST_DIR}/configure_windows.cmake")
 
-set(MAVEN_LOCAL_NATIVE_NAME "Windows-amd64")
+set(MAVEN_LOCAL_NATIVE_NAME "windows-amd" CACHE STRING "" FORCE)
 set(JOGL_GLUE "$ENV{GIT_CLONE_PATH}/.gitlab/m2/org/jogamp/gluegen/gluegen-rt/2.3.2/gluegen-rt-2.3.2.jar" CACHE FILEPATH "")
 set(JOGL_LIB  "$ENV{GIT_CLONE_PATH}/.gitlab/m2/org/jogamp/jogl/jogl-all/2.3.2/jogl-all-2.3.2.jar" CACHE FILEPATH "")
diff --git a/Wrapping/Java/CMakeLists.txt b/Wrapping/Java/CMakeLists.txt
index 2d923d9ad9d24ef6fa9c0b2c48948bc658040e56..0641368800fa9374e42ab74ae865b87de8fd1511 100644
--- a/Wrapping/Java/CMakeLists.txt
+++ b/Wrapping/Java/CMakeLists.txt
@@ -400,10 +400,11 @@ endif()
 if(VTK_JAVA_INSTALL)
   set(MAVEN_NATIVE_ARTIFACT_XML)
   foreach(native_name ${MAVEN_NATIVE_ARTIFACTS})
-    string(APPEND MAVEN_NATIVE_ARTIFACT_XML "${MAVEN_NATIVE_ARTIFACT_XML}\n                                <artifact><file>vtk${MAVEN_VTK_ARTIFACT_SUFFIX}-${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}-natives-${native_name}.jar</file><classifier>natives-${native_name}</classifier><type>jar</type></artifact>")
+    string(APPEND MAVEN_NATIVE_ARTIFACT_XML
+      "\n                <artifact><file>vtk${MAVEN_VTK_ARTIFACT_SUFFIX}-${VTK_MAJOR_VERSION}.${VTK_MINOR_VERSION}-natives-${native_name}.jar</file><classifier>natives-${native_name}</classifier><type>jar</type></artifact>")
   endforeach()
   if(VTK_JAVA_JOGL_COMPONENT)
-    string(APPEND MAVEN_DEPENDENCY_XML "${MAVEN_DEPENDENCY_XML}\n      <dependency><groupId>org.jogamp.jogl</groupId><artifactId>jogl-all-main</artifactId><version>${JOGL_VERSION}</version></dependency>\n      <dependency><groupId>org.jogamp.gluegen</groupId><artifactId>gluegen-rt-main</artifactId><version>${JOGL_VERSION}</version></dependency>")
+    string(APPEND MAVEN_DEPENDENCY_XML "\n      <dependency><groupId>org.jogamp.jogl</groupId><artifactId>jogl-all-main</artifactId><version>${JOGL_VERSION}</version></dependency>\n      <dependency><groupId>org.jogamp.gluegen</groupId><artifactId>gluegen-rt-main</artifactId><version>${JOGL_VERSION}</version></dependency>")
   endif()
   configure_file(JavaInstall.cmake.in
                  ${CMAKE_CURRENT_BINARY_DIR}/JavaInstall.cmake @ONLY)
diff --git a/Wrapping/Java/Maven/pom.xml.in b/Wrapping/Java/Maven/pom.xml.in
index ea79176bf337c9d5cfd0d2ec6653fcec4cacb9d2..d5376a362e1dfabdf2ef5a038f910dba04d67c5b 100644
--- a/Wrapping/Java/Maven/pom.xml.in
+++ b/Wrapping/Java/Maven/pom.xml.in
@@ -54,8 +54,9 @@
       <distribution>repo</distribution>
     </license>
   </licenses>
-  <dependencies>@MAVEN_DEPENDENCY_XML@
-    </dependencies>
+  <dependencies>
+@MAVEN_DEPENDENCY_XML@
+  </dependencies>
   <distributionManagement>
     <!-- Warning: Generating release artifacts is only meant to be used after
          a compilation of VTK across all the targeted platforms while overriding
@@ -140,7 +141,7 @@
                   <file>vtk-@VTK_MAJOR_VERSION@.@VTK_MINOR_VERSION@.jar</file>
                   <type>jar</type>
                 </artifact>
-                @MAVEN_NATIVE_ARTIFACT_XML@
+@MAVEN_NATIVE_ARTIFACT_XML@
               </artifacts>
             </configuration>
           </execution>