- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我有一堆像这样的 gradle 脚本插件 https://github.com/docToolchain/docToolchain/blob/master/scripts/exportExcel.gradle并希望将它们变成“真正的”二进制插件以便轻松分发它们。
我知道我可以通过 http 从构建中引用脚本插件,但这不如真正的插件好。
如我所见,编写插件的一种方法是实现 org.gradle.api.Plugin
接口(interface)。这基本上意味着我将不得不重写所有 mit 脚本插件。
是否有另一种方法可以轻松地将它们变成二进制插件?也许是某种 wrapper ?
最佳答案
您的脚本似乎很容易转换为插件。
为什么说您必须重写脚本?据我所知,这基本上是更改一些小细节并添加所有样板文件/元数据的问题。
我写了很多插件,这里有一个非常简单的插件:https://github.com/renatoathaydes/pony-gradle-plugin
这是制作一个真正的插件需要改变的地方:
buildScript
block ,添加对 com.gradle.publish:plugin-publish-plugin:0.9.10
的类路径依赖并申请 com.gradle.plugin-publish
插入。 Example .gradleApi()
的编译依赖. Example .pluginBundle
配置到构建文件。 Example .org.gradle.api.Plugin<org.gradle.api.Project>
的类界面。 Example .apply
中配置插件方法(它为您提供了 Project
的句柄)。这包括将您可能需要的任何任务添加到项目中。org.gradle.api.DefaultTask
的类(通常)针对每个任务。 Example .@org.gradle.api.tasks.TaskAction
注释该方法. Example .META-INF/gradle-plugins/plugin-name.properties
创建描述符带有类似 implementation-class=your.plugin.Class
的条目. Example .基本上就是这样!
您可能希望使插件可配置,Gradle docs展示如何做到这一点,但为了方便起见,这是他们当前的示例:
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
}
}
}
}
然后可以像这样在用户的构建文件中使用它:
greeting {
message = 'Hi'
}
要在 Gradle Portal 中实际发布插件,您需要创建一个帐户... see this更多细节。 (或者你可以只在 Bintray 上发布它,但是你的用户在应用你的插件时会有点尴尬 - 另一方面 Bintray 作为存储库要好得多,所以我最终做了这两个,见上面的例子)。
关于gradle - 如何将 Gradle 脚本插件变成二进制插件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49711846/
我是一名优秀的程序员,十分优秀!