Maven是一個(gè)項(xiàng)目管理工具,它包含了一個(gè)項(xiàng)目對(duì)象模型(POM:Project Object Model),一組標(biāo)準(zhǔn)集合,一個(gè)項(xiàng)目生命周期(Project LifeCycle),一個(gè)依賴管理系統(tǒng)(Dependency managerment System),和用來(lái)運(yùn)行定義在生命周期(phase)中插件(plugin)目標(biāo)(goal)的邏輯。
①首先,maven是一個(gè)優(yōu)秀的項(xiàng)目構(gòu)建工具。使用maven,可以很方便的對(duì)項(xiàng)目進(jìn)行分模塊構(gòu)建,這樣在開(kāi)發(fā)和測(cè)試打包部署時(shí),效率會(huì)提高很多。
②其次,maven可以進(jìn)行依賴的管理。使用maven,可以將不同系統(tǒng)的依賴進(jìn)行統(tǒng)一管理,并且可以進(jìn)行依賴之間的傳遞和繼承。
1)install 本地安裝, 包含編譯,打包,安裝到本地倉(cāng)庫(kù)
2)clean 清除已編譯信息,刪除工程中的target目錄。
3)compile 只編譯。javac命令
4)deploy 部署。常見(jiàn)于結(jié)合私服使用的命令,相當(dāng)于是install+上傳jar到私服。
5)package 打包。包含編譯,打包兩個(gè)功能。
在Maven中有三套相互獨(dú)立的生命周期,請(qǐng)注意這里說(shuō)的是“三套”,而且“相互獨(dú)立”,這三套生命周期分別是:
(1)Clean清理項(xiàng)目: 在進(jìn)行真正的構(gòu)建之前進(jìn)行一些清理工作。 mvn clean
(2)Default構(gòu)建項(xiàng)目: 構(gòu)建的核心部分,編譯,測(cè)試,打包,部署等等。 mvn compile test package install deploy
(3)Site生成項(xiàng)目站點(diǎn): 生成項(xiàng)目報(bào)告,站點(diǎn),發(fā)布站點(diǎn)。
Maven倉(cāng)庫(kù)是基于簡(jiǎn)單文件系統(tǒng)存儲(chǔ)的,集中化管理Java API資源(構(gòu)件)的一個(gè)服務(wù)。倉(cāng)庫(kù)中的任何一個(gè)構(gòu)件都有其唯一的坐標(biāo),根據(jù)這個(gè)坐標(biāo)可以定義其在倉(cāng)庫(kù)中的唯一存儲(chǔ)路徑。得益于 Maven 的坐標(biāo)機(jī)制,任何 Maven項(xiàng)目使用任何一個(gè)構(gòu)件的方式都是完全相同的,Maven 可以在某個(gè)位置統(tǒng)一存儲(chǔ)所有的 Maven 項(xiàng)目共享的構(gòu)件,這個(gè)統(tǒng)一的位置就是倉(cāng)庫(kù),項(xiàng)目構(gòu)建完畢后生成的構(gòu)件也可以安裝或者部署到倉(cāng)庫(kù)中,供其它項(xiàng)目使用。
對(duì)于Maven來(lái)說(shuō),倉(cāng)庫(kù)分為兩類:本地倉(cāng)庫(kù)和遠(yuǎn)程倉(cāng)庫(kù)。
1)POM工程
POM工程是邏輯工程。用在父級(jí)工程或聚合工程中。用來(lái)做jar包的版本控制。
2)JAR工程
將會(huì)打包成jar用作jar包使用。即常見(jiàn)的本地工程 - Java Project。
3)WAR工程
將會(huì)打包成war,發(fā)布在服務(wù)器上的工程。如網(wǎng)站或服務(wù)。即常見(jiàn)的網(wǎng)絡(luò)工程 - Dynamic Web Project。war工程默認(rèn)沒(méi)有WEB-INF目錄及web.xml配置文件,IDE通常會(huì)顯示工程錯(cuò)誤,提供完整工程結(jié)構(gòu)可以解決。
使用<dependency>的<exclusion>元素將會(huì)引起沖突的元素排除。
● 可能由于網(wǎng)絡(luò)波動(dòng),每有下載完成,又緩存了,這個(gè)時(shí)候下載多少次都會(huì)失敗,解決辦法就是去本地倉(cāng)庫(kù)將對(duì)應(yīng)的依賴全部刪除再重新下載
● 由于依賴傳遞帶來(lái)的版本沖突問(wèn)題,解決辦法就是排除依賴。
Git 是一個(gè)開(kāi)源的分布式版本控制系統(tǒng),是目前世界上最先進(jìn)、最流行的版本控制系統(tǒng)。可以快速高效地處理從很小到非常大的項(xiàng)目版本管理。特點(diǎn):項(xiàng)目越大越復(fù)雜,協(xié)同開(kāi)發(fā)者越多,越能體現(xiàn)出 Git 的高性能和高可用性。
git add 添加文件到暫存區(qū)
git commit 提交文件到本地倉(cāng)庫(kù)
git pull 從遠(yuǎn)程倉(cāng)庫(kù)拉取項(xiàng)目到本地
git push 將本地倉(cāng)庫(kù)的新的改變推送到遠(yuǎn)程倉(cāng)庫(kù)
git clone 將遠(yuǎn)程倉(cāng)庫(kù)復(fù)制到本地
git fetch 抓取
git merge 合并
git clone:是在本地沒(méi)有版本庫(kù)的情況下,從遠(yuǎn)程倉(cāng)庫(kù)克隆一份到本地,是一個(gè)本地版本庫(kù)從無(wú)到有的過(guò)程
git pull:是在本地倉(cāng)庫(kù)已經(jīng)存在的情況下,將遠(yuǎn)程最新的commits抓取并合并到本地版本庫(kù)的過(guò)程
git fetch: 從遠(yuǎn)程版本庫(kù)抓取最新的commits,不會(huì)進(jìn)行合并
git merge:合并
所以git pull = git fetch + git merge
push之前一定要進(jìn)行本地更新操作。使用git pull命令或者使用git fetch和git merge的命令組合。這時(shí)候,可能會(huì)出現(xiàn)版本沖突,如果出現(xiàn)的話,需要解決完沖突再進(jìn)行代碼push。
開(kāi)發(fā)過(guò)程中,我們都有自己的特性分支,所以沖突發(fā)生的并不多,但也碰到過(guò)。諸如公共類的公共方法,我和別人同時(shí)修改同一個(gè)文件,他提交后我再提交就會(huì)報(bào)沖突的錯(cuò)誤。發(fā)生沖突,在IDE里面一般都是對(duì)比本地文件和遠(yuǎn)程分支的文件,然后把遠(yuǎn)程分支上文件的內(nèi)容手工修改到本地文件,然后再提交沖突的文件使其保證與遠(yuǎn)程分支的文件一致,這樣才會(huì)消除沖突,然后再提交自己修改的部分。
特別要注意下,修改本地沖突文件使其與遠(yuǎn)程倉(cāng)庫(kù)的文件保持一致后,需要提交后才能消除沖突,否則無(wú)法繼續(xù)提交。必要時(shí)可與同事交流,消除沖突。
創(chuàng)建一個(gè)bug分支,然后進(jìn)行bug處理,處理完畢后,合并到review分支,組長(zhǎng)review成功后才能夠合并到master,合并完成之后刪除bug分支,回到dev分支繼續(xù)開(kāi)發(fā)。
在公司開(kāi)發(fā)忘記提交到github托管,在家里又繼續(xù)開(kāi)發(fā)新的功能,然后到公司昨天的代碼跟你的新功能合并的時(shí)候可以用git fecth ---> git rebase,那么他的提交記錄就不會(huì)出現(xiàn)分叉,保持了提交記錄的整潔.
用的是github,因?yàn)楣颈容^小,所以沒(méi)有自己搭建gitlab,
但是用github的時(shí)候代碼一定要用保密的,9$(美元)建立一個(gè)倉(cāng)庫(kù)。
1)解決沖突文件時(shí),會(huì)先執(zhí)行g(shù)it stash,然后解決沖突;
2)遇到緊急開(kāi)發(fā)任務(wù)但目前任務(wù)不能提交時(shí),會(huì)先執(zhí)行g(shù)it stash,然后進(jìn)行緊急任務(wù)的開(kāi)發(fā),然后通過(guò)git stash pop取出棧區(qū)的內(nèi)容繼續(xù)開(kāi)發(fā);
3)切換分支時(shí),當(dāng)前工作空間內(nèi)容不能提交時(shí),會(huì)先執(zhí)行g(shù)it stash再進(jìn)行分支切換;
查看分支的提交歷史記錄:
命令git log –number:表示查看當(dāng)前分支前number個(gè)詳細(xì)的提交歷史記錄;
命令git log –number –pretty=oneline:在上個(gè)命令的基礎(chǔ)上進(jìn)行簡(jiǎn)化,只顯示sha-1碼和提交信息;
命令git reflog –number: 表示查看所有分支前number個(gè)簡(jiǎn)化的提交歷史記錄;
命令git reflog –number –pretty=oneline:顯示簡(jiǎn)化的信息歷史信息;
相同點(diǎn):git和svn都是版本控制系統(tǒng),兩者都有自己的服務(wù)器。
區(qū)別:
1.git是分布式,svn不是分布式。
2.git把內(nèi)容按元數(shù)據(jù)方式存儲(chǔ),而svn按文件。
3.git分支和svn分支不同。
4.git沒(méi)有一個(gè)全局版本號(hào),svn有。
5.git版本號(hào)要優(yōu)于svn
解決沖突有三種選擇:
A.放棄自己的更新,使用svn revert(回滾),然后提交。在這種方式下不需要使用svn resolved(解決)
B.放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標(biāo)文件,執(zhí)行resolved filename并提交(選擇文件—右鍵—解決)。
C.手動(dòng)解決:沖突發(fā)生時(shí),通過(guò)和其他用戶溝通之后,手動(dòng)更新目標(biāo)文件。然后執(zhí)行resolved filename來(lái)解除沖突,最后提交。
快捷鍵 | 功能 |
---|---|
Ctrl + Y | 刪除當(dāng)前行 |
Ctrl + D(Duplicate復(fù)制) | 直接在下一行復(fù)制出當(dāng)前行 |
Ctrl + W | 選中文本,連續(xù)按可以擴(kuò)大選中范圍(以單詞為單位) |
Ctrl + Enter | 在當(dāng)前行上面插入一行空行。注意:需要在行首使用該快捷鍵 |
Ctrl + Backspace | 可以一下字刪除整個(gè)單詞 |
Ctrl + " + / -" | 將當(dāng)前方法塊代碼展開(kāi) / 折疊 |
Ctrl + / | 添加注釋和取消注釋,【第一次是添加注釋,第二次是取消注釋】 |
Ctrl + shift + / | 添加/取消多行注釋,【第一次是添加注釋,第二次是取消注釋】 |
Ctrl + F(Find 查找) | 在當(dāng)前文件中查找文本 |
Ctrl + R(Replace 替換) | 查找并替換文本,支持多行查找,或者只在代碼中查找,或者只在注釋中查找,或者使用正則表達(dá)式查找 |
Ctrl + O | 快速重寫基類或者接口中的方法 |
Ctrl + 空格 | 提示代碼,在輸入代碼時(shí)可以提示關(guān)鍵字 |
Ctrl + J | 提示代碼,在輸入代碼時(shí)可以提示快捷鍵 |
Ctrl + H(Hierarhcy層級(jí)) | 顯示類結(jié)構(gòu)圖(類的繼承層次) |
Ctrl + G | 快速定位到指定行指定列 |
Ctrl + [ | 快速定位到代碼塊開(kāi)始位置 |
Ctrl + ] | 快速定位到代碼塊結(jié)束位置 |
Ctrl + N | 快速搜索和打開(kāi)類 |
Ctrl + B | 快速定位源碼,將光標(biāo)放在方法上輸入Ctrl + B , 可以去到該方法的源碼 |
Ctrl + U | 快速轉(zhuǎn)到當(dāng)前類的父類 |
快捷鍵 | 功能 |
---|---|
Alt + / | 快速補(bǔ)全代碼 |
Alt+Q | 顯示當(dāng)前方法的聲明 |
Alt + Enter | 快速提示完成,在代碼可能存在語(yǔ)法問(wèn)題時(shí),IDEA 會(huì)提示使用該快捷鍵可以快速自動(dòng)修正(功能非常強(qiáng)大,最常使用) |
Alt + insert | 快速生成含有任意形參的構(gòu)造器,和私有屬性的 Getter / Setter 方法等(最常使用) |
Alt + 1 | 快速打開(kāi)或隱藏 Project 面板 |
Alt + 7 | 快速顯示類結(jié)構(gòu),可以顯示類中包含的所有屬性和方法 |
Alt + left / right | 快速切換代碼視圖 |
Alt + Up / Down | 在方法間快速移動(dòng)定位(即光標(biāo)以方法為單位移動(dòng)) |
快捷鍵 | 功能 |
---|---|
Shift + Enter | 在當(dāng)前行下面生成一行空行,光標(biāo)自動(dòng)移到空行行首 |
F2 或 Shift + F2 | 快速定位高亮錯(cuò)誤或警告位置 |
快捷鍵 | 功能 |
---|---|
Ctrl + Alt + L | 快速格式化代碼 |
Ctrl + Alt + I | 自動(dòng)縮進(jìn)行 |
Ctrl+Alt+O | 優(yōu)化導(dǎo)入的類和包 |
Ctrl + Alt + T | 將選中的代碼使用 if、while、try/catch 等代碼塊包裝起來(lái)(功能強(qiáng)大) |
快捷鍵 | 功能 |
---|---|
Ctrl + Shift + Delete | 去除相關(guān)的代碼塊包裝,是Ctrl + Alt + T的相反操作 |
Ctrl + Shift + 向上/下箭頭 | 將光標(biāo)所在的代碼塊向上/下整體移動(dòng) |
Ctrl + Shift + F10 | 快速運(yùn)行當(dāng)前的程序,當(dāng)前你在哪個(gè)程序就運(yùn)行該程序 |
Ctrl + Shift + / | 添加/取消多行注釋,【第一次是添加注釋,第二次是取消注釋】 |
Ctrl + Shift + J | 快速整合兩行代碼,將光標(biāo)所在行和下一行的代碼合并成一行 |
1)快速生成主函數(shù):psvm/ main
2)快速生成打印語(yǔ)句:sout
3)快速生成普通 for 循環(huán):fori
4)快速生成增強(qiáng) for循環(huán):iter