成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

我們一起走進(jìn)Maven——知己知彼

開(kāi)發(fā) 架構(gòu)
乍一看,Maven看起來(lái)有很多東西,但簡(jiǎn)而言之,Maven試圖將模式應(yīng)用于項(xiàng)目的構(gòu)建基礎(chǔ)架構(gòu),以便通過(guò)提供使用最佳實(shí)踐的明確路徑來(lái)提高理解力和生產(chǎn)力。

 [[317524]]

1. 什么是Maven?

乍一看,Maven看起來(lái)有很多東西,但簡(jiǎn)而言之,Maven試圖將模式應(yīng)用于項(xiàng)目的構(gòu)建基礎(chǔ)架構(gòu),以便通過(guò)提供使用最佳實(shí)踐的明確路徑來(lái)提高理解力和生產(chǎn)力。Maven本質(zhì)上是一個(gè)項(xiàng)目管理和理解工具,因此提供了一種幫助管理的方法:

  • 構(gòu)建
  • 文檔
  • 報(bào)告
  • 依賴
  • 供應(yīng)鏈管理系統(tǒng)
  • 發(fā)布
  • 分配

2.Maven的哲學(xué)

Maven通常被許多人認(rèn)為是構(gòu)建工具。很多來(lái)到Maven的人最初都熟悉Ant,所以它是一個(gè)自然的聯(lián)想,但Maven不僅僅是一個(gè)構(gòu)建工具,而不僅僅是Ant的替代品。Maven與Ant完全不同。Ant只是一個(gè)工具箱,而Maven則是關(guān)于模式的應(yīng)用,以實(shí)現(xiàn)顯示可見(jiàn)性,可重用性,可維護(hù)性和可理解性的基礎(chǔ)結(jié)構(gòu)。

如果沒(méi)有這些特征,多個(gè)人將很有可能在項(xiàng)目上一起高效地工作。沒(méi)有可見(jiàn)性,個(gè)人不太可能知道另一個(gè)人已經(jīng)完成了什么,因此很有可能有用的代碼不會(huì)被重用。如果不重用代碼,則很難創(chuàng)建可維護(hù)的系統(tǒng)。當(dāng)每個(gè)人都在不斷努力尋找構(gòu)成項(xiàng)目的所有這些不同點(diǎn)點(diǎn)的地方時(shí),任何人都很難理解整個(gè)項(xiàng)目。因此,您最終會(huì)遇到孤島效應(yīng),共享知識(shí)的衰退以及團(tuán)隊(duì)成員之間相應(yīng)程度的挫折感。當(dāng)流程對(duì)每個(gè)人都不以相同的方式工作時(shí),這是一種自然的影響。

Maven誕生于非常實(shí)際的愿望,即以相同的方式在Apache工作。因此,開(kāi)發(fā)人員可以在這些項(xiàng)目之間自由移動(dòng),通過(guò)了解其中一個(gè)項(xiàng)目的工作方式,清楚地了解它們的工作原理。

如果開(kāi)發(fā)人員花時(shí)間了解一個(gè)項(xiàng)目是如何構(gòu)建它的,那么當(dāng)他們轉(zhuǎn)移到下一個(gè)項(xiàng)目時(shí),他們就不必再次經(jīng)歷這個(gè)過(guò)程。同樣的想法擴(kuò)展到測(cè)試,生成文檔,生成指標(biāo)和報(bào)告,測(cè)試和部署。所有項(xiàng)目都具有足夠的相同特征,了解Maven試圖利用其一般的項(xiàng)目管理方法。在很高的層面上,所有項(xiàng)目都需要構(gòu)建,測(cè)試,打包,記錄和部署。當(dāng)然,上述每個(gè)步驟都有無(wú)限的變化,但是這種變化仍然發(fā)生在明確定義的路徑的范圍內(nèi),而Maven試圖以明確的方式向每個(gè)人呈現(xiàn)這條路徑。明確路徑的最簡(jiǎn)單方法是為人們提供一組模式,這些模式可以由項(xiàng)目中的任何人共享。

拉爾夫·約翰遜和唐·羅伯茨在“進(jìn)化框架模式”中最喜歡的一句話:

