gradle和maven的區(qū)別, gradle和maven有什么區(qū)別?不知道小伙伴們今天來看看邊肖的分享吧!
1.基本配置信息的差異:
Maven使用。pom文件,基于XML,gradle使用。gradle文件,基于Groovy,gradle去掉了maven中需要修復(fù)的groupId、artfactId、package等基本參數(shù)。
用Apply plugin: java、apply plugin: war來表示打包方式,還提供了一些sourceCompatibility、version等實(shí)用標(biāo)簽。
2、依賴管理的區(qū)別:
Gradle的jar包管理既支持maven下的Repository模式,也支持Ant的Ivy模式。因?yàn)閙aven的Repository已經(jīng)很成熟了,所以Gradle兼容Repository非常方便。
Define the expert's repository:
mavenLocal() :maven本地庫
mavenCentral() : maven遠(yuǎn)程庫
MavenRepo urls:自定義庫路徑
Maven通過groupId、name和version在已配置的存儲庫中的指定依賴項(xiàng)中查找Jar包。Gradle的生命周期比較復(fù)雜,但是也支持Maven依賴中的build生命周期。
Compile、runtime、testCompile和testRuntime分別對應(yīng)項(xiàng)目不同階段的依賴關(guān)系。它還簡化了maven的配置命令。
Maven:
dependency
groupIdjunit/groupId
artifactIdjunit/artifactId
version4.7/version
scopetest/scope
/dependency
Gradle:
dependencies { testCompile group:junit, name: junit, version 4.11}
或者
dependencies { testCompile junit:junit:4.11 }
如果需要引用lib目錄中的jar包,maven需要用scope和systemPath標(biāo)記每個(gè)依賴項(xiàng),或者在插件中單獨(dú)添加編譯路徑。格雷爾只需要加上
Compile fileTree (directory: libs, including: *. Can), in multiple paths:
jarTree=fileTree(dir: libs, include: *.jar)
rootTree=new File(rootProject.rootDir, libs).getAbsolutePath()
jarTree +=fileTree(dir: rootTree, include: *.jar)
compile jarTree
在依賴相關(guān)的命令行方面,gradle與maven相似,maven常用的分析依賴命令包括:
Mvn correlation: analyze and view dependencies;
Mvn依賴關(guān)系:查看項(xiàng)目的直接和傳遞依賴關(guān)系的樹;
Mvn Help: Effective -pom View Effective pom
使用gradle中的gradle dependencies查看項(xiàng)目中的包的依賴關(guān)系。添加-配置以查看指定階段的依賴關(guān)系。
您還可以使用-dependency來查看指定jar的依賴項(xiàng)。
3、多項(xiàng)目管理的差異:
在實(shí)踐中,經(jīng)常需要管理一個(gè)以上的項(xiàng)目。maven使用了依賴、繼承和組合的概念,在父模塊中指定了自己的子模塊,并準(zhǔn)備了一些每個(gè)子模塊共有的資源,比如插件、配置信息等等。
通過將打包的模塊與實(shí)現(xiàn)特定功能的模塊分開來管理多個(gè)項(xiàng)目。Gradle在這方面已經(jīng)講得越來越清楚了,也很容易學(xué)會gradle的多項(xiàng)目管理。在eclipse中安裝Gradle插件后,
創(chuàng)建一個(gè)新的Gradle項(xiàng)目并選擇flat-java-multiproject。生成的項(xiàng)目是多項(xiàng)目管理的一個(gè)例子。
Gradle通過settings.gradle文件指定項(xiàng)目的子項(xiàng)目。在構(gòu)造的初始化階段,
Gradle將根據(jù)settings.gradle文件判斷構(gòu)造中包含哪些子項(xiàng)目,并為每個(gè)子項(xiàng)目初始化一個(gè)project對象。
在構(gòu)建腳本中,通過Project ('sub-project-name ')引用子項(xiàng)目對應(yīng)的項(xiàng)目對象。多項(xiàng)目配置很多,我就簡單描述一下常見的配置共享和配置獨(dú)占。
AllProjects屬性返回project對象及其所有子項(xiàng)目。
subProjects屬性返回該項(xiàng)目的所有子項(xiàng)目。
項(xiàng)目('子項(xiàng)目名稱')來設(shè)置相應(yīng)子項(xiàng)目的配置。
Configure (subprojects.findall {it.name.contains (XXX)}) to find the subprojects that meet the requirements.
在子項(xiàng)目的build.gradle文件中添加您自己的獨(dú)特配置。
4、任務(wù)機(jī)制差異:
與ant相比,Maven只通過插件提供任務(wù)機(jī)制,自由度相對較小,難以擴(kuò)展。每個(gè)函數(shù)都需要通過編寫插件來定義,Ant使用tagret標(biāo)簽echo來指定命令。
Gradle使用groovy語言,有自己的task概念,更接近ant使用的build文件。任務(wù)代表一個(gè)邏輯執(zhí)行單元。
Gradle寫任務(wù)的方法有很多,相關(guān)的例子在網(wǎng)上也很容易搜到。這里,簡要描述了一些關(guān)于該任務(wù)的實(shí)用命令和一個(gè)常用任務(wù):
Task listJars(description: Display compile jars.) {
configurations.compile.each { File file - println file.name }
gradle和maven的區(qū)別,以上就是本文為您收集整理的gradle和maven的區(qū)別最新內(nèi)容,希望能幫到您!更多相關(guān)內(nèi)容歡迎關(guān)注。