1
dagger-2でそれを行うことさえ可能なら、私はそれを理解しようとしてきました。抽象的な別のJARファイルのモジュール
このモジュールは、、独自のMavenアーティファクト(それは共通ライブラリです)今
、あなたのメインプログラムで配布されて
@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()
}
ImplModuleをBaseModuleと同じMavenアーティファクトに移動すると、すべてが魅力的に機能します。
ImplModuleが主要なアプリケーションメイカーのアーティファクトにある場合、私はdagger2から次のようにコンパイルエラーを受け取ります。 "@ Provides-annotatedメソッドなしでFooを提供することはできません。
私はMavenで何かをすべて忘れているように感じますが、私はそれを理解できません。
メインアプリケーションはダガーコンパイラも実行しますか?これは、通常、私のアプリケーションにいくつかのモジュールを持っているときに追加することを忘れているものです。すべてのコンパイラを実行する必要があります。 – Fred