diff --git a/build.gradle b/build.gradle
index 48e01cd..bfd11a0 100644
--- a/build.gradle
+++ b/build.gradle
@@ -2,7 +2,6 @@
 // for details. All rights reserved. Use of this source code is governed by a
 // BSD-style license that can be found in the LICENSE file.
 
-import com.github.jengelman.gradle.plugins.shadow.tasks.ShadowJar
 import dx.DexMergerTask
 import dx.DxTask
 import net.ltgt.gradle.errorprone.CheckSeverity
@@ -21,9 +20,6 @@
         gradlePluginPortal()
         jcenter()
     }
-    dependencies {
-        classpath 'com.github.jengelman.gradle.plugins:shadow:5.2.0'
-    }
 }
 
 plugins {
@@ -253,6 +249,8 @@
     examplesTestNGRunnerCompile group: 'org.testng', name: 'testng', version: testngVersion
     testCompile sourceSets.examples.output
     testCompile "junit:junit:$junitVersion"
+    testCompile "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
+    testCompile "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
     testCompile group: 'org.smali', name: 'smali', version: smaliVersion
     testCompile files('third_party/jasmin/jasmin-2.4.jar')
     testCompile files('third_party/jdwp-tests/apache-harmony-jdwp-tests-host.jar')
@@ -273,8 +271,6 @@
     apiUsageSampleCompile "com.google.guava:guava:$guavaVersion"
     kotlinR8TestResourcesCompileOnly "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
     errorprone("com.google.errorprone:error_prone_core:$errorproneVersion")
-    testImplementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlinVersion"
-    testImplementation "org.jetbrains.kotlin:kotlin-reflect:$kotlinVersion"
 }
 
 def r8LibPath = "$buildDir/libs/r8lib.jar"
@@ -734,47 +730,57 @@
     }
 }
 
