1

我们有两个用于 Java 组件的存储库,我们需要从中生成一个 WAR。这些存储库中的 Gradle 构建脚本有许多共同的部分。我们应该如何在存储库之间共享那些通用的 Gradle 脚本:
- 将通用的 Gradle 脚本放入存储库;
- 有一个自定义的 Gradle 发行版,将其放入存储库?
还有其他想法吗?
如果我们将常见的 Gradle 脚本放入存储库,我们还需要将它们放入 SCM,并保持它们同步——我们可能需要另一个 Gradle 脚本来将 Gradle 脚本发布到存储库。

4

1 回答 1

4

有两种方法可以在构建之间共享构建逻辑:

  1. 编写一个包含共享逻辑(例如 )的构建脚本foo.gradle,将其放在 Web 服务器上,并将其包含在其他构建中apply from: "http://..."。我们称之为脚本插件
  2. 制作一个单独的插件项目(并构建),编写一个二进制插件(一个实现 的类org.gradle.api.Plugin),将其作为 Jar 发布到存储库,并将其包含在其他构建中,apply plugin: ...并带有一个buildscript {}部分。

脚本(但不是二进制)插件的一个限制是它们没有被缓存。因此,使用脚本插件的构建只有在能够连接到为插件提供服务的 Web 服务器时才会成功。

有关更多详细信息,请参阅Gradle 用户指南以及完整 Gradle 发行版中的许多示例。

于 2013-10-04T17:33:57.253 回答