diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 004eb44..8d6cfe6 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "1.6.52";
+  public static final String LABEL = "1.6.53";
 
   private Version() {
   }
diff --git a/tools/archive.py b/tools/archive.py
index 32c5c32..2adb6d0 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -160,6 +160,10 @@
   if utils.cloud_storage_exists(destination) and not options.dry_run:
     raise Exception('Target archive directory %s already exists' % destination)
   with utils.TempDir() as temp:
+    # Create pom file for our maven repository that we build for testing.
+    default_pom_file = os.path.join(temp, 'r8.pom')
+    create_maven_release.write_default_r8_pom_file(default_pom_file, version)
+
     version_file = os.path.join(temp, 'r8-version.properties')
     with open(version_file,'w') as version_writer:
       version_writer.write('version.sha=' + GetGitHash() + '\n')
@@ -218,10 +222,14 @@
       if file == utils.R8_JAR:
         maven_dst = GetUploadDestination(utils.get_maven_path('r8', version),
                                          'r8-%s.jar' % version, is_master)
+        maven_pom_dst = GetUploadDestination(
+            utils.get_maven_path('r8', version),
+            'r8-%s.pom' % version, is_master)
         if options.dry_run:
           print('Dry run, not actually creating maven repo for R8')
         else:
           utils.upload_file_to_cloud_storage(tagged_jar, maven_dst)
+          utils.upload_file_to_cloud_storage(default_pom_file, maven_pom_dst)
           print('Maven repo root available at: %s' % GetMavenUrl(is_master))
 
       # Upload desugar_jdk_libs configuration to a maven compatible location.
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index b4343f3..8d7916a 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -257,6 +257,9 @@
         group=group, artifact=artifact, version=version)
   return result
 
+def write_default_r8_pom_file(pom_file, version):
+  write_pom_file(R8_POMTEMPLATE, pom_file, version, generate_dependencies(), '')
+
 def write_pom_file(template, pom_file, version, dependencies='', library_licenses=''):
   version_pom = template.substitute(
       version=version, dependencies=dependencies, library_licenses=library_licenses)
