diff --git a/lib/modules/datasource/maven/__fixtures__/index.html b/lib/modules/datasource/maven/__fixtures__/index.html
deleted file mode 100644
index 203b42c782996a3016ac39d85a75473d85d513a0..0000000000000000000000000000000000000000
--- a/lib/modules/datasource/maven/__fixtures__/index.html
+++ /dev/null
@@ -1,40 +0,0 @@
-
-<!DOCTYPE html>
-<html>
-
-<head>
-	<title>Central Repository: org/example/package</title>
-	<meta name="viewport" content="width=device-width, initial-scale=1.0">
-	<style>
-body {
-	background: #fff;
-}
-	</style>
-
-<body>
-	<header>
-		<h1>org/example/package</h1>
-	</header>
-	<hr/>
-	<main>
-		<pre id="contents">
-<a href="../">../</a>
-<a href="0.0.1/" title="0.0.1/">0.0.1/</a>                                                           -         -
-<a href="1.0.0/" title="1.0.0/">1.0.0/</a>                                            2021-02-22 14:43         -
-<a href="1.0.1/" title="1.0.1/">1.0.1/</a>                                            2021-04-12 15:51         -
-<a href="1.0.2/" title="1.0.2/">1.0.2/</a>                                            2021-06-16 12:47         -
-<a href="2.0.0/" title="2.0.0/">2.0.0/</a>                                            2021-06-18 16:24         -
-<a href="maven-metadata-local.xml" title="maven-metadata-local.xml">maven-metadata-local.xml</a>                          2021-10-18 11:04       304
-<a href="maven-metadata-local.xml.md5" title="maven-metadata-local.xml.md5">maven-metadata-local.xml.md5</a>                      2021-10-18 11:04        33
-<a href="maven-metadata-local.xml.sha1" title="maven-metadata-local.xml.sha1">maven-metadata-local.xml.sha1</a>                     2021-10-18 11:04        41
-<a href="maven-metadata.xml" title="maven-metadata.xml">maven-metadata.xml</a>                                2021-10-18 11:04      3982
-<a href="maven-metadata.xml.md5" title="maven-metadata.xml.md5">maven-metadata.xml.md5</a>                            2021-10-18 11:04        32
-<a href="maven-metadata.xml.sha1" title="maven-metadata.xml.sha1">maven-metadata.xml.sha1</a>                           2021-10-18 11:04        40
-<a href="maven-metadata.xml.sha256" title="maven-metadata.xml.sha256">maven-metadata.xml.sha256</a>                         2021-10-18 11:04        64
-<a href="maven-metadata.xml.sha512" title="maven-metadata.xml.sha512">maven-metadata.xml.sha512</a>                         2021-10-18 11:04       128
-		</pre>
-	</main>
-	<hr/>
-</body>
-
-</html>
diff --git a/lib/modules/datasource/maven/index.spec.ts b/lib/modules/datasource/maven/index.spec.ts
index 757e328764afa2691e0be0750eebc3d0aede9faa..4a87d5323f416ede11e45c65f4bb0c97049c66ed 100644
--- a/lib/modules/datasource/maven/index.spec.ts
+++ b/lib/modules/datasource/maven/index.spec.ts
@@ -38,7 +38,6 @@ interface MockOpts {
   pom?: string | null;
   latest?: string;
   snapshots?: SnapshotOpts[] | null;
-  html?: string | null;
 }
 
 function mockGenericPackage(opts: MockOpts = {}) {
@@ -46,7 +45,6 @@ function mockGenericPackage(opts: MockOpts = {}) {
     dep = 'org.example:package',
     base = baseUrl,
     latest = '2.0.0',
-    html,
     snapshots,
   } = opts;
   const meta =
@@ -62,12 +60,6 @@ function mockGenericPackage(opts: MockOpts = {}) {
     scope.get(`/${packagePath}/maven-metadata.xml`).reply(200, meta);
   }
 
-  if (html) {
-    scope.get(`/${packagePath}/`).reply(200, html);
-  } else if (html === null) {
-    scope.get(`/${packagePath}/`).reply(404);
-  }
-
   if (pom) {
     if (latest.endsWith('-SNAPSHOT')) {
       const [major, minor, patch] = latest
@@ -129,8 +121,6 @@ describe('modules/datasource/maven/index', () => {
   it('returns null when metadata is not found', async () => {
     httpMock
       .scope(baseUrl)
-      .get('/org/example/package/')
-      .reply(404)
       .get('/org/example/package/maven-metadata.xml')
       .reply(404);
 
@@ -140,7 +130,7 @@ describe('modules/datasource/maven/index', () => {
   });
 
   it('returns releases', async () => {
-    mockGenericPackage({ html: null });
+    mockGenericPackage();
 
     const res = await get();
 
@@ -151,7 +141,6 @@ describe('modules/datasource/maven/index', () => {
     const meta = Fixtures.get('metadata-snapshot-version.xml');
     mockGenericPackage({
       meta: Fixtures.get('metadata-snapshot-only.xml'),
-      html: null,
       latest: '1.0.3-SNAPSHOT',
       snapshots: [
         {
@@ -184,7 +173,6 @@ describe('modules/datasource/maven/index', () => {
     mockGenericPackage({
       meta: Fixtures.get('metadata-snapshot-only.xml'),
       pom: null,
-      html: null,
       latest: '1.0.3-SNAPSHOT',
       snapshots: [
         {
@@ -206,32 +194,6 @@ describe('modules/datasource/maven/index', () => {
     });
   });
 
-  it('returns html-based releases', async () => {
-    mockGenericPackage({
-      latest: '2.0.0',
-      html: Fixtures.get('index.html'),
-      meta: Fixtures.get('index.xml'),
-      snapshots: null,
-    });
-
-    const res = await get();
-
-    expect(res).toEqual({
-      display: 'org.example:package',
-      group: 'org.example',
-      homepage: 'https://package.example.org/about',
-      name: 'package',
-      packageScope: 'org.example',
-      registryUrl: 'https://repo.maven.apache.org/maven2',
-      releases: [
-        { version: '1.0.0', releaseTimestamp: '2021-02-22T14:43:00.000Z' },
-        { version: '1.0.1', releaseTimestamp: '2021-04-12T15:51:00.000Z' },
-        { version: '1.0.2', releaseTimestamp: '2021-06-16T12:47:00.000Z' },
-        { version: '2.0.0', releaseTimestamp: '2021-06-18T16:24:00.000Z' },
-      ],
-    });
-  });
-
   it('returns releases from custom repository', async () => {
     mockGenericPackage({ base: baseUrlCustom });
 
@@ -241,7 +203,7 @@ describe('modules/datasource/maven/index', () => {
   });
 
   it('falls back to next registry url', async () => {
-    mockGenericPackage({ html: null });
+    mockGenericPackage();
     httpMock
       .scope('https://failed_repo')
       .get('/org/example/package/maven-metadata.xml')
@@ -294,7 +256,7 @@ describe('modules/datasource/maven/index', () => {
   });
 
   it('skips registry with invalid metadata structure', async () => {
-    mockGenericPackage({ html: null });
+    mockGenericPackage();
     httpMock
       .scope('https://invalid_metadata_repo')
       .get('/org/example/package/maven-metadata.xml')
@@ -310,7 +272,7 @@ describe('modules/datasource/maven/index', () => {
   });
 
   it('skips registry with invalid XML', async () => {
-    mockGenericPackage({ html: null });
+    mockGenericPackage();
     httpMock
       .scope('https://invalid_metadata_repo')
       .get('/org/example/package/maven-metadata.xml')
@@ -326,9 +288,9 @@ describe('modules/datasource/maven/index', () => {
   });
 
   it('handles optional slash at the end of registry url', async () => {
-    mockGenericPackage({ html: null });
+    mockGenericPackage();
     const resA = await get('org.example:package', baseUrl.replace(/\/+$/, ''));
-    mockGenericPackage({ html: null });
+    mockGenericPackage();
     const resB = await get('org.example:package', baseUrl.replace(/\/*$/, '/'));
     expect(resA).not.toBeNull();
     expect(resB).not.toBeNull();
@@ -346,7 +308,7 @@ describe('modules/datasource/maven/index', () => {
 
   it('supports scm.url values prefixed with "scm:"', async () => {
     const pom = Fixtures.get('pom.scm-prefix.xml');
-    mockGenericPackage({ pom, html: null });
+    mockGenericPackage({ pom });
 
     const res = await get();
 
@@ -504,7 +466,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-no-info/meta.xml'),
         pom: Fixtures.get('child-no-info/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
       mockGenericPackage(parentPackage);
 
@@ -521,7 +482,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-empty/meta.xml'),
         pom: Fixtures.get('child-empty/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
 
       const res = await get();
@@ -556,7 +516,6 @@ describe('modules/datasource/maven/index', () => {
       mockGenericPackage({
         ...childPomMock,
         meta: childMeta,
-        html: null,
       });
       mockGenericPackage(parentPomMock);
       mockGenericPackage(childPomMock);
@@ -576,7 +535,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-scm/meta.xml'),
         pom: Fixtures.get('child-scm/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
       mockGenericPackage(parentPackage);
 
@@ -593,7 +551,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-url/meta.xml'),
         pom: Fixtures.get('child-url/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
       mockGenericPackage(parentPackage);
 
@@ -610,7 +567,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-all-info/meta.xml'),
         pom: Fixtures.get('child-all-info/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
 
       const res = await get();
@@ -626,7 +582,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-scm-gitatcolon/meta.xml'),
         pom: Fixtures.get('child-scm-gitatcolon/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
 
       const res = await get();
@@ -641,7 +596,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-scm-gitatslash/meta.xml'),
         pom: Fixtures.get('child-scm-gitatslash/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
 
       const res = await get();
@@ -656,7 +610,6 @@ describe('modules/datasource/maven/index', () => {
         meta: Fixtures.get('child-scm-gitprotocol/meta.xml'),
         pom: Fixtures.get('child-scm-gitprotocol/pom.xml'),
         latest: '2.0.0',
-        html: null,
       });
 
       const res = await get();
diff --git a/lib/modules/datasource/maven/index.ts b/lib/modules/datasource/maven/index.ts
index aae05ab640bf485c005e764ce3f9030a37abf4d1..f16ac2e6da3857e8a45f7234e6ab2d6993b55f5b 100644
--- a/lib/modules/datasource/maven/index.ts
+++ b/lib/modules/datasource/maven/index.ts
@@ -1,11 +1,9 @@
 import is from '@sindresorhus/is';
-import { DateTime } from 'luxon';
 import type { XmlDocument } from 'xmldoc';
 import { GlobalConfig } from '../../../config/global';
 import { logger } from '../../../logger';
 import * as packageCache from '../../../util/cache/package';
 import { cache } from '../../../util/cache/package/decorator';
-import { newlineRegex, regEx } from '../../../util/regex';
 import { ensureTrailingSlash } from '../../../util/url';
 import mavenVersion from '../../versioning/maven';
 import * as mavenVersioning from '../../versioning/maven';
@@ -24,7 +22,6 @@ import type { MavenDependency, ReleaseMap } from './types';
 import {
   checkResource,
   createUrlForDependencyPom,
-  downloadHttpProtocol,
   downloadMavenXml,
   getDependencyInfo,
   getDependencyParts,
@@ -55,11 +52,6 @@ function extractVersions(metadata: XmlDocument): string[] {
   return elements.map((el) => el.val);
 }
 
-const mavenCentralHtmlVersionRegex = regEx(
-  '^<a href="(?<version>[^"]+)/" title="(?:[^"]+)/">(?:[^"]+)/</a>\\s+(?<releaseTimestamp>\\d\\d\\d\\d-\\d\\d-\\d\\d \\d\\d:\\d\\d)\\s+-$',
-  'i',
-);
-
 export const defaultRegistryUrls = [MAVEN_REPO];
 
 export class MavenDatasource extends Datasource {
@@ -124,72 +116,9 @@ export class MavenDatasource extends Datasource {
     return releaseMap;
   }
 
-  async addReleasesFromIndexPage(
-    inputReleaseMap: ReleaseMap,
-    dependency: MavenDependency,
-    repoUrl: string,
-  ): Promise<ReleaseMap> {
-    if (!repoUrl.startsWith(MAVEN_REPO)) {
-      return inputReleaseMap;
-    }
-
-    const cacheNs = 'datasource-maven:index-html-releases';
-    const cacheKey = `${repoUrl}${dependency.dependencyUrl}`;
-    let workingReleaseMap = await packageCache.get<ReleaseMap>(
-      cacheNs,
-      cacheKey,
-    );
-    if (!workingReleaseMap) {
-      workingReleaseMap = {};
-      let retryEarlier = false;
-      try {
-        const indexUrl = getMavenUrl(dependency, repoUrl, '');
-        const res = await downloadHttpProtocol(this.http, indexUrl);
-        if (res) {
-          for (const line of res.body.split(newlineRegex)) {
-            const match = line.trim().match(mavenCentralHtmlVersionRegex);
-            if (match) {
-              const { version, releaseTimestamp: timestamp } =
-                match?.groups ?? /* istanbul ignore next: hard to test */ {};
-              if (version && timestamp) {
-                const date = DateTime.fromFormat(
-                  timestamp,
-                  'yyyy-MM-dd HH:mm',
-                  {
-                    zone: 'UTC',
-                  },
-                );
-                if (date.isValid) {
-                  const releaseTimestamp = date.toISO();
-                  workingReleaseMap[version] = { version, releaseTimestamp };
-                }
-              }
-            }
-          }
-        }
-      } catch (err) /* istanbul ignore next */ {
-        retryEarlier = true;
-        logger.debug(
-          { dependency, err },
-          'Failed to get releases from package index page',
-        );
-      }
-      const cacheTTL = retryEarlier
-        ? /* istanbul ignore next: hard to test */ 60
-        : 24 * 60;
-      await packageCache.set(cacheNs, cacheKey, workingReleaseMap, cacheTTL);
-    }
-
-    const releaseMap = { ...inputReleaseMap };
-    for (const version of Object.keys(releaseMap)) {
-      releaseMap[version] ||= workingReleaseMap[version] ?? null;
-    }
-
-    return releaseMap;
-  }
-
   getReleasesFromMap(releaseMap: ReleaseMap): Release[] {
     const releases = Object.values(releaseMap).filter(is.truthy);
+    // istanbul ignore if: will be removed
     if (releases.length) {
       return releases;
     }
@@ -210,9 +139,7 @@ export class MavenDatasource extends Datasource {
 
     logger.debug(`Looking up ${dependency.display} in repository ${repoUrl}`);
 
-    let releaseMap = await this.fetchReleasesFromMetadata(dependency, repoUrl);
-    releaseMap = await this.addReleasesFromIndexPage(
-      releaseMap,
+    const releaseMap = await this.fetchReleasesFromMetadata(
       dependency,
       repoUrl,
     );
diff --git a/lib/modules/datasource/sbt-package/index.spec.ts b/lib/modules/datasource/sbt-package/index.spec.ts
index 19423659d8e4c4cff6e687813c1684b98625b029..aa86cc3d12b0a5c1b8e5600de13a9248c138c0ec 100644
--- a/lib/modules/datasource/sbt-package/index.spec.ts
+++ b/lib/modules/datasource/sbt-package/index.spec.ts
@@ -70,8 +70,6 @@ describe('modules/datasource/sbt-package/index', () => {
             <a href="empty_but_invalid/">???</a>
           `,
         )
-        .get('/maven2/com/example/empty/')
-        .reply(200, '')
         .get('/maven2/com/example/empty_but_invalid/')
         .reply(404, '')
         .get('/maven2/com/example/empty/maven-metadata.xml')
diff --git a/lib/util/cache/package/types.ts b/lib/util/cache/package/types.ts
index 7435f8bc787301ee8112b7e1006f9f6b7a3f72f1..d61cafdfe6f32ea443bd8aa732bb75cdbde79d59 100644
--- a/lib/util/cache/package/types.ts
+++ b/lib/util/cache/package/types.ts
@@ -78,7 +78,6 @@ export type PackageCacheNamespace =
   | 'datasource-maven'
   | 'datasource-maven:head-requests-timeout'
   | 'datasource-maven:head-requests'
-  | 'datasource-maven:index-html-releases'
   | 'datasource-maven:metadata-xml'
   | 'datasource-node-version'
   | 'datasource-npm:data'