当前位置: 首页 > 知识库问答 >
问题:

应用gradle自定义jar插件

万俟心思
2023-03-14

我为gradle创建了一个简单的基于groovy的插件。

在我的毕业典礼上。构建文件我有以下内容:

apply plugin: 'groovy'

dependencies {
    compile gradleApi()
    compile localGroovy()
}

一切都很好,我得到了一个构建目录和一个. jar在lib文件夹中生成,我想这是独立的插件。

现在我想知道如何将这个新插件注册到我的gradle安装中,这样我就可以应用插件了:“myPlugin”我做了以下工作:

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

当我尝试应用插件时,每一步都会出现错误:

  • 找不到id为“myplugin”的插件

我怎样才能做到这一点??

你能列出让我的插件工作的步骤吗?(我是gradle groovy的新手)

多谢帮忙

共有2个答案

沈皓君
2023-03-14

查看完整Gradle发行版(或GitHub)中的samples/customPluginsamples/customDistributionsamples。他们应该有你需要的所有信息。

尉迟卓
2023-03-14

用户指南第58章提供了您所需的所有信息。总之:

>

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

或者您希望的存储库依赖项的任何设置,但您需要使用类路径配置,就像我在这里所做的那样。我认为你不能(或者不应该!)像你那样把jar添加到Gradle的插件目录中。

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

 类似资料:
  • 我有一个gradle构建脚本,它检索了一些常见的依赖项,并将它们组合起来创建了一个“胖罐子”。

  • 问题内容: 我正在用Gradle创建一个构建过程,我想提供一个使用Java代码的插件。Gradle 插件文档 说 这是可能的: 您可以使用任何喜欢的语言来实现自定义插件,前提是该实现最终会编译为字节码。对于此处的示例,我们将使用Groovy作为实现语言。如果需要,可以改用Java或Scala。 但是,经过数小时的谷歌搜索和阅读之后,我还没有找到有关如何使用Java创建Gradle自定义插件的任何说

  • 我写了一个gradle插件,我只想在我自己的项目中使用。下面是一个简化的文件结构: 我通过引用jar文件将插件添加到模块 一开始效果很好,但有一个问题。如果您清理项目并尝试再次构建它,它将失败,因为'。/plugin/build/libs/payload-plugin-0.0.1-SNAPSHOT。jar不再存在,它将不会尝试重建插件模块,因为这将被视为配置错误。 我尝试只使用gradlew:so

  • 我正在尝试创建一个自定义任务/插件(两者都拒绝工作),用于我的gradle构建脚本。 我正在使用groovy插件,希望在单独的文件中声明任务/插件,而不是在我的构建中。格拉德尔。 我的项目树如下所示: 我试图做的是在中创建我的任务/插件类,然后在。 让我举一个小例子。 TestTask。groovy: build.gradle 当我尝试使用我的gradle.build(清洁,构建等)做任何事情时,

  • 我已经构建了一个定制的gradle插件,我正试图将其发布到一个私有的maven repo。我使用插件来实现这一点。在经历了很多麻烦之后,我查看了google play services插件的实现(https://github.com/google/play-services-plugins/blob/master/google-services-plugin/publish.gradle)并试图复

  • 我正在使用私有Maven存储库的有限开发环境中工作。里面有一个Gradle插件,我正在尝试使用它。然而,我认为它没有遵循Gradle插件的预期命名和目录结构,所以当我使用PluginDSL时,我的构建失败了。在Maven存储库中,插件的结构如下: 当我使用以下定义使用 Gradle 插件 DSL 引用此插件时: 我的构建版本出现错误,抱怨它找不到.plugin但是,似乎没有通过插件DSL来指示插件