diff --git a/tools/archive.py b/tools/archive.py
index d7bf1a9..91affd6 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -161,11 +161,13 @@
     create_maven_release.generate_desugar_configuration_maven_zip(
         utils.DESUGAR_CONFIGURATION_MAVEN_ZIP,
         utils.DESUGAR_CONFIGURATION,
-        utils.DESUGAR_IMPLEMENTATION)
+        utils.DESUGAR_IMPLEMENTATION,
+        utils.LIBRARY_DESUGAR_CONVERSIONS_LEGACY_ZIP)
     create_maven_release.generate_desugar_configuration_maven_zip(
-        utils.DESUGAR_CONFIGURATION_LEGACY_JDK11_MAVEN_ZIP,
+        utils.DESUGAR_CONFIGURATION_JDK11_LEGACY_MAVEN_ZIP,
         utils.DESUGAR_CONFIGURATION_JDK11_LEGACY,
-        utils.DESUGAR_IMPLEMENTATION_JDK11)
+        utils.DESUGAR_IMPLEMENTATION_JDK11,
+        utils.LIBRARY_DESUGAR_CONVERSIONS_LEGACY_ZIP)
 
     version = GetVersion()
     is_main = IsMain(version)
@@ -196,6 +198,8 @@
       utils.MAVEN_ZIP_LIB,
       utils.DESUGAR_CONFIGURATION,
       utils.DESUGAR_CONFIGURATION_MAVEN_ZIP,
+      utils.DESUGAR_CONFIGURATION_JDK11_LEGACY,
+      utils.DESUGAR_CONFIGURATION_JDK11_LEGACY_MAVEN_ZIP,
       utils.GENERATED_LICENSE,
     ]:
       file_name = os.path.basename(file)
@@ -266,6 +270,40 @@
             utils.upload_file_to_cloud_storage(
                 desugar_jdk_libs_configuration_jar, jar_destination)
 
+      # TODO(sgjesse): Refactor this to avoid the duplication of what is above.
+      # Upload desugar_jdk_libs JDK-11 legacyconfiguration to a maven compatible location.
+      if file == utils.DESUGAR_CONFIGURATION_JDK11_LEGACY:
+        jar_basename = 'desugar_jdk_libs_configuration.jar'
+        jar_version_name = 'desugar_jdk_libs_configuration-%s-jdk11-legacy.jar' % version
+        maven_dst = GetUploadDestination(
+            utils.get_maven_path('desugar_jdk_libs_configuration', version),
+                                 jar_version_name, is_main)
+
+        with utils.TempDir() as tmp_dir:
+          desugar_jdk_libs_configuration_jar = os.path.join(tmp_dir,
+                                                            jar_version_name)
+          create_maven_release.generate_jar_with_desugar_configuration(
+              utils.DESUGAR_CONFIGURATION_JDK11_LEGACY,
+              utils.DESUGAR_IMPLEMENTATION_JDK11,
+              utils.LIBRARY_DESUGAR_CONVERSIONS_ZIP,
+              desugar_jdk_libs_configuration_jar)
+
+          if options.dry_run:
+            print('Dry run, not actually creating maven repo for '
+                + 'desugar configuration.')
+            if options.dry_run_output:
+              shutil.copyfile(
+                  desugar_jdk_libs_configuration_jar,
+                  os.path.join(options.dry_run_output, jar_version_name))
+          else:
+            utils.upload_file_to_cloud_storage(
+                desugar_jdk_libs_configuration_jar, maven_dst)
+            print('Maven repo root available at: %s' % GetMavenUrl(is_main))
+            # Also archive the jar as non maven destination for Google3
+            jar_destination = GetUploadDestination(
+                version, jar_basename, is_main)
+            utils.upload_file_to_cloud_storage(
+                desugar_jdk_libs_configuration_jar, jar_destination)
 
 if __name__ == '__main__':
   sys.exit(Main())
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index 6250c75..de9f0ac 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -383,7 +383,8 @@
     move(destination + '.zip', destination)
 
 # Generate the maven zip for the configuration to desugar desugar_jdk_libs.
-def generate_desugar_configuration_maven_zip(out, configuration, implementation):
+def generate_desugar_configuration_maven_zip(
+    out, configuration, implementation, conversions):
   with utils.TempDir() as tmp_dir:
     version = utils.desugar_configuration_version(configuration)
     # Generate the pom file.
@@ -394,7 +395,7 @@
     generate_jar_with_desugar_configuration(
         configuration,
         implementation,
-        utils.LIBRARY_DESUGAR_CONVERSIONS_ZIP,
+        conversions,
         jar_file)
     # Write the maven zip file.
     generate_maven_zip(
diff --git a/tools/utils.py b/tools/utils.py
index cd41ad0..1fb323f 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -66,6 +66,7 @@
 R8LIB_TESTS_DEPS_JAR = R8_TESTS_DEPS_JAR
 MAVEN_ZIP = os.path.join(LIBS, 'r8.zip')
 MAVEN_ZIP_LIB = os.path.join(LIBS, 'r8lib.zip')
+LIBRARY_DESUGAR_CONVERSIONS_LEGACY_ZIP = os.path.join(LIBS, 'library_desugar_conversions_legacy.jar')
 LIBRARY_DESUGAR_CONVERSIONS_ZIP = os.path.join(LIBS, 'library_desugar_conversions.jar')
 
 DESUGAR_CONFIGURATION = os.path.join(
@@ -78,8 +79,8 @@
       'third_party', 'openjdk', 'desugar_jdk_libs_11', 'desugar_jdk_libs.jar')
 DESUGAR_CONFIGURATION_MAVEN_ZIP = os.path.join(
   LIBS, 'desugar_jdk_libs_configuration.zip')
-DESUGAR_CONFIGURATION_LEGACY_JDK11_MAVEN_ZIP = os.path.join(
-  LIBS, 'desugar_jdk_libs_configuration_legacy_jdk11.zip')
+DESUGAR_CONFIGURATION_JDK11_LEGACY_MAVEN_ZIP = os.path.join(
+  LIBS, 'desugar_jdk_libs_configuration_jdk11_legacy.zip')
 GENERATED_LICENSE = os.path.join(GENERATED_LICENSE_DIR, 'LICENSE')
 RT_JAR = os.path.join(REPO_ROOT, 'third_party/openjdk/openjdk-rt-1.8/rt.jar')
 R8LIB_KEEP_RULES = os.path.join(REPO_ROOT, 'src/main/keep.txt')
