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