海詩網(wǎng) 知識百科 gradle和maven的區(qū)別(gradle是什么)

gradle和maven的區(qū)別(gradle是什么)

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的配置命令。

gradle是什么

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)。

gradle是什么

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ú)特配置。

gradle是什么

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)注。

本文來自網(wǎng)絡(luò),不代表海詩網(wǎng)立場,轉(zhuǎn)載請注明出處:http://x91880.com/n/168928.html
      

split在python中什么意思(split在python中的意思是)

發(fā)表回復(fù)
聯(lián)系我們
聯(lián)系我們

在線咨詢: QQ交談

郵箱: 3587015498@qq.com

工作時(shí)間:周一至周五,9:00-17:30,節(jié)假日休息

關(guān)注微信
微信掃一掃關(guān)注我們
微信掃一掃關(guān)注我們
關(guān)注微博
返回頂部