我正在编写一个自定义插件,该插件将一些数据添加到Java项目的清单中。
它看起来像这样:
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.
我有理由确定这是一些缺失的进口。我不知道如何确定应该导入什么。
答案 0 :(得分:1)
jar()
不是Project
上的方法。
如果我正确地理解了您的代码,那么您要尝试配置从Java Plugin创建的jar
任务。
所以您需要:
类似的东西:
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'
}
}
我高度建议您为插件切换到Kotlin或Java。与Groovy的动态特性相比,它将使这样的错误得以解决,并且您将完全理解事物的来源。