66

Maven 和 Jenkins 有什么区别?

两者都支持 JUnit 的自动构建和自动执行。

如果是这样,它们是互补的,还是相互排斥的?什么时候应该使用一个而不是另一个?

4

4 回答 4

87

Maven 正在构建工具/环境。Jenkins 是一个 CI(持续集成)工具。

Maven 更像是 Ant 的替代品。

  1. 它通过插件帮助构建项目,例如构建和版本控制、JUnit 测试等...
  2. 它管理项目的依赖关系。您可以在 pom.xml 文件中定义项目应该如何构建(插件),以及需要哪些库(依赖项)。

Jenkins 作为一个智能作业调度程序,不能帮助您完成版本控制或 JUnit 测试等任务,但是它可以通过调用项目中的 pom.xml 文件间接帮助您完成所有这些工作。Jenkins 让您有权决定何时调用 pom.xml 文件,具体取决于调用的条件以及您想要对结果执行的操作。并且 Jenkins 可以监听不同的事件,例如 svn commit、当前时间是午夜等。

这是一个强大的想法。例如,您可以要求 Jenkins 在提交新代码时触发构建或运行所有 JUnit 测试,然后,如果单元测试通过,则在目标机器上部署。或在午夜安排繁重的任务,例如单元测试。这是自动部署或 AKA 持续集成的基本思想。如果您愿意,可以简称为 CI。

于 2012-05-31T13:21:23.737 回答
27

Maven 是管理依赖项和应用程序生命周期的构建工具。它还有一个插件设计,允许您将其他任务添加到标准编译/测试/包/安装/部署任务。

Jenkins 是一个持续集成套件,它可以从存储库中检查您的代码、构建和打包它,然后将其转储到服务器上以便您可以对其进行测试——所有操作都无需干预。它可以使用 Maven 或 Ant 作为其构建工具。

综上所述,Jenkins 可以使用 Maven 作为其持续集成的构建工具。如果你选择不做 CI,你可以在没有 Jenkins 的情况下使用 Maven。

于 2012-05-31T13:10:00.087 回答
4

Jenkins Maven 插件 wiki 页面的第一段解释了 Jenkins 和 Maven 之间的交互:

“当 Jenkins 作业很多时,管理 Jenkins 作业并不容易,特别是如果某些参数在许多作业中应该相同。“jenkins-maven-plugin”允许生成 Jenkins 作业,每个作业一个“config.xml”,从一个简单的Maven POM。这样我们可以将所有 Jenkins 作业控制在一个地方,在它们之间重用任意数量的配置。

于 2014-08-14T11:16:10.843 回答
1

Maven是一个构建工具,简单来说就是ant的继承者。它有助于构建和版本控制。

然而 Jenkins 是持续集成系统,在 maven 中用于构建。Jenkins 可用于自动化部署过程。每当提交新代码时,自动运行所有 Junit 测试用例,如果它们通过,则将项目打包并部署到特定位置。

于 2015-06-05T10:04:26.410 回答