-static mergeServiceFiles(ShadowJar task) {
-    // Everything under META-INF is not included by default.
-    // Should include before 'relocate' so that the service file path and its content
-    // are properly relocated as well.
-    task.mergeServiceFiles {
-        include 'META-INF/services/*'
+def repackageDepFile(file) {
+    if (file.getName().endsWith('.jar')) {
+        return zipTree(file).matching {
+            exclude '**/module-info.class'
+            exclude 'META-INF/maven/**'
+            exclude 'META-INF/LICENSE.txt'
+            exclude 'META-INF/MANIFEST.MF'
+        }
+    } else {
+        return fileTree(file)
     }
 }
 
-task repackageDepsNew(type: ShadowJar) {
+task repackageDeps(type: Jar) {
     dependsOn downloadCloudDeps
-    configurations = [project.configurations.runtimeClasspath]
-    mergeServiceFiles(it)
-    exclude { it.getRelativePath().getPathString().endsWith("module-info.class") }
-    exclude { it.getRelativePath().getPathString().startsWith("META-INF/maven/") }
-    baseName 'deps_all'
+    dependsOn project.configurations.runtimeClasspath
+    project.configurations.runtimeClasspath.forEach {
+        from repackageDepFile(it)
+    }
+    archiveFileName = 'deps_all.jar'
 }
 
-task repackageSourcesNew(type: ShadowJar) {
+task repackageTestDeps(type: Jar) {
+    dependsOn downloadCloudDeps
+    dependsOn project.configurations.testCompile
+    project.configurations.testCompile.forEach {
+        from repackageDepFile(it)
+    }
+    archiveFileName = 'test_deps_all.jar'
+}
+
+task repackageSources(type: Jar) {
     // If this fails then remove all generated folders from
     // build/classes/java/test that is not {com,dalvik}
     from sourceSets.main.output
-    mergeServiceFiles(it)
-    baseName 'sources_main'
+    archiveFileName = 'sources_main.jar'
 }
 
-task repackageSources11New(type: ShadowJar) {
+task repackageSources11(type: Jar) {
     dependsOn compileMainWithJava11
     from file(java11ClassFiles)
-    mergeServiceFiles(it)
-    baseName 'sources_main_11'
+    archiveFileName = 'sources_main_11.jar'
 }
 
-def r8CreateTask(name, baseNameName, sources, includeSwissArmyKnife) {
-    return tasks.create("r8Create${name}", ShadowJar) {
+def r8CreateTask(name, baseName, sources, includeSwissArmyKnife) {
+    return tasks.create("r8Create${name}", Jar) {
+        dependsOn sources
         from consolidatedLicense.outputs.files
-        from sources
+        from sources.collect { zipTree(it) }
         exclude "$buildDir/classes/**"
-        baseName baseNameName
-        classifier = null
-        version = null
+        archiveFileName = baseName
         if (includeSwissArmyKnife) {
             manifest {
                 attributes 'Main-Class': 'com.android.tools.r8.SwissArmyKnife'
@@ -823,26 +829,26 @@
 }
 
 task r8WithDeps {
-    dependsOn repackageSourcesNew
-    dependsOn repackageDepsNew
-    inputs.files ([repackageSourcesNew.outputs, repackageDepsNew.outputs])
+    dependsOn repackageSources
+    dependsOn repackageDeps
+    inputs.files ([repackageSources.outputs, repackageDeps.outputs])
     def r8Task = r8CreateTask(
             'WithDeps',
-            'r8_with_deps',
-            repackageSourcesNew.outputs.files + repackageDepsNew.outputs.files,
+            'r8_with_deps.jar',
+            repackageSources.outputs.files + repackageDeps.outputs.files,
             true)
     dependsOn r8Task
     outputs.files r8Task.outputs.files
 }
 
 task r8WithDeps11 {
-    dependsOn repackageSources11New
-    dependsOn repackageDepsNew
-    inputs.files ([repackageSources11New.outputs, repackageDepsNew.outputs])
+    dependsOn repackageSources11
+    dependsOn repackageDeps
+    inputs.files ([repackageSources11.outputs, repackageDeps.outputs])
     def r8Task = r8CreateTask(
             'WithDeps11',
-            'r8_with_deps_11',
-            repackageSources11New.outputs.files + repackageDepsNew.outputs.files,
+            'r8_with_deps_11.jar',
+            repackageSources11.outputs.files + repackageDeps.outputs.files,
             true)
     dependsOn r8Task
     outputs.files r8Task.outputs.files
@@ -863,12 +869,12 @@
 }
 
 task r8WithoutDeps {
-    dependsOn repackageSourcesNew
-    inputs.files repackageSourcesNew.outputs
+    dependsOn repackageSources
+    inputs.files repackageSources.outputs
     def r8Task = r8CreateTask(
             'WithoutDeps',
-            'r8_without_deps',
-            repackageSourcesNew.outputs.files,
+            'r8_without_deps.jar',
+            repackageSources.outputs.files,
             true)
     dependsOn r8Task
     outputs.files r8Task.outputs.files
@@ -885,24 +891,24 @@
 }
 
 task r8NoManifestWithoutDeps {
-    dependsOn repackageSourcesNew
-    inputs.files repackageSourcesNew.outputs
+    dependsOn repackageSources
+    inputs.files repackageSources.outputs
     def r8Task = r8CreateTask(
             'NoManifestWithoutDeps',
-            'r8_no_manifest_without_deps',
-            repackageSourcesNew.outputs.files,
+            'r8_no_manifest_without_deps.jar',
+            repackageSources.outputs.files,
             false)
     dependsOn r8Task
     outputs.files r8Task.outputs.files
 }
 
 task r8NoManifestWithDeps {
-    dependsOn repackageSourcesNew
-    inputs.files ([repackageSourcesNew.outputs, repackageDepsNew.outputs])
+    dependsOn repackageSources
+    inputs.files ([repackageSources.outputs, repackageDeps.outputs])
     def r8Task = r8CreateTask(
             'NoManifestWithDeps',
-            'r8_no_manifest_with_deps',
-            repackageSourcesNew.outputs.files + repackageDepsNew.outputs.files,
+            'r8_no_manifest_with_deps.jar',
+            repackageSources.outputs.files + repackageDeps.outputs.files,
             false)
     dependsOn r8Task
     outputs.files r8Task.outputs.files
@@ -925,10 +931,10 @@
     outputs.file "${buildDir}/libs/r8_no_manifest.jar"
 }
 
-task D8(type: ShadowJar) {
+task D8(type: Jar) {
     dependsOn r8
     from r8.outputs.files[0]
-    baseName 'd8'
+    archiveFileName = 'd8.jar'
     manifest {
         attributes 'Main-Class': 'com.android.tools.r8.D8'
     }
@@ -991,8 +997,8 @@
     destinationDir file('build/libs')
 }
 
-task testJarSources(type: ShadowJar, dependsOn: [testClasses, buildLibraryDesugarConversions]) {
-    baseName = "r8testsbase"
+task testJarSources(type: Jar, dependsOn: [testClasses, buildLibraryDesugarConversions]) {
+    archiveFileName = "r8testsbase.jar"
     from sourceSets.test.output
     // We only want to include tests that use R8 when generating keep rules for applymapping.
     include "com/android/tools/r8/**"
@@ -1074,9 +1080,9 @@
             r8NoManifestWithoutDeps,
             r8LibExludeDepsPath,
             "--release",
-            repackageDepsNew.outputs.files
-    ).dependsOn(repackageDepsNew)
-    inputs.files ([r8NoManifestWithoutDeps.outputs, repackageDepsNew.outputs])
+            repackageDeps.outputs.files
+    ).dependsOn(repackageDeps)
+    inputs.files ([r8NoManifestWithoutDeps.outputs, repackageDeps.outputs])
     outputs.file r8LibExludeDepsPath
 }
 
@@ -1111,7 +1117,7 @@
             R8LibNoDeps,
             r8RetraceExludeDepsPath,
             "--release",
-            repackageDepsNew.outputs.files
+            repackageDeps.outputs.files
     ).dependsOn(R8LibNoDeps)
     outputs.file r8RetraceExludeDepsPath
 }
@@ -1123,7 +1129,7 @@
 
 task jctfCommonJar(type: Jar) {
     from sourceSets.jctfCommon.output
-    baseName 'jctfCommon'
+    archiveFileName = 'jctfCommon.jar'
 }
 
 artifacts {
@@ -1157,13 +1163,13 @@
 
 task buildCfSegments(type: Jar, dependsOn: downloadDeps) {
     from sourceSets.cfSegments.output
-    baseName 'cf_segments'
+    archiveFileName = 'cf_segments.jar'
     destinationDir file('build/libs')
 }
 
 task buildR8ApiUsageSample(type: Jar) {
     from sourceSets.apiUsageSample.output
-    baseName 'r8_api_usage_sample'
+    archiveFileName = 'r8_api_usage_sample.jar'
     destinationDir file('tests')
 }
 
@@ -1788,7 +1794,7 @@
 }
 
 task buildPreNJdwpTestsJar(type: Jar) {
-    baseName = 'jdwp-tests-preN'
+    archiveFileName = 'jdwp-tests-preN.jar'
     from zipTree('third_party/jdwp-tests/apache-harmony-jdwp-tests-host.jar')
     // Exclude the classes containing java8
     exclude 'org/apache/harmony/jpda/tests/jdwp/InterfaceType/*.class'
