Groovy 如何使用 Dagger?
How to use Dagger for Groovy?
如何配置 dagger 注入 groovy classes,以及注入 groovy classes?
我最初试图让 dagger 将 groovy class 注入我的 java 应用程序,但我发现 dagger 抱怨 groovy class 没有找到。查看日志,似乎 compileGroovy
发生在 compileJava
之后。而dagger编译器的注解处理好像在compileJava
。我猜这可能是问题所在——目前没有 groovy classes 可用。但我还没有找到一种方法来强制 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()
}
}
默认情况下,groovy 编译器不会 运行 java 注释处理器...
您可以将此添加到您的 build.gradle:
compileGroovy {
groovyOptions.javaAnnotationProcessing = true
}
你当然需要添加一个导入
import org.example.dagger.DaggerMainComponent
至Main.groovy
如何配置 dagger 注入 groovy classes,以及注入 groovy classes?
我最初试图让 dagger 将 groovy class 注入我的 java 应用程序,但我发现 dagger 抱怨 groovy class 没有找到。查看日志,似乎 compileGroovy
发生在 compileJava
之后。而dagger编译器的注解处理好像在compileJava
。我猜这可能是问题所在——目前没有 groovy classes 可用。但我还没有找到一种方法来强制 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()
}
}
默认情况下,groovy 编译器不会 运行 java 注释处理器...
您可以将此添加到您的 build.gradle:
compileGroovy {
groovyOptions.javaAnnotationProcessing = true
}
你当然需要添加一个导入
import org.example.dagger.DaggerMainComponent
至Main.groovy