gradle和maven有什么用?分別有什么區別?


作者:EZLippi
鏈接:http://www.zhihu.com/question/29338218/answer/51293828
來源:知乎
著作權歸作者所有。商業轉載請聯系作者獲得授權,非商業轉載請注明出處。

Gradle和Maven都是項目自動構建工具,編譯源代碼只是整個過程的一個方面,更重要的是,你要把你的軟件發布到生產環境中來產生商業價值,所以,你要運行測試,構建分布、分析代碼質量、甚至為不同目標環境提供不同版本,然后部署。整個過程進行自動化操作是很有必要的。

整個過程可以分成以下幾個步驟:

  • 編譯源代碼
  • 運行單元測試和集成測試
  • 執行靜態代碼分析、生成分析報告
  • 創建發布版本
  • 部署到目標環境
  • 部署傳遞過程
  • 執行冒煙測試和自動功能測試
如果你手工去執行每一個步驟無疑效率比較低而且容易出錯,有了自動化構建你只需要自定義你的構建邏輯,剩下的事情交給工具去完成。

雖然兩者都是項目工具,但是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中你必須編寫一個插件,那對於一個剛入門的用戶來說,沒個一兩天幾乎是不可能完成的任務。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM