Java|Java程序员应知应会之Maven和Gradle的区别

Java|Java程序员应知应会之Maven和Gradle的区别

夫Java语言者 , 有构建工具者三 , 一曰Ant , 再曰Maven , 三曰Gradle 。 Ant者 , 上古之物也 , 今人多弃之 。 Maven者 , 中古之产物也 , 尝为众码农所爱 , 于今爱之者亦众 。 三者中 , Gradle最少 , 以Maven繁重不堪轻用 , 是故有异士造Gradle也 。 然二者之异同 , 时人多不甚了了 , 故为此文 , 为诸公辩之 。
二者之异也 , 一则引入简繁之不同 , Maven若引依赖 , 必先写dependency , 再写groupId , 三写artifactId , 至于version、scope之流 , 可略之也 。 所见如左:
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
而Gradle则弃其所以繁重 , 而简约之 , 仅以只言而异之 , 所见如左:
dependencies {
compile 'org.hibernate:hibernate-core:3.6.7.Final'
testCompile ‘junit: junit: 4. + '

时人因以为简 。
二者之异也 , 再则scope异也 , 以Maven之重 , scope有complie、provided、runtime、test、system、import之六分 。 而Gradle则弃其繁重 , 取其精要 , 以compile、runtime、testCompile、testRuntime四分狎之 , 而其版本亦不做限 , 以+号示之可动态理之也 。
二者之异也 , 三则多模块异也 。 若以Maven构建多模块 , 则佯以一父模块辅之 , 列诸模块于其下 。 而Gradle则不然 , 可依次构造诸模块 , 既尔略改settings.gradle文件 , 列依赖模块于其中 , 遂引模块于build.gradle , 即成也 。
二者之异众亦 , 非一小文所能尽言者 。 夫技巧之演进 , 如造化之莫测 。 凡夫穷其白首 , 亦不能尽得其中之奥妙 。 实可叹也 。
【Java|Java程序员应知应会之Maven和Gradle的区别】