我正在编写一个 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 文档,您有两种选择来获取
ObjectFactory
:
Project.getObjects()
从 gradle 4.0 开始可用。
特别提示:如果您处于一个奇怪的上下文中,例如在设置上下文中,则可能很难访问它,因为您不一定有实际的项目实例。但是您可以从
gradle
上下文访问对象,如下所示:settings.gradle.rootProject.objects