1. 程式人生 > >轉:svn和git的區別,maven是什麼

轉:svn和git的區別,maven是什麼

鑑於本吧多新人,新人又需要多交流才能進步,今天就給新人們講講git和maven的必要性,因為,他們的重要性,遠遠超過很多沒用過的人的想象。


很多人應該用過svn cvs之類的程式碼版本管理工具,git也是其中之一。
svn和git最大的幾個區別要點,svn必須要有服務端,網路能連上服務端才能提交和更新,git不需要,每一臺裝了git的電腦都是服務端,各臺電腦之間可以相互同步和推送,而提交不需要網路就可以提交到本地的git庫裡。
對於吧友們來說,這樣的好處就是,如果要分享程式碼,不需要打個壓縮包傳來傳去,也不需要找個伺服器搭個svn來共享,現在oschina,csdn等網站都提供了免費的git伺服器,大家註冊個帳號,提交下去,把地址發給別人就可以了,而免費的svn伺服器,幾乎是不存在的。
而且svn因為服務端是單一的,一旦伺服器壞了,整個版本庫的歷史記錄就沒有了,也沒法再回滾,git每臺電腦都是服務端,只要兩臺電腦做過同步,任何一臺壞了,另一臺還保有著所有的歷史記錄,仍然可以提交更新回滾,不怕程式碼歷史丟失。
此外,git還有許多強大之處,比如git的分支就比svn的強太多,這些就留給大家摸索吧。


再說說maven,我們每做一個專案,都要往lib目錄扔很多jar包,spring的啊hibernate的啊apache的啊等等,這樣就會導致很多包不知從哪個角落下載回來的,名稱千奇百怪,版本也不明,專案多了以後還得自己複製來複制去,容易有多種不同版本的包混雜。maven最基本最重要的功能就是管理這些專案間的依賴關係,用一個xml來維護。如果你的工程要用spring,你就在maven的pom.xml裡配一下spring的專案名稱和版本號,要用其他的也一樣。
得益於maven已經成為java世界的主流工具,絕大部分知名的專案都在maven中央倉庫有標準名稱,有各種不同的版本存在,你只要配下名稱,配下版本號,maven就會自動從網上為你下載jar包並讓你的工程依賴上,你的本地硬碟的倉庫目錄能看到井井有條的你用過的所有第三方專案的jar包和原始碼,再也不用去下載那些來路不明的jar包再扔到工程裡了,也不用擔心寫同一個專案的兩個人一個用了3.0版的spring,一個用了2.5版的spring,以至搞出莫名其妙的問題。


有了maven,我們不再需要往git或svn提交jar包,專案庫的體積大大減小,下載專案變得快多了。而且只要提交一個pom.xml檔案和你的程式碼,其他人自然也能下載到和你本地一模一樣的第三方jar包,下過一次某個jar包以後,其他專案再用同一個jar包時,maven自然會使用本地倉庫資料夾裡存在的jar包,不需要再次下載,也不會出現很多個拷貝。
另一個好處是maven的pom.xml任何一個主流ide工具都認識,都可以匯入專案,你不用再操心你提交的.project和.settings檔案因為別人的eclipse版本和你不同而導不進去,也不用再擔心有人用的是別的ide認不得你的eclipse專案元檔案,你不需要提交這些和開發工具有關的檔案到伺服器上了。


如果我們身處異地,要共同開發或者分享點什麼專案,毋庸置疑,maven和git必然是極大提升效率的兩大基礎利器,希望大家能早日投入精力學會這兩個工具,掃除技術溝通的阻礙,不要再停留在史前時代了。