diff --git a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
index 97647e9..c1107e6 100644
--- a/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
+++ b/d8_r8/commonBuildSrc/src/main/kotlin/DependenciesPlugin.kt
@@ -319,6 +319,10 @@
       "third_party",
       "binary_compatibility_tests",
       "compiler_api_tests.tar.gz.sha1").toFile())
+  val dagger = ThirdPartyDependency(
+    "dagger",
+    Paths.get("third_party", "dagger", "2.41", "dagger-2.41.jar").toFile(),
+    Paths.get("third_party", "dagger", "2.41.tar.gz.sha1").toFile())
   val ddmLib = ThirdPartyDependency(
     "ddmlib",
     Paths.get("third_party", "ddmlib", "ddmlib.jar").toFile(),
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 3008c9c..669b394 100644
--- a/d8_r8/test_modules/tests_java_8/build.gradle.kts
+++ b/d8_r8/test_modules/tests_java_8/build.gradle.kts
@@ -57,6 +57,7 @@
   "runtimeDeps",
   listOf(
     ThirdPartyDeps.compilerApi,
+    ThirdPartyDeps.dagger,
     ThirdPartyDeps.jacoco,
     ThirdPartyDeps.java8Runtime,
     ThirdPartyDeps.jdk11Test)
diff --git a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
index e5ad61c..f1092d4 100644
--- a/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
+++ b/src/main/java/com/android/tools/r8/ir/desugar/desugaredlibrary/lint/AbstractGenerateFiles.java
@@ -99,6 +99,7 @@
 
   abstract AndroidApiLevel run() throws Exception;
 
+  // TODO(b/289365156): Move this out.
   private static String getFallBackAndroidJarPath(AndroidApiLevel apiLevel) {
     String jar =
         apiLevel == AndroidApiLevel.MASTER
diff --git a/src/test/java/com/android/tools/r8/D8CommandTest.java b/src/test/java/com/android/tools/r8/D8CommandTest.java
index a81451f..842b6a8 100644
--- a/src/test/java/com/android/tools/r8/D8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/D8CommandTest.java
@@ -19,21 +19,17 @@
 import com.android.tools.r8.AssertionsConfiguration.AssertionTransformationScope;
 import com.android.tools.r8.D8CommandParser.OrderedClassFileResourceProvider;
 import com.android.tools.r8.ToolHelper.ProcessResult;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
 import com.android.tools.r8.dex.Marker;
 import com.android.tools.r8.dex.Marker.Tool;
 import com.android.tools.r8.origin.EmbeddedOrigin;
 import com.android.tools.r8.origin.Origin;
-import com.android.tools.r8.profile.startup.profile.StartupProfile;
-import com.android.tools.r8.profile.startup.profile.StartupProfileRule;
 import com.android.tools.r8.references.Reference;
-import com.android.tools.r8.startup.StartupProfileProvider;
-import com.android.tools.r8.startup.diagnostic.MissingStartupProfileItemsDiagnostic;
 import com.android.tools.r8.utils.AndroidApiLevel;
 import com.android.tools.r8.utils.AndroidApp;
 import com.android.tools.r8.utils.ExtractMarkerUtils;
 import com.android.tools.r8.utils.FileUtils;
 import com.android.tools.r8.utils.InternalOptions;
-import com.android.tools.r8.utils.ListUtils;
 import com.android.tools.r8.utils.ThreadUtils;
 import com.android.tools.r8.utils.ZipUtils;
 import com.google.common.collect.ImmutableList;
@@ -699,7 +695,7 @@
     D8Command d8Command =
         parse(
             "--desugared-lib",
-            "src/library_desugar/desugar_jdk_libs.json",
+            LibraryDesugaringSpecification.JDK11.getSpecification().toString(),
             "--lib",
             ToolHelper.getAndroidJar(AndroidApiLevel.R).toString());
     InternalOptions options = getOptionsWithLoadedDesugaredLibraryConfiguration(d8Command, false);
@@ -712,7 +708,7 @@
     D8Command d8Command =
         parse(
             "--desugared-lib",
-            "src/library_desugar/desugar_jdk_libs.json",
+            LibraryDesugaringSpecification.JDK11.getSpecification().toString(),
             "--lib",
             ToolHelper.getAndroidJar(AndroidApiLevel.R).toString(),
             "--desugared-lib-pg-conf-output",
@@ -728,7 +724,7 @@
       parse(
           diagnostics,
           "--desugared-lib",
-          "src/library_desugar/desugar_jdk_libs.json",
+          LibraryDesugaringSpecification.JDK11.getSpecification().toString(),
           "--desugared-lib-pg-conf-output");
       fail("Expected parse error");
     } catch (CompilationFailedException e) {
diff --git a/src/test/java/com/android/tools/r8/R8CommandTest.java b/src/test/java/com/android/tools/r8/R8CommandTest.java
index a98ad79..d22f197 100644
--- a/src/test/java/com/android/tools/r8/R8CommandTest.java
+++ b/src/test/java/com/android/tools/r8/R8CommandTest.java
@@ -17,6 +17,7 @@
 import com.android.tools.r8.AssertionsConfiguration.AssertionTransformationScope;
 import com.android.tools.r8.ProgramResource.Kind;
 import com.android.tools.r8.ToolHelper.ProcessResult;
+import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
 import com.android.tools.r8.dex.Marker;
 import com.android.tools.r8.dex.Marker.Tool;
 import com.android.tools.r8.origin.EmbeddedOrigin;
@@ -860,7 +861,7 @@
     R8Command r8Command =
         parse(
             "--desugared-lib",
-            "src/library_desugar/desugar_jdk_libs.json",
+            LibraryDesugaringSpecification.JDK11.getSpecification().toString(),
             "--lib",
             ToolHelper.getAndroidJar(AndroidApiLevel.R).toString());
     InternalOptions options = getOptionsWithLoadedDesugaredLibraryConfiguration(r8Command, false);
@@ -873,7 +874,7 @@
     R8Command r8Command =
         parse(
             "--desugared-lib",
-            "src/library_desugar/desugar_jdk_libs.json",
+            LibraryDesugaringSpecification.JDK11.getSpecification().toString(),
             "--lib",
             ToolHelper.getAndroidJar(AndroidApiLevel.R).toString(),
             "--desugared-lib-pg-conf-output",
@@ -889,7 +890,7 @@
       parse(
           diagnostics,
           "--desugared-lib",
-          "src/library_desugar/desugar_jdk_libs.json",
+          LibraryDesugaringSpecification.JDK11.getSpecification().toString(),
           "--desugared-lib-pg-conf-output");
       fail("Expected parse error");
     } catch (CompilationFailedException e) {
diff --git a/src/test/java/com/android/tools/r8/ToolHelper.java b/src/test/java/com/android/tools/r8/ToolHelper.java
index 45c6a95..1151357 100644
--- a/src/test/java/com/android/tools/r8/ToolHelper.java
+++ b/src/test/java/com/android/tools/r8/ToolHelper.java
@@ -111,9 +111,8 @@
     return Paths.get(current).getParent().toString() + "/";
   }
 
-  public static final String SOURCE_DIR = "src/main/java/";
+  public static final String SOURCE_DIR = getProjectRoot() + "src/main/java/";
   public static final String LIBRARY_DESUGAR_SOURCE_DIR = getProjectRoot() + "src/library_desugar/";
-  public static final String RESOURCES_DIR = "src/main/resources/";
   public static final String BUILD_DIR = getProjectRoot() + "build/";
   public static final String TEST_MODULE_DIR = getProjectRoot() + "d8_r8/test_modules/";
   public static final String GENERATED_TEST_BUILD_DIR = BUILD_DIR + "generated/test/";
diff --git a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkDependency.java b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkDependency.java
index 26e9029..ceb6152 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/BenchmarkDependency.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/BenchmarkDependency.java
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.benchmarks;
 
+import com.android.tools.r8.ToolHelper;
 import java.nio.file.Path;
 import java.nio.file.Paths;
 import java.util.Locale;
@@ -11,12 +12,12 @@
 
   public static BenchmarkDependency getRuntimeJarJava8() {
     return new BenchmarkDependency(
-        "java8rtjar", "openjdk-rt-1.8", Paths.get("third_party", "openjdk"));
+        "java8rtjar", "openjdk-rt-1.8", Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk"));
   }
 
   public static BenchmarkDependency getAndroidJar30() {
     return new BenchmarkDependency(
-        "android30jar", "lib-v30", Paths.get("third_party", "android_jar"));
+        "android30jar", "lib-v30", Paths.get(ToolHelper.THIRD_PARTY_DIR, "android_jar"));
   }
 
   // Nice name of the dependency. Must be a valid dart identifier.
diff --git a/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java b/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java
index a047c5a..0e86477 100644
--- a/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java
+++ b/src/test/java/com/android/tools/r8/benchmarks/desugaredlib/LegacyDesugaredLibraryBenchmark.java
@@ -5,6 +5,7 @@
 
 import com.android.tools.r8.StringResource;
 import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.benchmarks.BenchmarkBase;
 import com.android.tools.r8.benchmarks.BenchmarkConfig;
 import com.android.tools.r8.benchmarks.BenchmarkDependency;
@@ -26,7 +27,9 @@
   private static final BenchmarkDependency androidJar = BenchmarkDependency.getAndroidJar30();
   private static final BenchmarkDependency legacyConf =
       new BenchmarkDependency(
-          "legacyConf", "desugar_jdk_libs_legacy", Paths.get("third_party", "openjdk"));
+          "legacyConf",
+          "desugar_jdk_libs_legacy",
+          Paths.get(ToolHelper.THIRD_PARTY_DIR, "openjdk"));
 
   public LegacyDesugaredLibraryBenchmark(BenchmarkConfig config, TestParameters parameters) {
     super(config, parameters);
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java
index 5e75ab4..a8fd859 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/GuavaMultiSetSpliteratorTest.java
@@ -63,6 +63,7 @@
       Assume.assumeTrue(parameters.getApiLevel().isGreaterThanOrEqualTo(AndroidApiLevel.L));
     }
     testForDesugaredLibrary(parameters, libraryDesugaringSpecification, compilationSpecification)
+        // TODO(b/289363570): Guava should not rely on dagger.
         .addProgramFiles(DaggerUtils.getGuavaFromDagger())
         .addInnerClasses(getClass())
         .addOptionsModification(opt -> opt.ignoreMissingClasses = true)
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
index 202d752..ce9ae53 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/LintFilesTest.java
@@ -41,7 +41,8 @@
 @RunWith(Parameterized.class)
 public class LintFilesTest extends DesugaredLibraryTestBase {
 
-  private static final String ANDROID_JAR_34 = "third_party/android_jar/lib-v34/android.jar";
+  private static final String ANDROID_JAR_34 =
+      ToolHelper.THIRD_PARTY_DIR + "android_jar/lib-v34/android.jar";
 
   private final LibraryDesugaringSpecification libraryDesugaringSpecification;
 
@@ -170,7 +171,12 @@
         new String[] {
           libraryDesugaringSpecification.getSpecification().toString(),
           jdkLibJar.toString(),
-          directory.toString()
+          directory.toString(),
+          // TODO(b/289365156): Should probably not be hardcoded on U.
+          ToolHelper.THIRD_PARTY_DIR
+              + "android_jar/lib-v"
+              + AndroidApiLevel.U.getLevel()
+              + "/android.jar"
         });
     InternalOptions options = new InternalOptions(new DexItemFactory(), new Reporter());
     DesugaredLibrarySpecification desugaredLibrarySpecification =
@@ -213,7 +219,12 @@
           "--generate-api-docs",
           libraryDesugaringSpecification.getSpecification().toString(),
           jdkLibJar.toString(),
-          directory2.toString()
+          directory2.toString(),
+          // TODO(b/289365156): Should probably not be hardcoded on U.
+          ToolHelper.THIRD_PARTY_DIR
+              + "android_jar/lib-v"
+              + AndroidApiLevel.U.getLevel()
+              + "/android.jar"
         });
     List<String> html = Files.readAllLines(directory2.resolve("apis.html"));
     // The doc has the same content than the lint data that is tested above, this is just a sanity
