gradle错误:找不到参数的方法jar()



我正在编写一个自定义插件,将一些数据添加到Java Project的清单中。

看起来像这样:

package com.example.gradle
import org.gradle.api.Plugin
import org.gradle.api.Project
public class ExamplePlugin implements Plugin<Project> {
    def apply(Project project) {
        project.jar() {
            manifest {
                attributes 'buildServer': checkIfIsBuildServer()
                attributes 'personalBuild': checkIfIsPersonalBuild()
            }
        }
    }
    def checkIfIsBuildServer() {
        return 'some result'
    }
    def checkIfIsPersonalBuild() {
        return 'some result'
    }
}

当我试图将其应用于某个项目时,我会收到一个错误:

Could not find method jar() for arguments [com.example.gradle.ExamplePlugin$_apply_closure1@411e4f5e] on project ':SomeProject' of type org.gradle.api.Project.

我可以合理地确定这是一些缺失的导入。我不知道如何确定应该进口。

jar()不是 Project上的方法。

如果我正确理解您的代码,您要做的就是配置从Java插件创建的jar任务。

因此您需要:

  1. 获得任务
  2. 配置任务

类似:

import org.gradle.api.plugins.JavaPlugin
import org.gradle.api.tasks.bundling.Jar
public class ExamplePlugin implements Plugin<Project> {
    def apply(Project project) {
        project.afterEvaluate {
            project.tasks.named(JavaPlugin.JAR_TASK_NAME, Jar) {
                it.manifest {
                    attributes 'buildServer': checkIfIsBuildServer()
                    attributes 'personalBuild': checkIfIsPersonalBuild()
                }
            }
        }
    }
    def checkIfIsBuildServer() {
        'some result'
    }
    def checkIfIsPersonalBuild() {
        'some result'
    }
}

i 高度建议切换到kotlin或Java以获取插件。解决这个问题将造成这样的错误,您将完全了解与Groovy的动态性质相比,事物的来源。

最新更新