6 Gradle的优点?

Gradle的优点非常多,这里我们先看看主要的几个:

1. 依赖管理

   关于依赖管理,不得不提maven。我相信很多开发者喜欢maven的一个主要原因在于maven的依赖管理。例如,下面是maven关于junit依赖的配置:

<project xmlns=”http: // maven.apache.org/POM/4.0.0″ xmlns:xsi=” http://www.w3.org/2001/XMLSchema-instance ” xsi:schemaLocation=” http://maven.apache.org/POM/4.0.0  http://maven.apache.org/xsd/maven-4.0.0.xsd ”>
<modelVersion>4.0.0</modelVersion>
<groupId>com.mycompany.app</groupId>
<artifactId>my-app</artifactId>
<packaging>jar</packaging>
<version>1.0-SNAPSHOT</version>
<dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
</dependencies>
</project>

对比一下,让我们看看Gradle怎么做:

apply plugin: “java”
group = “com.mycompany.app”
archivesBaseName = “my-app”
version = “1.0-SNAPSHOT”
repositories {
mavenCentral()
}
dependencies {
testCompile “junit:junit:3.8.1″
}

怎么样,不仅代码量更少,而且看起来一目了然。


2. Task

和Ant类似,Gradle也使用task作为最小的运行单元。

首先,先让我们看看ant中task的定义

<?xml version=”1.0″?>
<project name=”foo”>
<target name=”hello”>
   <echo>Hello World</echo>
</target>
</project>

 

对比一下,看看Gradle是如何做的

task hello << {
   println “Hello World”
}

 也许对于仅仅一行的“Hello World"而言,二者看起来差不多。不过试想一下,Ant是使用定义好的task来做要做的事情,而Gradle则是使用Groovy动态脚本来实现,只要你熟悉Groovy,就可以在构建脚本中做任何想做的事情。


3. 灵活性

  对于Ant或者Maven,一般使用XML或者插件来定义构建,由于XML本身的缺陷(复杂,不易阅读,只能描述数据而不是流程),在复杂的项目中,维护XML的配置简直就是噩梦。相反,Gradle的构建是使用groovy脚本语言来定义,因此可以灵活的在构建中使用Groovy的代码,而不仅仅是受限与XML的单一模型。

task time << {
int hours =  new Date().hours
switch (hours) {
case 0..11:
println ” Good Morning! It’s ${hours}am.”
break
case 12..17:  //  noon to 5pm
println ” Good Afternoon! It’s ${hours > 12 ? hours – 12 : hours}pm.”
break
default//  6pm to 11pm
println “Good Evening! It’s ${hours – 12}pm. Shouldn’t you be going home?”
}
}


4. 扩展性

依赖Groovy的动态性,Gralde能够写出基于DSL的代码,对于复杂的项目而言,很容易维护。

另外,Gradle也支持插件机制,目前已经有很多Gradle的可用插件,像Java, War, Jetty等,使用起来非常方便。


5. 社区支持

Gradle的发展离不开社区的支持。目前,很多著名的开源组件,像Hibernate,Spring等都开始使用Gradle作为自动化构建工具。
这篇文章阐述了Hibernate的作者为什么放弃maven,而转投Gradle:

另外,Gradle的官方网站也提供了非常详细的文档和例子,很容易入门 。


6. 总结
最后,让我们看看Maven和Gradle的一个比较结果:

Maven pros

  * Lots of third party plugins for tasks

  * Fairly robust IDE support (eclipse, netbeans, intellij)

  * Dependency management

  * Jetty plugin (you can run the web app off the compiled source with hot deployment)

 Maven cons

 * XML based configuration. which usually ends up being very verbose.

 * Writing simple and custom tasks (for instance copy a set of files somewhere) is tedious. 

   You have to write a plugin and testing + development  time for simple tasks may end up too long and time consuming. 

   For things to go smooth you usually will have to follow maven conventions and standard plugins.

 * Everything is a plugin. Even simple tasks like compile and running tests. 

   So for a fresh project, downloading all the plugins takes considerable time. 

   Plus there might be updates to the plugin which will be downloaded occasionally when you run the build.

 * Lots of maven plugins usually have problems and a general opinion is that it is hard to debug.

 * Building is slow compared to ant and gradle

 * Does not prepare the html unit test case report by default (but something called a surefire reports)


 Gradle (pros)

 * Based on groovy. Scripting tasks are quite coz it is in a programming language. 

 * Uses ivy dependency management (which uses maven repositories). Dependency downloads are quite fast.

 * Integrates ant tasks also.

 * Supports the standard directory layout. 

   So for compilation, testing and packaging no extra tasks need to be written as long    the files are in the layout.

 * Come bundles with a default set of plugins which are core to gradle. So it does not have to download/update plugins

 * Builds are quite fast.

 * Standard junit reports

 * Supports jetty server

  Gradle (cons)

 * IDE support or the lack of it. Eclipse does not come with good support for gradle or groovy. 

   Intellij idea and netbeans supports it (idea supports gradle projects) however.

 * Third party plugin support is not as good as maven

 

