gradle maven_Gradle – Maven的观点
gradle maven
正如我博客的讀者所知道的, 我有點像Maven迷 。 我從2007年8月左右開始使用Maven,從沒有回過頭。 但是,與其他所有情況一樣,“變化是唯一的常數(shù)”。 現(xiàn)在這個領(lǐng)域還有其他參與者,Gradle似乎是最有前途的。 我決定試一試,并在本文中分享了我的發(fā)現(xiàn)/學(xué)習(xí)的要點(當(dāng)然,一篇文章僅勉強刮傷表面,但這仍然是一個開始)。 如果您從事基于Java的項目,并使用Maven,那么您可能會發(fā)現(xiàn)這篇文章有趣。
什么是Gradle?
Gradle將自己介紹為企業(yè)自動化工具。 從我到目前為止所看到的,我傾向于同意,它似乎確實勾勒了旨在成為該框架的所有框框。 然而,這是一個有點的宏偉目標(biāo) ,salesy談話。 擁有一個很好的目標(biāo)(例如,嘗試成為企業(yè)自動化工具),但是我個人認(rèn)為這是一個雄心勃勃而不是現(xiàn)實。
從Java技術(shù)專家的角度來看,減少雄心和銷售投入– Gradle(看起來像)Swift成為處理Java項目的所有構(gòu)建和發(fā)布相關(guān)活動的好工具。
Maven對我來說效果很好。
是的,它確實。 我與一些相當(dāng)大的企業(yè)一起工作,說實話,即使他們將所有Java項目都放在Maven上,他們也將取得長足的進步。 因此,就我個人的經(jīng)驗而言,在一家正規(guī)公司中,出于所有實際目的,Maven不僅足夠好,而且如果得到正確和廣泛的使用,則是一個巨大的飛躍。
話雖這么說,雖然企業(yè)擁有使用工具和技術(shù)安全運行的奢侈品(甚至確實有這種需求),但我們的技術(shù)專家并不擁有奢侈品。 當(dāng)工具/技術(shù)/框架證明自己很勇敢時,企業(yè)可以聘請知道這些工具(有時甚至是流行語)的顧問,而那些沒有花費足夠的精力來保持更新的技術(shù)專家可能會發(fā)現(xiàn)自己正在努力跟上。 訣竅是要知道哪些技術(shù)可以投入時間,哪些則不可以。
至于Gradle,它已經(jīng)成功吸引了一些令人印象深刻的顧客。 Spring人們已經(jīng)將Spring核心轉(zhuǎn)移到Gradle。 Hibernate的人詳細(xì)記錄了他們繼續(xù)學(xué)習(xí)Gradle的原因。 Grails的人似乎對 Gradle 有強烈的意見 。
我不會嘗試爭取Gradle的好處。 首先,我對該工具還不了解。 其次,我已經(jīng)分享的鏈接來自一些相當(dāng)著名的公司,它們與相當(dāng)成功的技術(shù)公司合作,并且他們在整合Gradle的好處方面做得很好。
我的簡單總結(jié)是
我使用的STS插件肯定有一些粗糙的地方。
所以,你去了。 兩點贊成,兩點反對。 相當(dāng)平衡。 這足以使我感興趣。 如果您也很感興趣,請繼續(xù)閱讀。
那么,我該如何開始?
我建議您首先為幾個鏈接添加書簽。 Gradle 主頁 , 下載頁面 , 相關(guān)工具列表。 電子書《 使用Gradle進行構(gòu)建和測試 》。 完全值得注冊。 我推薦它。 最后,您將在Gradle中花費更多的時間后,可以更好地理解Gradle用戶指南 。
因此,繼續(xù)下載最新版本。 我已經(jīng)有了本文的1.3版。 解壓縮并將其放在您喜歡的任何位置。 我通常將此類工具(基于Java的工具)轉(zhuǎn)儲到C:\ ProgramFiles(注意Program-?-Files之間缺少的空間)。 因此,對于本文,我有一個C:\ ProgramFiles \ gradle-1.3文件夾,其中包含我們剛剛下載的所有Gradle糖果。
我們需要稍微調(diào)整gradle.bat文件。 在批處理文件的開頭添加一個JAVA_HOME。 Gradle需要有權(quán)訪問機器的Java安裝。 保留文件的其余部分。
文件:C:\ ProgramFiles \ gradle-1.3 \ bin \ gradle.bat
SET JAVA_HOME=C:\ProgramFiles\Java\jdk1.7.0_09 ... @if '%DEBUG%' == '' @echo off ... ...現(xiàn)在,只是為了測試您是否已將正確的東西連接在一起,請創(chuàng)建一個批處理文件。 它只是一行,因此您可以在命令提示符下鍵入它。 但是我傾向于將其放入批處理文件中,因為稍后我傾向于在其中添加更多內(nèi)容。
文件:C:\ ProgramFiles \ gradle-1.3 \ bin \ GradleCommands.bat
gradle -v如果運行此批處理文件,您將看到Gradle宣布其版本。 如果您現(xiàn)在和我在一起,那么您的機器上可以運行香草Gradle。 恭喜你 但是,對于您的大多數(shù)實際目的而言,這還不夠。 讓我們對工具進行更多的介紹 。
我不再使用Eclipse。 STS確實做得非常好,我已經(jīng)使用了幾年了。 幸運的是,還有一個用于STS的Gradle插件 。 安裝過程有詳細(xì)記錄,在此不再贅述。 但是,安裝過程無法傳達出它并不是那么簡單。 我在兩臺不同的機器上嘗試過它,不得不經(jīng)歷了好幾次,才能使它起作用。 我的建議是不要在Eclipse / STS的工作安裝中嘗試使用它,除非您有能力將其損壞幾個小時。 制作另一個STS實例并對其進行處理。 您的毅力將通過STS中的新Gradle導(dǎo)入功能(以及其他一些功能,我們將在后面進行檢查)得到回報。
最后一件事–在繼續(xù)之前,請在STS中打開“首選項”,并將Gradle設(shè)置為C:\ ProgramFiles \ gradle-1.3文件夾。 我想確保STS只是在運行香草Gradle,而不要執(zhí)行其他任何操作。 如果需要,我可以退出STS并在命令提示符下鍵入相同的命令,并確保得到相同的結(jié)果。 我喜歡從編輯器執(zhí)行操作,但是鄙視被鎖定。完成后,您需要導(dǎo)入一個基于Java的項目(使用Gradle)。
如何創(chuàng)建基于Gradle的Java項目以導(dǎo)入STS?
這是樂趣開始的地方。 只需創(chuàng)建一個文件夾(我將其命名為gradle001)。 將一個build.gradle文件放入其中。 現(xiàn)在,這是STS導(dǎo)入它所需的全部。 build.gradle中包含了一些理論。 我現(xiàn)在不會去研究它。 讓我們看看下面的build.gradle文件。
文件:/gradle001/build.gradle
apply plugin: 'java'def localMavenRepo = 'file://D:/mavenrepo' repositories {mavenCentral()maven { url= localMavenRepo } }sourceCompatibility = 1.7 version = '1.0-SNAPSHOT' group = 'foo.bar.gradle'dependencies {testCompile 'junit:junit:4.11' }您現(xiàn)在看到有趣的部分了嗎? 盡管我沒有在文件中添加任何注釋,但是您能猜出大多數(shù)說明是什么意思嗎? 我希望你們大多數(shù)人都能。 眾所周知,我一直在使用Maven,本地存儲庫保存在D:/ mavenrepo。 使用Gradle,我可以重用該本地存儲庫,也可以使用Maven中央存儲庫。 從我的角度來看,Gradle不能與Maven友好,我喜歡Gradle盡力使開發(fā)人員的生活變得更加輕松。
現(xiàn)在,我們將啟動STS(使用Gradle)并導(dǎo)入“一個新的Gradle項目”,在此我們將導(dǎo)入剛剛創(chuàng)建的文件夾結(jié)構(gòu)。 如果一切正常,您將在STS的“項目瀏覽器”視圖中看到該項目。 我的個人經(jīng)歷對此有些粗略。 我必須嘗試幾次,然后才能使用它。 但是,一旦導(dǎo)入成功,事情就會變得更加順利。
Maven曾經(jīng)通過虛擬主類和測試類為我提供了更完整的項目。
是。 Maven曾經(jīng)為您“創(chuàng)建”一個項目,您可以從許多模板(原型)中選擇一個來創(chuàng)建您的項目結(jié)構(gòu)。 las,我找不到Gradle的類似功能(正如我在本文開頭承認(rèn)的那樣,我是該工具的新手,因此,如果我缺少某些內(nèi)容,請告訴我。請發(fā)表評論)。
實際上,沒有為您創(chuàng)建任何虛擬項目。 但是,工具(例如Gradle)的強度不是那樣。 我們已經(jīng)看到讀取build.gradle很容易。 現(xiàn)在,讓我們編寫一些偽代碼,親自了解Gradle可以為我們做什么。
文件:/gradle001/src/main/java/foo/bar/AppMain.java
package foo.bar;public class AppMain {public static void main(String[] args) {System.out.println(new AppMain().greet());}public String greet() {return 'Hello world.';} }文件:/gradle001/src/test/java/foo/bar/AppMainTest.java
package foo.bar;import static org.junit.Assert.*;import org.junit.Test;public class AppMainTest {@Testpublic void test() {assertEquals(new AppMain().greet(), 'Hello world.'); }}更新的文件:/gradle001/build.gradle
apply plugin: 'java'def localMavenRepo = 'file://D:/mavenrepo' repositories {mavenCentral()maven { url= localMavenRepo } }sourceCompatibility = 1.7 version = '1.0-SNAPSHOT' group = 'foo.bar.gradle'dependencies { testCompile 'junit:junit:4.11' }task(runSimple, dependsOn: 'build', type: JavaExec) {main = 'foo.bar.AppMain'classpath = sourceSets.main.runtimeClasspath }就這樣。 現(xiàn)在,如果我們運行build.gradle的“ runSimple”任務(wù),Gradle將為我們做很多事情。 它將進行標(biāo)準(zhǔn)的清理,編譯,測試并生成測試報告(假設(shè)您到目前為止也已在編寫代碼,請在您的計算機中查看/gradle001/build/reports/tests/index.html。驚喜),建立并最終運行主類。 大約需要18行build.gradle。 我必須說,我認(rèn)為這根本不是一件壞事。
有什么大不了的?
你是對的。 但是您錯過了重點。 即使是25,000行代碼,這18行構(gòu)建腳本也可以正常工作。 如果您仍然不滿意,建議您閱讀這篇文章,其中264行構(gòu)建腳本似乎表現(xiàn)出色。
嗯……很好,但是Maven的“力量”也沒有那么長嗎?
你可能是對的。 盡管人們似乎針對這種可能性提供了各種各樣的論據(jù)和數(shù)據(jù),但是我認(rèn)為這不是要討論的重點。
事實是Maven中的pom.xml只是一個配置文件。 在常規(guī)的一天中,常規(guī)的構(gòu)建和發(fā)布人員不會在Maven中編寫任何代碼。 當(dāng)然,Maven允許您創(chuàng)建各種插件,它們可以解決“大多數(shù)”問題。 但是,似乎(最“最”)才是爭論的焦點。 在場景/需求不屬于“大多數(shù)”場景的地方,使用Maven是一件非常困難的事情。 隨著技術(shù)生態(tài)系統(tǒng)變得越來越多樣化,人們開始反抗這種束縛。
我個人認(rèn)為這就是故事的發(fā)展方向。 批處理文件(xyz.bat)具有強大的功能,但難以管理(很難讀取)。 您必須針對不同的操作系統(tǒng)以不同的方式編寫它們。 沒有任務(wù)層次結(jié)構(gòu)。 除了最瑣碎的項目,我不知道誰愿意維護它們。
因此來到了螞蟻。 它還功能強大,并且在任務(wù)管理方面做得很好。 您具有幾乎所有目標(biāo)的目標(biāo),而沒有目標(biāo)的目標(biāo)則可以在批處理文件中編寫代碼,然后從Ant調(diào)用它。 不足之處是標(biāo)準(zhǔn)化。 人們在他們的項目中以各種可能的方式使用它,并且在大多數(shù)項目中,構(gòu)建腳本本身就是一個項目。 他們很難管理,團隊中只有幾個人確切地知道他們的工作方式,沒有人愿意修改它們。
這就是Maven獲得重大成就的地方。 它以一致的方式滿足了諸如魅力之類的“大多數(shù)”要求。 有一種固定的方法可以完成大多數(shù)事情。 因此,構(gòu)建腳本不再是一個黑洞。 而且普通的Joe用Maven腳本射擊自己的可能性較小。
有了Gradle,我們將以更大的力量調(diào)情。 期望普通的開發(fā)人員使用Gradle進行編碼,而不僅僅是配置插件(如在Maven中一樣)。 因此,普通開發(fā)人員會在自己覺得合適的情況下輕松完成工作。
恰恰是在該項目冒著創(chuàng)建可能嚴(yán)重破壞構(gòu)建腳本的風(fēng)險,周圍沒有知識庫的時候,開發(fā)人員會喜歡其中的編碼,但討厭維護它,管理人員會對構(gòu)建腳本產(chǎn)生噩夢在演示前一天失敗,將不得不忍受它。
那你到底在說什么
從我對Maven的了解(人們似乎同意我,不管他們是否喜歡Gradle),它對于標(biāo)準(zhǔn)/平均/大多數(shù)要求都做得很好。 它做得很好。 并且存在不允許您突破的界限,在這里它既可以看作是a鎖,也可以看作是安全功能。 如果您要使用標(biāo)準(zhǔn)技術(shù)堆棧創(chuàng)建另一個J2EE Web應(yīng)用程序/ Java桌面應(yīng)用程序,我會說沒有理由放棄Maven。 如果您還沒有接受它,請這樣做,您的生活會輕松得多。
但是,如果您在產(chǎn)品開發(fā)項目中,并且正在突破人們認(rèn)為java / j2ee有能力的界限(并且假設(shè)您沒有只雇用普通的Joes),那么我認(rèn)為您可能想在Gradle嘗試一下。 它確實有能力。 一起工作很有趣。 我認(rèn)為Gradle的前進道路確實是光明的,充滿了可能性。 花時間在上面是一件好事。
今天就這些。
如果您希望到目前為止閱讀過,希望您喜歡或至少喜歡它。 我的文章僅基于我對Gradle的修改,而不是通過任何想象力得出的關(guān)于該主題的硬道理。 如果您發(fā)現(xiàn)本文中有任何錯誤或正確之處,請在下面發(fā)表評論。 我將非常有義務(wù)。
參考: Gradle –來自Tech for Enterprise博客的JCG合作伙伴 Partho的Maven觀點 。
翻譯自: https://www.javacodegeeks.com/2013/01/gradle-a-maven-perspective.html
gradle maven
總結(jié)
以上是生活随笔為你收集整理的gradle maven_Gradle – Maven的观点的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Win11怎么安装IrDA红外线功能(W
- 下一篇: win10 Samsung NVMe固态