maven打包和普通打包的區(qū)別 gradle比maven好為什么用的人少?
gradle比maven好為什么用的人少?我們公司已經(jīng)在多個(gè)項(xiàng)目中使用了gradle,但是大多數(shù)項(xiàng)目仍然使用maven,估計(jì)將來會(huì)使用maven。為什么?這是因?yàn)楦窭聽柕臍⑹郑簞”臼侨绱藦?qiáng)大。早期的
gradle比maven好為什么用的人少?
我們公司已經(jīng)在多個(gè)項(xiàng)目中使用了gradle,但是大多數(shù)項(xiàng)目仍然使用maven,估計(jì)將來會(huì)使用maven。為什么?這是因?yàn)楦窭聽柕臍⑹郑簞”臼侨绱藦?qiáng)大。
早期的構(gòu)建是腳本化的,使用SH或bat將編譯、打包、部署和其他過程結(jié)合起來。后來,它演變成了用XML描述的ant工具,但它仍然可以編寫許多自定義任務(wù),調(diào)用本地命令進(jìn)行打包,并可以組合各種任務(wù),類似于bat。他們的共同特點(diǎn)是:靈活!您可以指定自己的依賴路徑來個(gè)性化打包過程。直到后來,Maven出現(xiàn)了,不同的項(xiàng)目只能通過不同的ArchType來構(gòu)建。每個(gè)項(xiàng)目類型的項(xiàng)目目錄都是固定的。如果沒有問題,一個(gè)package命令就可以了。沒有個(gè)性化的配置(除了mojo),約定勝于配置是它的理念!你只要明白pom.xml文件基本配置就足夠了。
Gradle結(jié)合了maven的優(yōu)點(diǎn),同時(shí)保留了腳本調(diào)用的特性。它往往給人們太多的選擇和機(jī)會(huì),但它會(huì)使項(xiàng)目(尤其是大型項(xiàng)目)的建設(shè)和配置復(fù)雜化。因此,新手很難掌握它的DSL語法,這是一個(gè)簡(jiǎn)化的groovy調(diào)用。有時(shí)他們不了解groovy語言及其語法,因此很難理解和編寫好的構(gòu)造腳本,而且學(xué)習(xí)成本很高。
maven中關(guān)于dependencie和dependencyManagement的區(qū)別?
Maven使用dependency management元素提供管理依賴項(xiàng)版本號(hào)的方法。依賴關(guān)系管理元素通常位于組織或項(xiàng)目的頂層父POM中。使用pom.xml文件中的依賴項(xiàng)管理元素允許所有子項(xiàng)目引用依賴項(xiàng),而無需顯式列出版本號(hào)。Maven沿著父子層次結(jié)構(gòu)向上移動(dòng),直到找到一個(gè)具有依賴關(guān)系管理元素的項(xiàng)目,然后使用依賴關(guān)系管理元素中指定的版本號(hào)。依賴關(guān)系管理只聲明依賴關(guān)系,但不實(shí)現(xiàn)導(dǎo)入。因此,子項(xiàng)目需要顯式聲明它們需要使用的依賴項(xiàng)。依賴關(guān)系相對(duì)于依賴關(guān)系管理,在依賴關(guān)系中聲明的所有依賴關(guān)系在默認(rèn)情況下由所有子項(xiàng)目自動(dòng)引入和繼承。
maven中插件plugin和依賴dependency的區(qū)別?
插件是一種工具。例如,compile插件是編譯代碼的工具,mybatis插件是自動(dòng)生成數(shù)據(jù)庫Dao和映射器的工具。依賴性是項(xiàng)目在編譯過程中需要依賴的兩方和三方包。在您的項(xiàng)目中,您不需要mybatis插件來自己實(shí)現(xiàn)SQL的crud,但是如果您的項(xiàng)目中需要三個(gè)房間的包,則必須使用dependency來引入它。