diff --git a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/GsonDesugaredLibraryTestUtils.java b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/GsonDesugaredLibraryTestUtils.java
index b07f7b9..655e117 100644
--- a/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/GsonDesugaredLibraryTestUtils.java
+++ b/src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/GsonDesugaredLibraryTestUtils.java
@@ -4,6 +4,7 @@
 package com.android.tools.r8.desugar.desugaredlibrary.gson;
 
 import com.android.tools.r8.TestParameters;
+import com.android.tools.r8.ToolHelper;
 import com.android.tools.r8.desugar.desugaredlibrary.test.CompilationSpecification;
 import com.android.tools.r8.desugar.desugaredlibrary.test.LibraryDesugaringSpecification;
 import java.io.IOException;
@@ -14,8 +15,12 @@
 public abstract class GsonDesugaredLibraryTestUtils {
 
   static final Path GSON_CONFIGURATION =
-      Paths.get("src/test/java/com/android/tools/r8/desugar/desugaredlibrary/gson/gson.cfg");
-  static final Path GSON_2_8_1_JAR = Paths.get("third_party/iosched_2019/gson-2.8.1.jar");
+      ToolHelper.getSourceFileForTestClass(GsonDesugaredLibraryTestUtils.class)
+          .getParent()
+          .resolve("gson.cfg");
+  // TODO(b/289363570): GSON should not rely on Iosched.
+  static final Path GSON_2_8_1_JAR =
+      Paths.get(ToolHelper.THIRD_PARTY_DIR, "iosched_2019/gson-2.8.1.jar");
 
   static String uniqueName(
       TemporaryFolder temp,
diff --git a/src/test/java/com/android/tools/r8/utils/DaggerUtils.java b/src/test/java/com/android/tools/r8/utils/DaggerUtils.java
index 80fad3d..685c0e7 100644
--- a/src/test/java/com/android/tools/r8/utils/DaggerUtils.java
+++ b/src/test/java/com/android/tools/r8/utils/DaggerUtils.java
@@ -8,6 +8,7 @@
 import com.android.tools.r8.TestBase;
 import com.android.tools.r8.TestRuntime;
 import com.android.tools.r8.TestRuntime.CfRuntime;
+import com.android.tools.r8.ToolHelper;
 import com.google.common.collect.ImmutableList;
 import com.google.common.io.ByteStreams;
 import java.nio.file.Path;
@@ -20,7 +21,7 @@
 
 public class DaggerUtils {
 
-  private static final Path DAGGER_ROOT = Paths.get("third_party", "dagger", "2.41");
+  private static final Path DAGGER_ROOT = Paths.get(ToolHelper.THIRD_PARTY_DIR, "dagger", "2.41");
 
   private static final String GUAVA = "guava-31.0.1-jre.jar";
   private static final List<Path> DAGGER_COMPILER =
