我们有两个用于 Java 组件的存储库,我们需要从中生成一个 WAR。这些存储库中的 Gradle 构建脚本有许多共同的部分。我们应该如何在存储库之间共享那些通用的 Gradle 脚本:
- 将通用的 Gradle 脚本放入存储库;
- 有一个自定义的 Gradle 发行版,将其放入存储库?
还有其他想法吗?
如果我们将常见的 Gradle 脚本放入存储库,我们还需要将它们放入 SCM,并保持它们同步——我们可能需要另一个 Gradle 脚本来将 Gradle 脚本发布到存储库。
问问题
863 次
1 回答
4
有两种方法可以在构建之间共享构建逻辑:
- 编写一个包含共享逻辑(例如 )的构建脚本
foo.gradle
,将其放在 Web 服务器上,并将其包含在其他构建中apply from: "http://..."
。我们称之为脚本插件。 - 制作一个单独的插件项目(并构建),编写一个二进制插件(一个实现 的类
org.gradle.api.Plugin
),将其作为 Jar 发布到存储库,并将其包含在其他构建中,apply plugin: ...
并带有一个buildscript {}
部分。
脚本(但不是二进制)插件的一个限制是它们没有被缓存。因此,使用脚本插件的构建只有在能够连接到为插件提供服务的 Web 服务器时才会成功。
有关更多详细信息,请参阅Gradle 用户指南以及完整 Gradle 发行版中的许多示例。
于 2013-10-04T17:33:57.253 回答