Maven over Ant 非 Java CI/CD

Maven over Ant for an Non Java CI/CD

对于(非 JAVA)CI/CD 实现,使用 Maven 优于 Ant 是否有任何优势,其中大多数任务由带有一些参数的 .exe 执行,并且相同的任务将是从詹金斯调用。任何建议都会有所帮助。

您需要了解 Ant 和 Maven 的工作方式截然不同。

  • Ant 本质上是一种伪装成 XML

  • 的脚本语言
  • Maven 更喜欢插件的静态配置,每个插件都完成了相当明确的工作。

根据我的经验,这意味着 Maven 通常在 Java IDE 中得到更好的支持,这使得在本地开发您需要的功能变得更容易,并选择最合适的 IDE 在任何给定的时刻。我已经成功地在 Netbeans、IntelliJ 和 Eclipse 中使用相同的、未更改的 Maven 项目。

如果我正确理解了您非常含糊的描述,我会为每次调用提供参数的 EXE 编写一个小的 jUnit 测试(或参数化测试套件,具体取决于您的参数存储方式)。这允许您只重新运行一个测试或那些容易失败的测试。使测试独立,以便它们可以按任何顺序执行。在这里有点肘部润滑脂,有很长的路要走。

这种方法允许 Jenkins 对您的测试有更多的了解。 运行 如果需要,它们可以并行。如果需要,最后生成报告。只有在测试成功时才继续部署。在 ant 中,您需要自己手动编写大部分内容。

注意:Maven 相当挑剔,学习曲线陡峭。尽可能遵守约定。

您正在构建非Java。我会和 Maven 一起去。也就是说,这两种方法都有很多痛苦。

Maven 声明了单个输出工件。这是福也是祸。如果您想要自定义构建周期,即构建特定项目的一组步骤,您可以轻松地将其添加到 Maven 中。有很多 Maven 从 C/C++ 源构建共享对象库的示例(通常通过 JNI 包含到 Java 中)。只要您定义了您的工件,并定义了一个自定义生命周期来构建它,您就可以与 Maven 相处得很好。当您几乎没有现有的 Maven 目标要包含在您的生命周期中时,就会出现主要问题,而您几乎需要编写所有这些目标。

如果您有很多东西要 "code" 到您的构建系统中,那么 Ant 是最小化编码工作的更好选择。也就是说,它确实是一个在 XML 中配置的类似 Make 的工具,具有一些非常好的功能,可以隐藏它的一些 Make 遗产。编写一些额外的 Ant 任务并不太难,将它们采购到 Ant 构建中也不难。也就是说,没有 "common" 构建项目结构,并且您对 ant build.xml 文件的维护会因为缺乏而随着时间的推移而受到影响。此外,项目的公共信息没有预先声明的结构,因此您会发现随着时间的推移,它往往会变得管理不善。

因此,Maven 可能是更好的长期解决方案;但是,它也有更深的学习曲线和更多的前期工作来设置你的构建。 Ant 会让您更快地走出大门,但可能会让您留下一个(从构建的角度来看)结构较少、没有每次构建报告的项目,并且可能(因此)随着时间的推移花费更多的时间和精力来更新.