Merge "Add a test for minification of interface fields"
diff --git a/tools/archive.py b/tools/archive.py
index 9213cc2..d899943 100755
--- a/tools/archive.py
+++ b/tools/archive.py
@@ -109,7 +109,8 @@
     SetRLimitToMax()
   PrintResourceInfo()
   # Create maven release which uses a build that exclude dependencies.
-  create_maven_release.main(["--out", utils.LIBS])
+  create_maven_release.run(utils.MAVEN_ZIP)
+  create_maven_release.run(utils.MAVEN_ZIP_LIB, is_r8lib=True)
 
   # Generate and copy a full build without dependencies.
   gradle.RunGradleExcludeDeps([utils.R8, utils.R8_SRC])
@@ -164,6 +165,7 @@
       utils.COMPATPROGUARDLIB_JAR,
       utils.COMPATPROGUARDLIB_JAR + '.map',
       utils.MAVEN_ZIP,
+      utils.MAVEN_ZIP_LIB,
       utils.GENERATED_LICENSE,
     ]:
       file_name = os.path.basename(file)
diff --git a/tools/create_maven_release.py b/tools/create_maven_release.py
index 662d53e..401c92a 100755
--- a/tools/create_maven_release.py
+++ b/tools/create_maven_release.py
@@ -65,7 +65,9 @@
 
 def parse_options(argv):
   result = argparse.ArgumentParser()
-  result.add_argument('--out', help='directory in which to put the output zip file')
+  result.add_argument('--out', help='The zip file to output')
+  result.add_argument('--r8lib', action='store_true',
+                      help='Build r8 with dependencies included shrunken')
   return result.parse_args(argv)
 
 def determine_version():
@@ -172,8 +174,8 @@
         group=group, artifact=artifact, version=version)
   return result
 
-def write_pom_file(version, pom_file):
-  dependencies = generate_dependencies()
+def write_pom_file(version, pom_file, exclude_dependencies):
+  dependencies = "" if exclude_dependencies else generate_dependencies()
   version_pom = POMTEMPLATE.substitute(
       version=version, dependencies=dependencies)
   with open(pom_file, 'w') as file:
@@ -199,14 +201,15 @@
   with (open(file + '.sha1', 'w')) as file:
     file.write(hexdigest)
 
-def main(argv):
-  options = parse_options(argv)
-  outdir = options.out
-  if outdir == None:
-    print 'Need to supply output dir with --out.'
+def run(out, is_r8lib=False):
+  if out == None:
+    print 'Need to supply output zip with --out.'
     exit(1)
   # Build the R8 no deps artifact.
-  gradle.RunGradleExcludeDeps([utils.R8])
+  if not is_r8lib:
+    gradle.RunGradleExcludeDeps([utils.R8])
+  else:
+    gradle.RunGradle([utils.R8LIB])
   # Create directory structure for this version.
   version = determine_version()
   with utils.TempDir() as tmp_dir:
@@ -214,17 +217,24 @@
     makedirs(version_dir)
     # Write the pom file.
     pom_file = join(version_dir, 'r8-' + version + '.pom')
-    write_pom_file(version, pom_file)
+    write_pom_file(version, pom_file, is_r8lib)
     # Copy the jar to the output.
     target_jar = join(version_dir, 'r8-' + version + '.jar')
-    copyfile(utils.R8_JAR, target_jar)
+    copyfile(utils.R8LIB_JAR if is_r8lib else utils.R8_JAR, target_jar)
     # Create check sums.
     write_md5_for(target_jar)
     write_md5_for(pom_file)
     write_sha1_for(target_jar)
     write_sha1_for(pom_file)
-    # Zip it up.
-    make_archive(join(outdir, 'r8'), 'zip', tmp_dir)
+    # Zip it up - make_archive will append zip to the file, so remove.
+    assert out.endswith('.zip')
+    base_no_zip = out[0:len(out)-4]
+    make_archive(base_no_zip, 'zip', tmp_dir)
+
+def main(argv):
+  options = parse_options(argv)
+  out = options.out
+  run(out, options.r8lib)
 
 if __name__ == "__main__":
   exit(main(sys.argv[1:]))
diff --git a/tools/run_on_as_app.py b/tools/run_on_as_app.py
index 70fbc2a..6c27f9f 100755
--- a/tools/run_on_as_app.py
+++ b/tools/run_on_as_app.py
@@ -20,7 +20,6 @@
 from xml.dom import minidom
 
 import as_utils
-import create_maven_release
 import update_prebuilds_in_android
 
 SHRINKERS = ['r8', 'r8-full', 'r8-nolib', 'r8-nolib-full', 'pg']
diff --git a/tools/utils.py b/tools/utils.py
index 27df3b5..1fd28f0 100644
--- a/tools/utils.py
+++ b/tools/utils.py
@@ -53,6 +53,7 @@
 COMPATPROGUARD_JAR = os.path.join(LIBS, 'compatproguard.jar')
 COMPATPROGUARDLIB_JAR = os.path.join(LIBS, 'compatproguardlib.jar')
 MAVEN_ZIP = os.path.join(LIBS, 'r8.zip')
+MAVEN_ZIP_LIB = os.path.join(LIBS, 'r8lib.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')