小编Kur*_*soR的帖子

如何为 Gradle dependency {} 块编写扩展方法

我正在尝试为 DependencyHandler 编写扩展方法。自动完成这些方法的主要目标之一。

所以我在buildSrc项目中编写了这样的扩展函数(Shortcuts.kt):

fun DependencyHandler.autoValue() {
    add("compileOnly", Libs.Auto.autoValueAnnotations)
    add("annotationProcessor", Libs.Auto.autoValueCompiler)
}
Run Code Online (Sandbox Code Playgroud)

并将其注册为扩展模块,如下所述

# File: src/main/resources/META-INF/services/org.codehaus.groovy.runtime.ExtensionModule
moduleName = buildSrc
moduleVersion = 1.0
extensionClasses = com.example.test.ShortcutsKt
Run Code Online (Sandbox Code Playgroud)

build.gradle我想在以下文件中使用这些方法:

dependencies {
    ...
    autoValue()
}
Run Code Online (Sandbox Code Playgroud)

它出现在dependencies{}块内的自动完成列表中,但在配置时出现错误:

org.gradle.internal.metaobject.AbstractDynamicObject$CustomMessageMissingMethodException: Could not find method autoValue() for arguments [] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
    at org.gradle.internal.metaobject.AbstractDynamicObject.methodMissingException(AbstractDynamicObject.java:179)
    at org.gradle.internal.metaobject.ConfigureDelegate.invokeMethod(ConfigureDelegate.java:87)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeOnDelegationObjects(ClosureMetaClass.java:430)
    at org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:369)
    at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1022)
    at org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:69)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:158)
    at build_dh4v5lw1dkt4b2nii5ope5rmy$_run_closure1.doCall(/.../app/build.gradle:29)
Run Code Online (Sandbox Code Playgroud)

groovy gradle kotlin build.gradle

5
推荐指数
1
解决办法
2557
查看次数

标签 统计

build.gradle ×1

gradle ×1

groovy ×1

kotlin ×1