构建工具Maven和Gradle的异同

   在Java码农的世界里,构建工具一直是一个不可或缺的元素。在这个小圈子中影响力最大的角色莫过于Maven了。它使用XML做为配置文件,改进了前辈Ant的复杂的构建配置,提供了一些现成的目标,而不须要咱们一个个的将构建任务的每一个命令一一列出。另外它提供了一个杀手锏功能,那就是依赖管理,它经过简单的配置就能够自动从网络上下载项目所需的依赖,这革命性的改变了咱们开发软件的方式。能够想象,若是你是一个大型软件开发项目组的成员,若是使用代码仓库管理依赖jar包会令仓库变得多么庞大!Maven的制品仓库设计实现了制品与代码间的解耦,为基于制品的协做提供了可能。apache

        在Java构建领域,咱们可以看到一些新兴的工具在涌现。好比基于Groovy的Gradle。Hibernate就将本身的项目从Maven迁移到了Gradle,Google官方Android开发的IDE Android Studio也默认使用了Gradle进行构建。这些事件令Gradle吸引了很多眼球。Gradle真的要替代Maven了么?固然没有,Maven在现在仍然是Java构建技术的事实标准。Gradle也仍然使用了Maven的制品库来作依赖管理。可是从Gradle身上,咱们确实看到了进步。简洁的Groovy语法和灵活的配置令咱们眼前一亮。网络

依赖管理
        Maven的配置文件是.pom文件。POM是项目对象模型(Project Object Model)的简称,它是Maven项目中的文件,使用XML表示。其中包含项目的基本信息,构建过程,环境信息,依赖信息等。在pom.xml中咱们须要引入一个依赖时须要将它的groupId, artifactId和version都用标签引发来。可是在Gradle项目的build.gradle中你会发现,仅仅须要将三者的value用:连起来,并"调用compile函数"就能够啦。maven

 

1、构建生命周期管理
        除了依赖管理之外,构建工具的另外一个主要用途就是构建的生命周期管理。函数

        Maven有三个生命周期,每一个生命周期又分为多个阶段:工具

    Clean:包含3个阶段,与清理上次构建生成的文件相关
    Default:Maven的核心生命周期,包含多个阶段如预处理、编译、测试、打包、安装到本地仓库、发布到远程仓库等。
    Site: 包含4个阶段,与生成项目报告,站点,发布站点相关。
        这些生命周期都是系统自定义好的,若是咱们须要修改现有的构建生命周期的话,咱们就要编写一个Maven插件。由于Maven是经过插件发来完成大多数的构建任务。每一个插件能够绑定一个生命周期。配置好绑定生命周期后,咱们须要定义插件的任务,在Maven中每一个任务的goal称做Mojo,每一个Mojo咱们都须要实现org.apache.maven.plugin.Mojo接口。也就是咱们须要定义一个类来实现这个接口。使用时咱们须要引入这个插件,并配置须要执行的goal。测试

        Gradle中有一个基本概念叫Task,咱们能够使用Task来完成需求,变得很是简单。gradle

 

2、制品发布
        在制品发布这个操做上,Maven要扳回一局。Maven原生支持maven jar的格式,发布很简单;而Gradle虽然说既支持Maven又支持Gradle,可是就要咱们本身作不少额外的工做。好比Maven要发布制品,只须要配置远程仓库的参数,而gradle发布制品,还须要生成pom文件。ui

 

最后:Just have a try! Maven和Gradle都是很是优秀的构建工具,增长两者的使用经验不是一个很亏的事情。插件

相关文章
相关标签/搜索