Kotlin kapt为一把钥匙争论几个值

时间:2018-06-16 15:07:15

标签: kotlin kapt toothpick-di

我试图将没有反射的Toothpick库集成到我的多模块项目中。我按照this guide将所有模块连接到DI。例如,我有三个模块::app, :feature1, :feature2:app模块依赖于:feature1:feature2。我需要从两个功能模块中注入类。所以在:app build.gradle文件中,我需要像这样写一些东西(使用annotationProccessor - 而不是kapt):

annotationProcessorOptions { arguments = [ 
    toothpick_registry_package_name : 'com.example.app',
    toothpick_registry_children_package_names : "com.example.feature1,com.example.feature2" 
    ]}

正如您所看到的,toothpick_registry_children_package_names参数有两个值(两个值的列表)。但是如何使用kapt插件为一个键设置多个值?我试过这样做:

kapt {
    arguments {
        arg("toothpick_registry_package_name", "com.example.app")
        arg("toothpick_registry_children_package_names", ['com.example.feature1','com.example.feature2'])
    }
}

但生成的代码如下所示:

public MemberInjectorRegistry() {
    addChildRegistry(new [com.example.feature1.MemberInjectorRegistry());
    addChildRegistry(new com.example.feature2].MemberInjectorRegistry());
    registerGroup0();
  }

正如你所看到的,参数包括方括号(第一个参数以&#34开头; [",第二个以#34结束;]#34;)。我究竟做错了什么?我试图删除方括号,但两个模块名称只是连接在一起:

public MemberInjectorRegistry() {
    addChildRegistry(new com.example.feature1 com.example.feature2.MemberInjectorRegistry());
    registerGroup0();
  }

是kapt插件中的错误还是我做错了什么?

0 个答案:

没有答案