人們通過(guò)從具體例子中概括出來(lái)來(lái)發(fā)展抽象。在沒(méi)有實(shí)際開(kāi)發(fā)運(yùn)行系統(tǒng)的情況下,每次嘗試在紙上確定正確的抽象都是注定要失敗的。沒(méi)有人那么聰明。框架是一種可重用的設(shè)計(jì),因此您可以通過(guò)查看它應(yīng)該是設(shè)計(jì)的東西來(lái)開(kāi)發(fā)它。您看到的示例越多,您的框架就越通用。

我真的不知道最終的結(jié)果是什么樣的,我只知道必須有更好的方法。但首先我知道我想:

  • 項(xiàng)目的模型,以便您可以在一個(gè)地方查找與項(xiàng)目相關(guān)的所有內(nèi)容
  • 一個(gè)標(biāo)準(zhǔn)的目錄結(jié)構(gòu),所以你不必去尋找圖書(shū)館,資源和文檔

3、舉例理解

其實(shí)上面的都是官方語(yǔ)言,對(duì)我這種理解能力不強(qiáng)的人其實(shí)舉例子更合適:

假如你正在Eclipse下開(kāi)發(fā)兩個(gè)Java項(xiàng)目,姑且把它們稱為A、B,其中A項(xiàng)目中的一些功能依賴于B項(xiàng)目中的某些類,那么如何維系這種依賴關(guān)系的呢?

很簡(jiǎn)單,這不就是跟我們之前寫(xiě)程序時(shí)一樣嗎,需要用哪個(gè)項(xiàng)目中的哪些類,也就是用別人寫(xiě)好了的功能代碼,導(dǎo)入jar包即可。所以這里也如此,可以將B項(xiàng)目打成jar包,然后在A項(xiàng)目的Library下導(dǎo)入B的jar文件,這樣,A項(xiàng)目就可以調(diào)用B項(xiàng)目中的某些類了。

這樣做有幾種缺陷,如果在開(kāi)發(fā)過(guò)程中,發(fā)現(xiàn)B中的bug,則必須將B項(xiàng)目修改好,并重新將B打包并對(duì)A項(xiàng)目進(jìn)行重編譯操作,在完成A項(xiàng)目的開(kāi)發(fā)后,為了保證A的正常運(yùn)行,就需要依賴B(就像在使用某個(gè)jar包時(shí)必須依賴另外一個(gè)jar一樣),兩種解決方案,第一種,選擇將B打包入A中,第二種,將B也發(fā)布出去,等別人需要用A時(shí),告訴開(kāi)發(fā)者,想要用A就必須在導(dǎo)入Bjar包。兩個(gè)都很麻煩,前者可能造成資源的浪費(fèi)(比如,開(kāi)發(fā)者可能正在開(kāi)發(fā)依賴B的其它項(xiàng)目,B已經(jīng)存儲(chǔ)到本地了,在導(dǎo)入A的jar包的話,就有了兩個(gè)B的jar),后者是我們常遇到的,找各種jar包,非常麻煩(有了maven就不一樣了)

我們開(kāi)發(fā)一個(gè)項(xiàng)目,或者做一個(gè)小demo,比如用SSH框架,那么我們就必須將SSH框架所用的幾十個(gè)依賴的jar包依次找出來(lái)并手動(dòng)導(dǎo)入,超級(jí)繁瑣。

上面兩個(gè)問(wèn)題的描述,其實(shí)都屬于項(xiàng)目與項(xiàng)目之間依賴的問(wèn)題[A項(xiàng)目使用SSH的所有jar,就說(shuō)A項(xiàng)目依賴SSH],人為手動(dòng)的去解決,很繁瑣,也不方便,所以使用maven來(lái)幫我們管理

Maven的核心功能便是合理敘述項(xiàng)目間的依賴關(guān)系,通俗點(diǎn)講,就是通過(guò)pom.xml文件的配置獲取jar包,而不用手動(dòng)去添加jar包,而這里pom.xml文件對(duì)于學(xué)了一點(diǎn)maven的人來(lái)說(shuō),就有些熟悉了,怎么通過(guò)pom.xml的配置就可以獲取到j(luò)ar包呢?pom.xml配置文件從何而來(lái)?等等類似問(wèn)題我們需要搞清楚,如果需要使用pom.xml來(lái)獲取jar包,那么首先該項(xiàng)目就必須為maven項(xiàng)目,maven項(xiàng)目可以這樣去想,就是在java項(xiàng)目和web項(xiàng)目的上面包裹了一層maven,本質(zhì)上java項(xiàng)目還是java項(xiàng)目,web項(xiàng)目還是web項(xiàng)目,但是包裹了maven之后,就可以使用maven提供的一些功能了(通過(guò)pom.xml添加jar包)。

