https://github.com/google/dagger/issues/970
https://github.com/google/dagger/releases/tag/dagger-2.29.1
Dagger 2.29からvalidateTransitiveComponentDependencies オプションが実装されたので、それの使い方の説明。
ここのサンプルでは、Dagger 2.29.1を使っています。
kaptを使っている場合は、次のようにトップのbuild.gradleに指定します
allprojects {
  tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
    kapt {
      javacOptions {
        option("-Adagger.validateTransitiveComponentDependencies=DISABLED")
      }
    }
  }
}
(app → lib1 → lib2 をimplementationで依存を指定しています。)
上記オプションを指定することで、次のように書くことが出来るようになりました。
// appモジュール
@Component(
  dependencies = [Lib1Component::class]
)
interface AppComponent
// lib1モジュール
@Component
interface Lib1Component {
  fun lib1(): Lib1
}
class Lib1 @Inject constructor(
   private val lib2: Lib2
)
// lib2モジュール
class Lib2 @Inject constructor()
今までだと、appモジュールからLib2クラスを直接参照できなかったため、エラーになっていたのが、エラーが出なくなりました😁