首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用Dagger for Groovy?

如何使用Dagger for Groovy?
EN

Stack Overflow用户
提问于 2021-07-13 22:28:51
回答 1查看 62关注 0票数 1

如何配置dagger来注入groovy类,以及如何注入groovy类?

我最初试图让dagger将groovy类注入到我的java应用程序中,但我发现dagger抱怨找不到groovy类。查看日志,似乎在compileJava之后发生了compileGroovy。而且dagger编译器的批注处理似乎是在compileJava中进行的。我猜这可能就是问题所在--目前没有groovy类可用。但我已经想出了一种方法,迫使dagger或groovy中的任何一个与另一个一起工作。

似乎我无法上传.tar.gz。但是,如果任何人需要我想要实现的最小演示代码,这些可能会有所帮助(使用gradle 7):

build.gradle

代码语言:javascript
复制
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

代码语言:javascript
复制
rootProject.name = 'groovy-dagger1'

src/main/groovy/org/example/dagger/MainComponent.groovy

代码语言:javascript
复制
package org.example.dagger

import dagger.Component

@Component(modules = [
    MainModule,
])
interface MainComponent {
  String message();
}

src/main/groovy/org/example/dagger/MainModule.groovy

代码语言:javascript
复制
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

代码语言:javascript
复制
package org.example.main;

class Main {
  static void main(String[] args) {
// Dagger component does not exist :/
// println DaggerMainComponent.create().message()
  }
}
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-07-13 23:50:48

默认情况下,groovy编译器不会运行java批注处理器...

您可以将以下内容添加到您的build.gradle:

代码语言:javascript
复制
compileGroovy {
    groovyOptions.javaAnnotationProcessing = true
}

当然,您需要添加一个导入

代码语言:javascript
复制
import org.example.dagger.DaggerMainComponent

转到Main.groovy

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/68364357

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档