Maven over Ant for Non Java CI / CD

时间:2018-01-03 04:48:53

标签: maven jenkins ant

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

2 个答案:

答案 0 :(得分:1)

您需要了解Ant和Maven在他们的工作方式上存在很大差异。

  • Ant本质上是一种伪装成XML的脚本语言

  • Maven更喜欢插件的静态配置,每个插件都做了相当明确的工作。

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

如果我理解你的模糊描述,我会为EXE的每个调用编写一个小的jUnit测试,提供参数(或参数化的测试套件,具体取决于你的参数的存储方式)。这使您可以重新运行一个测试或轻松失败的测试。使测试独立,以便它们可以按任何顺序执行。这里有一点肘部油脂,走了很长的路。

这种方法允许Jenkins更多地了解您的测试。如果需要,可以并行运行它们。如果需要,最后生成报告。如果测试成功,则仅继续部署。在蚂蚁中,你需要亲自手动编写大部分内容。

注意:Maven相当挑剔,学习曲线陡峭。尽可能遵循惯例。

答案 1 :(得分:1)

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

Maven声明了一个输出工件。这是一种祝福和诅咒。如果您想要一个自定义构建周期,这是构建特定项目的一组步骤,您可以使用Maven轻松添加它。有很多Maven从C / C ++源代码构建共享对象库的例子(通常是通过JNI包含到Java中)。只要你定义你的工件,并定义一个自定义生命周期来构建它,你可以很好地与Maven相处。当您的生命周期中包含少量现有Maven目标时,主要问题就出现了,您需要编写几乎所有目标。

如果你有很多东西要去"代码"在您的构建系统中,Ant是最小化编码工作的最佳选择。也就是说,它是一个用XML配置的类似Make的工具,有一些非常好的功能可以隐藏它的一些Make遗产。编写一些额外的Ant任务并不难,并将它们导入Ant构建也不困难。也就是说,没有共同的"构建项目结构,由于缺乏这种结构,你对ant build.xml文件的维护会随着时间的推移而受到影响。此外,项目共有的信息没有预先声明的结构,你会发现由于这个事实,它随着时间的推移会变得很难管理。

因此,Maven可能是一个更好的长期解决方案;但是,它也有更深入的学习曲线,并且在设置构建时需要更多的前期工作。 Ant会让你更快地出门,但可能会给你一个项目(从构建的角度来看)结构较少,没有构建报告,并且可能(因此)花费更多的时间和精力来更新。