如何配置dagger来注入groovy类,以及如何注入groovy类?
我最初试图让dagger将groovy类注入到我的java应用程序中,但我发现dagger抱怨找不到groovy类。查看日志,似乎在compileJava之后发生了compileGroovy。而且dagger编译器的批注处理似乎是在compileJava中进行的。我猜这可能就是问题所在--目前没有groovy类可用。但我已经想出了一种方法,迫使dagger或groovy中的任何一个与另一个一起工作。
似乎我无法上传.tar.gz。但是,如果任何人需要我想要实现的最小演示代码,这些可能会有所帮助(使用gradle 7):
build.gradle
plugins {
id 'groovy'
id 'java'
}
group 'org.example'
version '1.0-SNAPSHOT'
repositories {
mavenCentral()
}
dependencies {
annotationProcessor 'com.google.dagger:dagger-compiler:2.+'
implementation 'com.google.dagger:dagger:2.+'
implementation 'org.codehaus.groovy:groovy-all:3.+'
}settings.gradle
rootProject.name = 'groovy-dagger1'src/main/groovy/org/example/dagger/MainComponent.groovy
package org.example.dagger
import dagger.Component
@Component(modules = [
MainModule,
])
interface MainComponent {
String message();
}src/main/groovy/org/example/dagger/MainModule.groovy
package org.example.dagger
import dagger.Module
import dagger.Provides
@Module
final class MainModule {
@Provides
static String message() {
return 'Hello Groovy Dagger!'
}
}src/main/groovy/org/example/main/Main.groovy
package org.example.main;
class Main {
static void main(String[] args) {
// Dagger component does not exist :/
// println DaggerMainComponent.create().message()
}
}发布于 2021-07-13 23:50:48
默认情况下,groovy编译器不会运行java批注处理器...
您可以将以下内容添加到您的build.gradle:
compileGroovy {
groovyOptions.javaAnnotationProcessing = true
}当然,您需要添加一个导入
import org.example.dagger.DaggerMainComponent转到Main.groovy
https://stackoverflow.com/questions/68364357
复制相似问题