diff --git a/.gitignore b/.gitignore
index 439dc2c..4496e10 100644
--- a/.gitignore
+++ b/.gitignore
@@ -114,6 +114,8 @@
 third_party/gradle/gradle.tar.gz
 third_party/gradle/gradle-8.0
 third_party/gradle/gradle-8.0.tar.gz
+third_party/gradle/gradle-8.3
+third_party/gradle/gradle-8.3.tar.gz
 third_party/gson/gson-2.10.1
 third_party/gson/gson-2.10.1.tar.gz
 third_party/guava/guava-32.1.2-android
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 2a369cd..f447a8f 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -84,11 +84,12 @@
 
 fun Project.ensureThirdPartyDependencies(name : String, deps : List<ThirdPartyDependency>) : Task {
   val outputFiles : MutableList<File> = mutableListOf()
+  val root = getRoot()
   val depsTasks = deps.map { tpd ->
     val projectAndTaskName = "${project.name}-$name"
     val downloadTaskName = "download-third-party-$projectAndTaskName-${tpd.packageName}"
     val downloadTask = tasks.register<DownloadDependencyTask>(downloadTaskName) {
-      setDependency(getRoot().resolve(tpd.sha1File), getRoot().resolve(tpd.path), tpd.type)
+      setDependency(root.resolve(tpd.sha1File), root.resolve(tpd.path), tpd.type, root)
     }.get()
     outputFiles.add(tpd.path)
     downloadTask
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt
index 1f49973..370bcad 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DownloadDependencyTask.kt
@@ -34,6 +34,7 @@
   private var _outputDir: File? = null
   private var _tarGzFile: File? = null
   private var _sha1File: File? = null
+  private var _root: File? = null
 
   @InputFile
   fun getInputFile(): File? {
@@ -51,10 +52,11 @@
   @Option(
     option = "dependency",
     description = "Sets the dependency information for a cloud stored file")
-  fun setDependency(sha1File: File, outputDir: File, dependencyType: DependencyType) {
+  fun setDependency(sha1File: File, outputDir: File, dependencyType: DependencyType, root: File) {
     _outputDir = outputDir
     _sha1File = sha1File
     _tarGzFile = sha1File.resolveSibling(sha1File.name.replace(".sha1", ""))
+    _root = root
     this.dependencyType = dependencyType
   }
 
@@ -82,7 +84,7 @@
         this.outputDir.set(outputDir)
         this.tarGzFile.set(tarGzFile)
         this.lockFile.set(lockFile)
-        this.root.set(computeRoot(project.projectDir))
+        this.root.set(_root!!)
       }
   }
 
diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt b/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
index c3acc59..c8e5169 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/TestConfigurationHelper.kt
@@ -74,24 +74,28 @@
         test.maxHeapSize = "4G"
       }
 
-      test.addTestListener(object: TestListener {
-        override fun beforeSuite(desc: TestDescriptor?) { }
-        override fun afterSuite(desc: TestDescriptor?, result: TestResult?) { }
-        override fun beforeTest(desc: TestDescriptor?) {
-          if (project.hasProperty("one_line_per_test")) {
-            println("Start executing ${desc}")
+      if (project.hasProperty("one_line_per_test")
+        || project.hasProperty("update_test_timestamp")) {
+        test.addTestListener(object : TestListener {
+          override fun beforeSuite(desc: TestDescriptor?) {}
+          override fun afterSuite(desc: TestDescriptor?, result: TestResult?) {}
+          override fun beforeTest(desc: TestDescriptor?) {
+            if (project.hasProperty("one_line_per_test")) {
+              println("Start executing ${desc}")
+            }
           }
-        }
-        override fun afterTest(desc: TestDescriptor?, result: TestResult?) {
-          if (project.hasProperty("one_line_per_test")) {
-            println("Done executing ${desc} with result: ${result?.resultType}")
-          }
-          if (project.hasProperty("update_test_timestamp")) {
-            File(project.property("update_test_timestamp")!!.toString())
+
+          override fun afterTest(desc: TestDescriptor?, result: TestResult?) {
+            if (project.hasProperty("one_line_per_test")) {
+              println("Done executing ${desc} with result: ${result?.resultType}")
+            }
+            if (project.hasProperty("update_test_timestamp")) {
+              File(project.property("update_test_timestamp")!!.toString())
                 .writeText(Date().getTime().toString())
+            }
           }
-        }
-      })
+        })
+      }
 
       val userDefinedCoresPerFork = System.getenv("R8_GRADLE_CORES_PER_FORK")
       val processors = Runtime.getRuntime().availableProcessors()
diff --git a/d8_r8/main/build.gradle.kts b/d8_r8/main/build.gradle.kts
index e75c8e6..167a66a 100644
--- a/d8_r8/main/build.gradle.kts
+++ b/d8_r8/main/build.gradle.kts
@@ -2,7 +2,7 @@
 // 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 java.nio.file.Paths
+import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
 import net.ltgt.gradle.errorprone.errorprone
 
 plugins {
@@ -162,6 +162,10 @@
   }
 }
 
+tasks.withType<KotlinCompile> {
+  enabled = false
+}
+
 tasks.withType<JavaCompile> {
   dependsOn(thirdPartyCompileDependenciesTask)
   println("NOTE: Running with JDK: " + org.gradle.internal.jvm.Jvm.current().javaHome)
diff --git a/d8_r8/test_modules/tests_java_8/build.gradle.kts b/d8_r8/test_modules/tests_java_8/build.gradle.kts
index 0d9db78..59d5320 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -36,7 +36,8 @@
 dependencies {
   implementation(keepAnnoJarTask.outputs.files)
   implementation(projectTask("main", "jar").outputs.files)
-  implementation(projectTask("resourceshrinker", "jar").outputs.files)
+  implementation(projectTask("resourceshrinker", "compileJava").outputs.files)
+  implementation(projectTask("resourceshrinker", "compileKotlin").outputs.files)
   implementation(projectTask("resourceshrinker", "depsJar").outputs.files)
   implementation(Deps.asm)
   implementation(Deps.asmCommons)
diff --git a/third_party/dependencies.tar.gz.sha1 b/third_party/dependencies.tar.gz.sha1
index 1c1ad7b..139251d 100644
--- a/third_party/dependencies.tar.gz.sha1
+++ b/third_party/dependencies.tar.gz.sha1
@@ -1 +1 @@
-cfbdceb60320ae102577b1cc274ce0af4432722a
\ No newline at end of file
+d004917502f1b50bedada4bc5cca457ceb237c87
\ No newline at end of file
diff --git a/third_party/dependencies_new.tar.gz.sha1 b/third_party/dependencies_new.tar.gz.sha1
index 89aecc2..2d9e556 100644
--- a/third_party/dependencies_new.tar.gz.sha1
+++ b/third_party/dependencies_new.tar.gz.sha1
@@ -1 +1 @@
-80d787df74a6a07f673def5ebc38dff24515fe1c
\ No newline at end of file
+e2dff12bf95f94797da37f77b274fe222aeda83a
\ No newline at end of file
diff --git a/third_party/gradle/gradle-8.3.tar.gz.sha1 b/third_party/gradle/gradle-8.3.tar.gz.sha1
new file mode 100644
index 0000000..4afa179
--- /dev/null
+++ b/third_party/gradle/gradle-8.3.tar.gz.sha1
@@ -0,0 +1 @@
+214033edc4cfc5f29f0d3ea437f8557f424a6577
\ No newline at end of file
diff --git a/tools/create_local_maven_with_dependencies.py b/tools/create_local_maven_with_dependencies.py
index 1c345b7..3c945f3 100755
--- a/tools/create_local_maven_with_dependencies.py
+++ b/tools/create_local_maven_with_dependencies.py
@@ -70,6 +70,13 @@
   'org.jetbrains.kotlin:kotlin-tooling-core:1.8.10',
   'net.ltgt.errorprone:net.ltgt.errorprone.gradle.plugin:3.0.1',
   'com.google.errorprone:javac:9+181-r4173-1',
+  # Gradle 8.3
+  'org.gradle.kotlin.kotlin-dsl:org.gradle.kotlin.kotlin-dsl.gradle.plugin:4.1.0',
+  'org.jetbrains.kotlin:kotlin-assignment-compiler-plugin-embeddable:1.9.0',
+  'org.jetbrains.kotlin:kotlin-gradle-plugin-api:1.9.0',
+  'org.jetbrains.kotlin:kotlin-reflect:1.9.0',
+  'org.jetbrains.kotlin:kotlin-script-runtime:1.9.0',
+  'org.jetbrains.kotlin:kotlin-sam-with-receiver-compiler-plugin-embeddable:1.9.0',
   # Resource shrinker
   'com.android.tools.build:aapt2-proto:{version}'.format(version = AAPT2_PROTO_VERSION),
   'com.android.tools.layoutlib:layoutlib-api:{version}'.format(version = STUDIO_SDK_VERSION),
diff --git a/tools/gradle.py b/tools/gradle.py
index 00aca65..3e3c464 100755
--- a/tools/gradle.py
+++ b/tools/gradle.py
@@ -17,12 +17,12 @@
 
 GRADLE_DIR = os.path.join(utils.REPO_ROOT, 'third_party', 'gradle')
 GRADLE_SHA1 = os.path.join(GRADLE_DIR, 'gradle.tar.gz.sha1')
-GRADLE8_SHA1 = os.path.join(GRADLE_DIR, 'gradle-8.0.tar.gz.sha1')
+GRADLE8_SHA1 = os.path.join(GRADLE_DIR, 'gradle-8.3.tar.gz.sha1')
 GRADLE_TGZ = os.path.join(GRADLE_DIR, 'gradle.tar.gz')
-GRADLE8_TGZ = os.path.join(GRADLE_DIR, 'gradle-8.0.tar.gz')
+GRADLE8_TGZ = os.path.join(GRADLE_DIR, 'gradle-8.3.tar.gz')
 
 def get_gradle(new_gradle):
-  gradle_dir = 'gradle-8.0' if new_gradle else 'gradle'
+  gradle_dir = 'gradle-8.3' if new_gradle else 'gradle'
   if utils.IsWindows():
     return os.path.join(GRADLE_DIR, gradle_dir, 'bin', 'gradle.bat')
   else:
