我希望我的每个 Git 存储库都有自己的 build.xml 文件,但避免复制粘贴不同构建脚本使用的大量 macrodef。
组织这个的最佳方式是什么?
将 ant macrodefs 添加到单独的 Git 存储库中,并使它们可用于我的 Jenkins 服务器上的所有构建项目?例如,将它们添加到 Ant 安装文件夹的目录中?
有人对这种设置有一些经验吗?
我也这样做。我强烈认为每个项目都应该是独立的,而不是依赖于另一个源代码存储库。为了实现这一点,我将我的通用宏定义打包为 ANTLib。这些只是 jar 文件,可以像其他第三方任务一样导入到 ANT 构建中。
以下答案解释了如何创建 antlib:
- 如何在 jenkins 上跨多个项目构建作业管理通用的 ant 构建脚本?
这种方法的真正最大优势是当您将ANTlib jar保存在像Nexus这样的版本化存储库中时。我使用 ivy 来管理我的依赖项,这允许对我的通用构建逻辑进行版本控制,使我能够安全地更改逻辑而不会破坏旧版本。当您考虑它时,这与Maven实现的工作流程相同(它也下载插件)。