项目编译工具:Maven与Gradle的用途与比较

Maven与Gradle的用途与比较


       Gradle和Maven都是项目自动构建工具,编译源代码只是整个过程的一个方面,更重要的是,如果要软件发布到生产环境中来产生商业价值,就要运行测试,构建分布、分析代码质量、甚至为不同目标环境提供不同版本,然后部署。整个过程进行自动化操作是很有必要的。

       整个过程可以分成以下几个步骤:
           a. 编译源代码;
           b. 运行单元测试和集成测试;
           c. 执行静态代码分析、生成分析报告;
           d. 创建发布版本;
           e. 部署到目标环境;
           f. 部署传递过程;
           g. 执行冒烟测试和自动功能测试。

       如果你手工去执行每一个步骤无疑效率比较低而且容易出错,有了自动化构建就只需要自定义构建逻辑,剩下的事情交给工具去完成。

       虽然两者都是项目工具,但是maven现在已经是行业标准,Gradle是后起之秀,很多人对他的了解都是从android studio中得到的,Gradle抛弃了Maven的基于XML的繁琐配置,众所周知XML的阅读体验比较差,对于机器来说虽然容易识别,但毕竟是由人去维护的。取而代之的是Gradle采用了领域特定语言Groovy的配置,大大简化了构建代码的行数。

       比如在Maven中你要引入一些依赖:
          <properties>
                  <kaptcha.version>2.3</kaptcha.version>
          </properties>
          <dependencies>
                  <dependency>
                      <groupId>com.google.code.kaptcha</groupId>
                      <artifactId>kaptcha</artifactId>
                      <version>${kaptcha.version}</version>
                      <classifier>jdk15</classifier>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-core</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-beans</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>org.springframework</groupId>
                      <artifactId>spring-context</artifactId>
                  </dependency>
                  <dependency>
                      <groupId>junit</groupId>
                      <artifactId>junit</artifactId>
                  </dependency>
          </dependencies>
       然后将其转换成Gradle脚本,结果是惊人的:
          dependencies {
              compile('org.springframework:spring-core:2.5.6')
              compile('org.springframework:spring-beans:2.5.6')
              compile('org.springframework:spring-context:2.5.6')
              compile('com.google.code.kaptcha:kaptcha:2.3:jdk15')
              testCompile('junit:junit:4.7')
          }

       注意配置从原来的28行缩减至7行!这还不算省略的一些父POM配置。依赖的groupId、artifactId、 version,scope甚至是classfier,一点都不少。较之于Maven或者Ant的XML配置脚本,Gradle使用的Grovvy脚本杀伤力太大了,爱美之心,人皆有之,相比于七旬老妇松松垮垮的皱纹,大家肯定都喜欢少女紧致的脸蛋,XML就是那老妇的皱纹。

       Gradle很显著的两个特点:
          其一是简洁,基于Groovy的紧凑脚本实在让人爱不释手,在表述意图方面也没有什么不清晰的地方。
          其二是灵活,各种在Maven中难以下手的事情,在Gradle就是小菜一碟,比如修改现有的构建生命周期,几行配置就完成了,同样的事情,在Maven中你必须编写一个插件,那对于一个刚入门的用户来说,没个一两天几乎是不可能完成的任务。

©️2020 CSDN 皮肤主题: Age of Ai 设计师:meimeiellie 返回首页