首页 > 解决方案 > Gradle 插件依赖

问题描述

在 Java 中开发 Gradle 插件所需的确切依赖项是什么?理想情况下,我想从著名的存储库中获取它,例如 Maven Central 或类似的。

我有一个具有核心功能的 Maven 项目,我刚刚添加了两个额外的插件,一个用于 Ant,一个用于 Maven。它们已经过测试并且可以工作;简单的!现在,我想为 Gradle 插件添加第三个模块,以使此功能也可用于任何 Gradle 项目。

但是,我找不到开发 Gradle 插件所需的确切依赖项。

Gradle 文档(例如https://docs.gradle.org/current/userguide/java_gradle_plugin.html)至少可以说写得不是很好。他们提到:

但他们很不清楚......没有组,没有版本(真的吗?)。

如果有人能启发我从哪里获得这些依赖项,我将非常感激。

标签: javagradlemaven-3gradle-plugin

解决方案


Gradle 的公共和内部 API(又名gradleApi())与 Gradle 发行版捆绑在一起,不是独立发布的,因此不容易被 Maven 构建使用。有待解决的史诗#1156通过允许用户依赖 gradlePublicApi() 来确保插件跨版本兼容性)可能对这里有所帮助。

由于 Gradle 插件最好使用 Gradle 构建,因此实用的解决方案是从 Maven 调用 Gradle 构建并将生成的工件附加到 Maven 构建。Andres Almiray ( aalmiray ) 曾经在博客文章Running Gradle Inside Maven ( Web Archive Link ) 中描述了这一点。他描述了以下高级步骤:

  1. 创建一个新的 Maven module(例如gradle-plugin)并将其添加到父 POM
  2. 在 POM 中为您的模块gradle-plugin添加依赖项。core使用maven-dependency-plugin将依赖项存储到 Maven 构建文件夹,例如target/dependencies.
  3. 创建build.gradle,添加指向target/dependencies(步骤 2)的 Maven 存储库,并让它依赖于core模块以及gradleApi(). 实现 Gradle 插件。
  4. 使用exec-maven-plugin调用 Gradle 构建。
  5. 使用maven-resources-plugin将 Gradle 构建的插件 jar 复制到标准 Maven 构建文件夹。
  6. 使用build-helper-maven-plugin将复制的 jar 附加到 Maven 构建。

可在此处找到示例项目(gradle-in-maven)。


推荐阅读