Gradle:我们需要另一个构建工具吗?
在Java開發的早期,我們要么沒有太多的構建工具需求,要么就使用了其他環境中的工具。 我仍然記得構建shell腳本并創建用于開發Java的文件。 生成文件特別有趣,因為這是一個在設計時就沒有考慮Java的工具。 遷移到不同的操作系統環境也很困難。
那時我工作的地方是我們在Solaris上開發的,但是我們有一些項目在Windows和Solaris上都存在-這是我們發現并開始使用“新”語言的原因之一,至少在那時是新的。 這使得Shell腳本無法使用,并且使文件充其量變得困難。
當螞蟻出來時,我們跳了起來。 就像我們使用的語言一樣,它是跨平臺的。 這對我們來說是一個巨大的利益。
我記得當Maven出現時,存在一些阻力,因為我們有Ant。 但是到了此時,一些項目已經變得足夠大,足夠復雜,以至于編寫和維護Ant文件是一件痛苦的事情。 隨著war文件的出現和從類路徑中加載依賴項jar的出現,查找,下載和安裝每個項目的所有依賴項jar也變得分心。 Maven的依賴管理承諾以及按慣例簡化構建使該工具成為多個項目的必備工具。 多年來,我工作過的許多商店都接受了Maven為編程環境帶來的功能。
于是問題就變成了:有了如此強大的工具,我們還需要其他工具嗎?
作為說明,我將回到我成為程序員和從事建筑工作之前的日子。 因為我是公司所有者的兒子,所以我“得”在施工過程的所有領域工作。 我發現我真的很喜歡木錘。 它的手感很好,用它我可以輕松打出16便士的指甲。 所以我到處使用它; 我用它來做框架,鋪上薄板巖,完成工作,蓋屋頂,但在電氣工作中卻很少。
如果我使用了較輕的錘子,我很確定在密西西比州南部會有一些房屋,這些房屋的墻角散落的錘子把釘子釘得太深了(這是在板巖工作人員之前)用螺絲釘固定住片巖)。 我還看到了屋頂人員從使用屋頂錘獲得了多少好處。 如果我用過一根手指,我的手指斷裂感可能會少很多。 道德:即使每個問題看起來都像釘子,但并非所有的錘子都是解決問題的正確方法。
關于搖籃
我最近一直在研究Gradle構建工具。 立即讓我脫穎而出的一件事是,構建文件不是XML,屬性文件或任何其他僅配置文本文件。 這是一個Groovy腳本。 從本文的第一部分開始,我認為您可以說我已經有一段時間了。 在此之前,它是C和C ++。 基于C的語言,尤其是Java,對我來說是第二天性。 XML是我的代碼輸出的東西,或用于提供服務器或其他工具的配置。 我每天都在使用Java進行結構化方面的工作不如在Java中進行更多的工作。 我對Groovy感到很自在,因為它基于Java。
本文的目的不是要從Maven切換到Gradle,而是要解釋為什么Gradle應該出現在您的工具帶中。 史蒂夫·埃伯索爾(Steve Ebersole) 撰寫了一篇很棒的文章,介紹了為何Hibernate出于自己的開發需求而從Maven遷移到Gradle。 在我看來,當您的項目可以或應該使用Maven約定時,Maven仍然是一個很好的工具。
這也不意味著是有關如何使用Gradle的教程。 已經有一些不錯的入門場所,包括Gradle網站上的用戶指南。
Gradle提供了與IDE的良好集成。 Netbeans的最新版本尤其適用于Gradle。 Gradle有一個更好的多模塊構建系統,其插件系統功能強大且簡單明了,就像編寫插件一樣。 在我看來,它是一個編寫良好且成熟的構建工具。
一個實際的例子
對我而言,Gradle最強大的功能是腳本是代碼。 確切地說,很時髦。 有時我們都會遇到對項目有一個要求的項目,這些要求將它們與其他項目區分開來。 有幾次我編寫了快速的Griffon項目來維護配置數據,否則我將不得不為其維護SQL腳本。 Griffon是一個Groovy快速桌面應用程序環境,用于生成可作為可運行JAR文件或applet部署的獨立應用程序。 當我必須進行更改時,然后必須將其復制到我從中運行應用程序的目錄中,或復制到網絡中以供其他人運行。
Gradle允許我編寫該邏輯構建腳本。 由于Gradle基于Groovy,因此它附帶了所有Groovy以及Java的工具和庫。 例如,添加一個Swing對話框來選擇將JAR復制到哪個目錄,然后進行復制,就像將代碼添加到構建文件一樣簡單:
import javax.swing.JFileChooserdef dirDialog = new JFileChooser(dialogTitle: "Choose directory to copy jar to",fileSelectionMode: JFileChooser.DIRECTORIES_ONLY,approveButtonText: "Set directory",acceptAllFileFilterUsed: false )task copyJar(type: Copy) {from 'build/libs/DocExample.jar'def targetDir = dirDialog.showSaveDialog()if(targetDir == JFileChooser.APPROVE_OPTION ) {targetDir = dirDialog.getSelectedFile()into targetDir} }然后從您的IDE或命令行運行copyJar,執行任務以選擇目錄并復制文件。
好的,這可能有點虛構,但請考慮在構建過程中將文件通過FTP與服務器之間的相似要求。 您可以使用來自Jibble的SimpleFTP之類的東西來滿足該要求。 由于此文件是作為JAR文件提供的,您可以將其放在類路徑中,因此可以像在此使用JFileChooser一樣,在構建腳本中簡單地使用它。
總之, Gradle是功能強大且用途廣泛的工具,應在工具帶中占據一席之地。
翻譯自: https://www.javacodegeeks.com/2013/09/gradle-do-we-need-another-build-tool.html
總結
以上是生活随笔為你收集整理的Gradle:我们需要另一个构建工具吗?的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 什么是复数域 复数域的名词解释
- 下一篇: 799 元,科大讯飞推出 AI 智能键盘