如何将Gradle脚本插件转换为二进制插件
我有一堆像这样的gradle脚本插件,我想把它们变成“真正的”二进制插件,以便轻松地分发它们 我知道我可以通过http从构建中引用脚本插件,但这不如真正的插件好 如我所见,编写插件的一种方法是实现如何将Gradle脚本插件转换为二进制插件,gradle,gradle-plugin,Gradle,Gradle Plugin,我有一堆像这样的gradle脚本插件,我想把它们变成“真正的”二进制插件,以便轻松地分发它们 我知道我可以通过http从构建中引用脚本插件,但这不如真正的插件好 如我所见,编写插件的一种方法是实现org.gradle.api.plugin接口。这基本上意味着我必须重写所有mit脚本插件 有没有其他方法可以轻松地将它们转换为二进制插件?也许是某种包装?您的脚本似乎很容易转换为插件 你为什么说你必须重写你的脚本?据我所知,这基本上是一个更改一些小细节并添加所有样板/元数据的问题 我已经编写了很多插件
org.gradle.api.plugin
接口。这基本上意味着我必须重写所有mit脚本插件
有没有其他方法可以轻松地将它们转换为二进制插件?也许是某种包装?您的脚本似乎很容易转换为插件 你为什么说你必须重写你的脚本?据我所知,这基本上是一个更改一些小细节并添加所有样板/元数据的问题 我已经编写了很多插件,这里有一个非常简单的插件: 这是您需要更改的内容,以制作真正的插件:
buildScript
块中,在com.gradle.publish:plugin publish plugin:0.9.10
上添加类路径依赖项,并应用com.gradle.plugin publish
插件李>
gradleApi()
上添加编译依赖项李>
pluginBundle
config添加到生成文件中李>
org.gradle.api.Plugin
接口的类李>
apply
方法中配置插件(该方法为Project
提供句柄)。这包括将您可能需要的任何任务添加到项目中org.gradle.api.DefaultTask
(通常)的类李>
@org.gradle.api.tasks.TaskAction
注释该方法李>
META-INF/gradle-plugins/plugin-name.properties
中创建一个描述符,其条目类似于implementation class=your.plugin.class
李>
基本上就是这样
您可能希望使插件可配置,并演示如何进行配置,但为了方便起见,下面是他们当前的示例:
class GreetingPluginExtension {
String message = 'Hello from GreetingPlugin'
}
class GreetingPlugin implements Plugin<Project> {
void apply(Project project) {
// Add the 'greeting' extension object
def extension = project.extensions.create('greeting', GreetingPluginExtension)
// Add a task that uses configuration from the extension object
project.task('hello') {
doLast {
println extension.message
}
}
}
}
要在Gradle门户中实际发布插件,您需要创建一个帐户。。。更多细节。(或者你可以将其发布在Bintray上,但是用户应用插件时会有点尴尬——另一方面,Bintray作为一个存储库要好得多,所以我最终两者都做了,见上面的示例)
greeting {
message = 'Hi'
}