非Java CI/CD的Maven over Ant

非Java CI/CD的Maven over Ant,maven,jenkins,ant,Maven,Jenkins,Ant,在(非JAVA)CI/CD实现中,使用Maven而不是Ant有什么好处吗?在这种实现中,大多数任务都是由带有一些参数的.exe执行的,并且相同的任务将从Jenkins调用。任何建议都会很有帮助。您需要了解,Ant和Maven在工作方法上有很大的不同 Ant本质上是一种伪装成XML的脚本语言 Maven更喜欢插件的静态配置,每个插件都有相当好的定义 根据我的经验,这意味着Maven通常在JavaIDE中得到更好的支持,从而更容易在本地开发所需的功能,并在任何给定时刻选择最合适的IDE。我在Ne

在(非JAVA)CI/CD实现中,使用Maven而不是Ant有什么好处吗?在这种实现中,大多数任务都是由带有一些参数的.exe执行的,并且相同的任务将从Jenkins调用。任何建议都会很有帮助。

您需要了解,Ant和Maven在工作方法上有很大的不同

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

  • Maven更喜欢插件的静态配置,每个插件都有相当好的定义

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

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

这种方法允许Jenkins对您的测试有更多的了解。如果需要,并行运行它们。如果需要,在末尾生成报告。仅当测试成功时才继续部署。在ant中,您需要亲自编写大部分代码


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

您需要了解,Ant和Maven在其工作方法上有很大的不同

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

  • Maven更喜欢插件的静态配置,每个插件都有相当好的定义

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

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

这种方法允许Jenkins对您的测试有更多的了解。如果需要,并行运行它们。如果需要,在末尾生成报告。仅当测试成功时才继续部署。在ant中,您需要亲自编写大部分代码


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

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

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

如果有很多东西要“编码”到构建系统中,那么Ant是减少编码工作量的更好选择。这就是说,它是一个用XML配置的类似Make的工具,有一些非常好的特性可以隐藏它的Make传统。编写一些额外的Ant任务并不太难,将它们外包到Ant构建中也不难。这就是说,没有“通用”的构建项目结构,并且您对ant build.xml文件的维护将随着时间的推移而受到影响,因为缺乏这种结构。此外,项目的公共信息没有预先声明的结构,您会发现,由于这一事实,随着时间的推移,它往往会变得管理不善


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

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

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

如果有很多东西要“编码”到构建系统中,那么Ant是减少编码工作量的更好选择。这就是说,它是一个用XML配置的类似Make的工具,有一些非常好的特性可以隐藏它的Make传统。编写一些额外的Ant任务并不太难,将它们外包到Ant构建中也不难。也就是说,没有“通用”的构建项目