Maven 和 Jenkins 有什么区别?
两者都支持 JUnit 的自动构建和自动执行。
如果是这样,它们是互补的,还是相互排斥的?什么时候应该使用一个而不是另一个?
Maven 正在构建工具/环境。Jenkins 是一个 CI(持续集成)工具。
Maven 更像是 Ant 的替代品。
Jenkins 作为一个智能作业调度程序,不能帮助您完成版本控制或 JUnit 测试等任务,但是它可以通过调用项目中的 pom.xml 文件间接帮助您完成所有这些工作。Jenkins 让您有权决定何时调用 pom.xml 文件,具体取决于调用的条件以及您想要对结果执行的操作。并且 Jenkins 可以监听不同的事件,例如 svn commit、当前时间是午夜等。
这是一个强大的想法。例如,您可以要求 Jenkins 在提交新代码时触发构建或运行所有 JUnit 测试,然后,如果单元测试通过,则在目标机器上部署。或在午夜安排繁重的任务,例如单元测试。这是自动部署或 AKA 持续集成的基本思想。如果您愿意,可以简称为 CI。
Maven 是管理依赖项和应用程序生命周期的构建工具。它还有一个插件设计,允许您将其他任务添加到标准编译/测试/包/安装/部署任务。
Jenkins 是一个持续集成套件,它可以从存储库中检查您的代码、构建和打包它,然后将其转储到服务器上以便您可以对其进行测试——所有操作都无需干预。它可以使用 Maven 或 Ant 作为其构建工具。
综上所述,Jenkins 可以使用 Maven 作为其持续集成的构建工具。如果你选择不做 CI,你可以在没有 Jenkins 的情况下使用 Maven。
Jenkins Maven 插件 wiki 页面的第一段解释了 Jenkins 和 Maven 之间的交互:
“当 Jenkins 作业很多时,管理 Jenkins 作业并不容易,特别是如果某些参数在许多作业中应该相同。“jenkins-maven-plugin”允许生成 Jenkins 作业,每个作业一个“config.xml”,从一个简单的Maven POM。这样我们可以将所有 Jenkins 作业控制在一个地方,在它们之间重用任意数量的配置。
Maven是一个构建工具,简单来说就是ant的继承者。它有助于构建和版本控制。
然而 Jenkins 是持续集成系统,在 maven 中用于构建。Jenkins 可用于自动化部署过程。每当提交新代码时,自动运行所有 Junit 测试用例,如果它们通过,则将项目打包并部署到特定位置。