应用gradle自定义jar插件

10

我为Gradle创建了一个基于Groovy的简单插件。

在我的gradle.build文件中,我有以下内容:

apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

一切都很顺利,我得到了一个构建目录,并且在lib文件夹中生成了一个.jar文件,我猜这就是独立插件。

现在我想知道如何将此新插件注册到我的gradle安装中,以便我可以执行apply plugin: 'myPlugin'。我已经完成了以下工作:

  • 将插件放入安装包中的插件文件夹中
  • 创建了myplugin.properties文件,并将其包含在META-INF文件夹中
  • 在src目录的META-INF中放置了相同的属性文件(绝望的行为)

无论每个步骤之后,当我尝试应用该插件时,都会出现错误:

  • 找不到id为'myplugin'的插件

我该如何正确操作??

您能否列出一系列步骤,让我的插件正常工作? (我对gradle + groovy很陌生)

感谢您的帮助

2个回答

11

用户指南的第58章(译注:英文链接)包含了您需要的所有信息。总结如下:

  • myPlugin.properties文件放在您的项目结构中,即src/main/resources/META-INF/gradle-plugins/目录下。
  • 像往常一样构建您的jar包。
  • 在您希望使用该插件的脚本中,添加一个buildscript闭包,例如:

    buildscript {
        repositories {
            flatDir dirs: "build/libs"
        }
        dependencies {
            classpath "your.group:your-plugin:1.0.0"
        }
    }
    

或者您希望使用任何repositoriesdependencies的设置,但是您需要像我这样使用classpath配置。我认为您不应该像您之前那样将jar添加到Gradle的插件目录中。

注意:flatDir不会解析传递依赖关系。依赖管理的相同规则适用于buildscript,因此您可以使用常规的maven或ivy存储库来部署您的插件。


我已经尝试过这个方法,但仍然收到以下错误提示:无法解析配置“:classpath”的所有依赖项。
找不到org.gradle.mypluginpack:MyPlugin:1.0-SNAPSHOT。 要求: :test:未指定。
- RicardoE
1
很可能你指定的存储库中没有包含你的插件的jar文件。我的flatDir只是为了举例说明。在buildscript闭包中也适用于依赖管理的相同规则。 - Pascal Gélinas
我认为这不会起作用,因为它不包括该插件的依赖项。 - Vic Seedoubleyew
@VicSeedoubleyew 这个问题没有提到插件的任何依赖关系,而我在之前的评论中提到了依赖管理适用于buildscript;flatDir只是为了举例,并不会解决任何依赖关系,但您仍然可以使用自定义的maven/ivy存储库来解决传递依赖关系。我会更新答案以澄清。 - Pascal Gélinas

1

请查看完整的Gradle分发版(或在GitHub上查看)中的samples/customPluginsamples/customDistribution示例。它们应该包含您所需的所有信息。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接