java - Gradle 插件依赖
问题描述
在 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 的公共和内部 API(又名gradleApi()
)与 Gradle 发行版捆绑在一起,不是独立发布的,因此不容易被 Maven 构建使用。有待解决的史诗#1156(通过允许用户依赖 gradlePublicApi() 来确保插件跨版本兼容性)可能对这里有所帮助。
由于 Gradle 插件最好使用 Gradle 构建,因此实用的解决方案是从 Maven 调用 Gradle 构建并将生成的工件附加到 Maven 构建。Andres Almiray ( aalmiray ) 曾经在博客文章Running Gradle Inside Maven ( Web Archive Link ) 中描述了这一点。他描述了以下高级步骤:
- 创建一个新的 Maven
module
(例如gradle-plugin
)并将其添加到父 POM - 在 POM 中为您的模块
gradle-plugin
添加依赖项。core
使用maven-dependency-plugin将依赖项存储到 Maven 构建文件夹,例如target/dependencies
. - 创建
build.gradle
,添加指向target/dependencies
(步骤 2)的 Maven 存储库,并让它依赖于core
模块以及gradleApi()
. 实现 Gradle 插件。 - 使用exec-maven-plugin调用 Gradle 构建。
- 使用maven-resources-plugin将 Gradle 构建的插件 jar 复制到标准 Maven 构建文件夹。
- 使用build-helper-maven-plugin将复制的 jar 附加到 Maven 构建。
可在此处找到示例项目(gradle-in-maven)。