所以,根據(jù)上一段的描述,我們最終的目的就是學(xué)會(huì)如何在pom.xml中配置獲取到我們想要的jar包,在此之前我們就必須了解如何創(chuàng)建maven項(xiàng)目,maven項(xiàng)目的結(jié)構(gòu)是怎樣,與普通java,web項(xiàng)目的區(qū)別在哪里,還有如何配置pom.xml獲取到對(duì)應(yīng)的jar包等等

pom.xml獲取junit的jar包的編寫(xiě)

 

 

 

 

為什么通過(guò)groupId、artifactId、version三個(gè)屬性就能定位一個(gè)jar包?

加入上面的pom.xml文件屬于A項(xiàng)目,那么A項(xiàng)目肯定是一個(gè)maven項(xiàng)目,通過(guò)上面這三個(gè)屬性能夠找到j(luò)unit對(duì)應(yīng)版本的jar包,那么junit項(xiàng)目肯定也是一個(gè)maven項(xiàng)目,junit的maven項(xiàng)目中的pom.xml文件就會(huì)有三個(gè)標(biāo)識(shí)符,比如像下圖這樣,然后別的maven項(xiàng)目就能通過(guò)這三個(gè)屬性來(lái)找到j(luò)unit項(xiàng)目的jar包了。所以,在每個(gè)創(chuàng)建的maven項(xiàng)目時(shí)都會(huì)要求寫(xiě)上這三個(gè)屬性值的。

 

 

 

 

看完上面這些再看看我繪制的圖,估計(jì)能理解個(gè)八九不離十:

 

責(zé)任編輯:武曉燕 來(lái)源: 泰斗賢若如
相關(guān)推薦

2022-10-18 07:33:57

Maven構(gòu)建工具

2021-07-26 14:45:45

人工智能臺(tái)風(fēng)氣候

2011-03-23 10:36:55

2011-04-20 10:02:00

2011-10-18 09:50:03

2009-04-22 10:03:58

2010-03-19 15:04:12

2014-10-27 09:05:22

2011-06-02 11:01:32

2015-06-08 22:39:37

云鴿

2012-07-20 09:40:38

2015-06-02 17:32:36

2021-04-30 18:21:44

云計(jì)算云計(jì)算產(chǎn)業(yè)云應(yīng)用

2015-09-24 14:40:33

2010-09-10 13:02:11

2024-02-28 08:41:51

Maven沖突版本

2014-04-30 12:40:52

安全工具掃描網(wǎng)絡(luò)發(fā)現(xiàn)工具

2022-03-31 18:59:43

數(shù)據(jù)庫(kù)InnoDBMySQL

2023-08-10 08:28:46

網(wǎng)絡(luò)編程通信
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: 亚洲国产成人在线 | 亚洲国产成人精品在线 | 久久tv在线观看 | 91在线资源 | 一二区视频 | 成人免费在线播放 | 亚洲人人舔人人 | 成人一区二区三区视频 | 在线久草 | 国产成人精品一区二区 | 国产香蕉视频在线播放 | 亚洲国产精选 | 日本黄色片免费在线观看 | 99久久99久久精品国产片果冰 | 中文字幕av一区 | 精品日韩在线 | 91成人精品| 国产精品美女久久久 | 亚洲国产精品视频 | 男女精品久久 | 国产黄色免费网站 | 综合欧美亚洲 | 超碰97免费 | 一区二区日韩 | 91五月婷蜜桃综合 | 亚洲一区 中文字幕 | 久久久女| 久久亚洲一区二区三区四区 | 久久精品一区 | 亚洲精品播放 | 五月婷婷激情网 | 精品中文在线 | 午夜视频在线播放 | 日本一区二区三区四区 | 超碰在线97国产 | 欧美久久久久久 | 日本中文在线 | 国产日韩免费观看 | 欧美日韩国产一区二区 | 欧美成人a∨高清免费观看 老司机午夜性大片 | 九九热在线免费视频 |