java - Gradle 插件依赖

标签 java gradle maven-3 gradle-plugin

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

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

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

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

  • gradleAPI() 依赖项
  • java-gradle-plugin 依赖项

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

如果有人能告诉我从哪里可以获得这些依赖项,我将非常感激。

最佳答案

Gradle 的公共(public)和内部 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. gradle-plugin 的 POM 中添加对 core 模块的依赖项。使用maven-dependency-plugin将依赖项存储到 Maven 构建文件夹,例如目标/依赖项
  3. 创建 build.gradle,添加指向 target/dependencies 的 Maven 存储库(第 2 步),并让它依赖于 core > 模块以及 gradleApi()。实现 Gradle 插件。
  4. 使用exec-maven-plugin调用 Gradle 构建。
  5. 使用maven-resources-plugin将 Gradle 构建的插件 jar 复制到标准 Maven 构建文件夹。
  6. 使用build-helper-maven-plugin将复制的 jar 附加到 Maven 构建。

示例项目可找到here (gradle-in-maven)。

关于java - Gradle 插件依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59522350/

相关文章:

java - Lambda 等于使用可选值和映射器

android - java.lang.NoClassDefFoundError : com. acme.R$layout 引用 android 库

gradle - 将Spock/Groovy测试结果上传到Sonarqube

java - m2eclipse 失踪 Artifact

maven - 在没有 Maven 的情况下构建 Maven 项目

java - 使用连接表的 Hibernate 一对一单向映射

java - 构造函数未定义错误和泛型类

gradle - Gradle构建未调用JUnit

java - 当 Maven war 插件找不到 webResource 目录时,如何避免构建失败?

maven-plugin - 缺少 Maven 插件码头