整体而言,Gradle的优势已经越来越明显。如果是新起的项目,不要犹豫,直接上Gradle吧,绝对有不一样的体验。 :)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Java的项目管理工具主要有Maven和Gradle两种,它们都可以用于依赖管理、构建打包等任务。Maven是Java项目最早的构建工具之一,而Gradle则相对较新,但是由于其优越的性能和灵活性,近年来越来越受到开发者的青睐。 从功能上来说,Maven和Gradle在很多方面都是相似的。它们都可以自动下载和安装项目依赖,管理项目构建过程,执行单元测试,生成构建报告等。但是在实际使用中,Gradle比Maven更加灵活,支持更多的编程语言和构建场景,对于复杂的构建任务和定制化需求更容易实现。 在大公司中,使用Maven和Gradle的比例都比较高。Maven由于历史原因,被广泛使用,特别是在传统的企业级项目中。而Gradle则更多地被用于新一代的云原生应用、大数据、移动应用等场景。 综合而言,Maven和Gradle各有优劣,选择哪一个更好要根据具体的项目需求和个人偏好来决定。但是在新兴技术领域和大型应用开发中,Gradle逐渐成为主流。 ### 回答2: Maven和Gradle都是用于Java项目构建和管理的工具,没有绝对的好坏之分,选择哪个更适合取决于项目需求和开发团队的偏好。以下是对比两者的详细说明: 1. Maven是更早被广泛采用的构建工具,它使用XML格式的配置文件(pom.xml)来管理项目依赖、构建生命周期以及其他配置。Maven支持丰富的插件生态系统,几乎可以满足大部分Java项目的构建需求。由于其长期存在和大量的资源支持,大部分传统的、久经考验的项目仍然在使用Maven。 2. Gradle是近年来逐渐流行起来的构建工具,它采用了Groovy DSL(Domain Specific Language)用于项目配置。Gradle的配置灵活性和易用性要稍好于Maven,使得它能更方便地支持各种自定义需求,并且可以更好地与其他工具集成。Gradle还引入了增量构建、缓存和任务优化等特性,使其构建速度更快,并且对多模块构建和多项目构建也有良好的支持。 3. 对于现今大公司,很难一概而论它们普遍使用哪个构建工具,因为选择取决于项目的特定需求和团队的偏好。然而,许多新兴公司和项目趋向于选择Gradle,因为其更灵活的配置和带来的高效构建特性更适应当前快速迭代和灵活开发的需求。 总结来说,Maven是一种成熟、稳定且强大的构建工具,适用于传统的、稳定的Java项目。而Gradle则是一种更现代化、灵活且高效的构建工具,适用于新兴的、需要更快速迭代和灵活开发的项目。最终选择哪个构建工具,需要根据项目需求、团队技术能力和个人偏好来决定。 ### 回答3: Java使用Maven和Gradle都可以作为构建工具,它们都有一定的优点和特点。 首先,Maven是Java最早的构建工具之一,具有较长的历史和广泛的使用。它通过基于XML的配置文件(pom.xml)来管理项目的依赖、构建过程、测试等,并且具有丰富的插件生态系统。Maven具有良好的兼容性,可以与各种开发工具和持续集成工具集成,非常适合大型项目和复杂的依赖管理。 相比之下,Gradle是近年来逐渐流行起来的构建工具。它使用基于Groovy和Kotlin的领域特定语言(DSL)来定义构建脚本,具有更简洁灵活的语法和更高的可读性。同时,Gradle具有更快的构建速度和更高的性能,可以根据增量编译和缓存机制智能地决定哪些任务需要重新执行。此外,Gradle还能够很好地处理多项目和多模块的构建,更适合大规模的软件开发团队。 目前,大部分大型公司都在使用Maven或Gradle来构建他们的Java项目。具体使用哪种构建工具主要取决于团队的需求和喜好,以及项目的规模和复杂程度。一些公司可能因为使用Maven较长时间,已经建立了一套完善的Maven生态系统,因此继续沿用Maven。而一些新兴的公司或团队,可能更倾向于使用Gradle,享受其更简洁、高效的优势。 综上所述,无论是Maven还是Gradle,都是优秀的构建工具,选择哪个取决于个人需求和项目特点。同时,需要注意的是,掌握并理解这两种构建工具的使用和原理,对Java开发人员来说都是很重要的技能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值