Gradle:使用 ObjectFactory 创建新实例而不使用 @Inject

问题描述 投票:0回答:1

我正在编写一个 gradle 插件(使用 gradle

5.6.3
),我需要在我的
Plugin
类中创建模型类的实例。

根据 gradle 文档,我使用 ObjectFactory 创建实例。以下是示例代码:

ObjectFactory objectFactory = rootProject.services.get(ObjectFactory)
objectFactory.newInstance(class, args)

当我执行此脚本时,我收到一条错误消息:

The constructor for class <MyClass> should be annotated with @Inject
。现在,此类存在于我不拥有的库之一中,因此我无法为构造函数添加注释。那么有没有办法实例化类呢?

gradle groovy gradle-plugin
1个回答
0
投票

根据 Gradle 文档,您有两种选择来获取

ObjectFactory

  1. 将其直接注入到任务、插件或其他对象中
  2. 通过
    Project.getObjects()
  3. 获取

从 gradle 4.0 开始可用。

特别提示:如果您处于一个奇怪的上下文中,例如在设置上下文中,则可能很难访问它,因为您不一定有实际的项目实例。但是您可以从

gradle
上下文访问对象,如下所示:
settings.gradle.rootProject.objects

© www.soinside.com 2019 - 2024. All rights reserved.