Java 另一个JAR文件中的抽象模块

Java 另一个JAR文件中的抽象模块,java,maven,dependency-injection,dagger-2,Java,Maven,Dependency Injection,Dagger 2,我一直在想是否有可能用匕首-2做到这一点 假设您有一个抽象模块(因为它使用泛型) 如果我在与BaseModule相同的maven工件中移动ImplModule,那么一切都会像一个符咒一样工作 如果ImplModule位于主应用程序maven工件中,我会从dagger2中得到编译错误,如: “如果没有@Provides注释的方法,则无法提供Foo。” 感觉好像我忘记了Maven中的某个东西来让整个事情顺利进行,但我无法理解。我最终理解了。 抽象类中的提供程序在另一个包中的实现中不可见 我把它保护起

我一直在想是否有可能用匕首-2做到这一点

假设您有一个抽象模块(因为它使用泛型)

如果我在与BaseModule相同的maven工件中移动ImplModule,那么一切都会像一个符咒一样工作

如果ImplModule位于主应用程序maven工件中,我会从dagger2中得到编译错误,如: “如果没有@Provides注释的方法,则无法提供Foo。”


感觉好像我忘记了Maven中的某个东西来让整个事情顺利进行,但我无法理解。

我最终理解了。 抽象类中的提供程序在另一个包中的实现中不可见


我把它保护起来,然后一切都很酷。

最后我想出来了。 抽象类中的提供程序在另一个包中的实现中不可见


我对它进行了保护,之后一切都很酷。

主应用程序也运行dagger Completer吗?这通常是我在我的应用程序中有几个模块时忘记添加的。所有程序都必须运行dagger编译器。主应用程序是否也运行dagger Completer?这通常是我在我的应用程序中有几个模块时忘记添加的。所有人都必须运行dagger编译器。
@Module
public abstract class BaseModule<A> {
  [...]
  @Provides
  @Singleton
  A provideA() {
    return [...]
  }
}
class ImplModule extends BaseModule<Foo> {
  [...]
}
public class Main() {
  @Component(modules = ImplModule.class)
  interface AwesomeComponent {
    @Singleton Foo foo();
  }

  [...]
    AwesomeComponent component = DaggerAwesomeComponent.builder().build();

  // do something with component.foo()
}