【maven之四】 --maven倉庫和常用命令
這幾天專案開發中,經常會出現jar當不下來,jboss起不來的時候,所以經常做的動作就是clean專案,instal專案,project clean專案,但是對於這些操作,進一步的理解又說不出來。所以就查了一下這幾個命令到底是幹嘛的,要理解這幾個命令,還得從maven 的倉局機制和宣告週期說起。
一、Maven倉庫
1,maven倉庫原理
Maven倉庫是基於簡單檔案系統儲存的,只要在檔案系統中沒有發現相關的檔案,說明這幾種依賴並不存在,因此我們很容易在本地倉庫查詢具體的依賴是否存在。
2,倉庫的分類
如上圖所示,Maven的倉庫分為本地倉庫和遠端倉庫。遠端倉庫又包括中央倉庫,私服,其他公共庫,我們常用就是中央倉庫和私服。
1)本地倉庫
就是我悶自己電腦上的檔案,所以他是唯一的,專案構建時候首先在本地倉庫查詢依賴,如果本地沒有依賴時,才會去尋找遠端倉庫。
本地倉庫的配置和存放配置過程:
a. 解壓maven安裝包到D盤根目錄。
b. Eclipse—windows-Perferences—Maven-Installations—add-installation type 選擇maven安裝目錄。在Installations中選擇新配置的maven選項。
c. Eclipse—windows-Perferences—Maven—User Settings
點選Restore Defaults,沒有反應但是會在C:\Users\${User}\.m2\路徑下生成settings.xml檔案。
d.開啟資源管理器,找到C:\Users\${User}\.m2目錄下的settings.xml,修改內容為自己需要配置的本地倉庫、私服、遠端倉庫的地址連結,儲存並關閉User Settings視窗。
usr Setting 中的主要內容如下:
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0 http://maven.apache.org/xsd/settings-1.0.0.xsd">
<!-- 設定本地倉庫路徑 -->
<localRepository>D:\needforjava\maven\repository</localRepository>
<!-- 設定釋出 jar 包時的使用者名稱及密 -->
<servers>
<server>
<id>releases</id>
<username>***</username>
<password>****</password>
</server>
<server>
<id>snapshots</id>
<username>****</username>
<password>****</password>
</server>
</servers>
<!-- 設定 maven 的遠端倉庫為 nexus -->
<mirrors>
<mirror>
<id>nexus</id>
<mirrorOf>central</mirrorOf>
<name>nexus repository</name>
<url>http://192.168.********</url>
</mirror>
</mirrors>
<!-- 設定 central 的路徑等 -->
<profiles>
<profile>
<id>central</id>
<repositories>
<repository>
<id>central</id>
<name>Central</name>
<url>http://******</url>
</repository>
</repositories>
<pluginRepositories>
<pluginRepository>
<id>central</id>
<name>Central</name>
<url>http://*******</url>
</pluginRepository>
</pluginRepositories>
</profile>
</profiles>
<activeProfiles>
<activeProfile>central</activeProfile>
</activeProfiles>
<!-- 配置eclipse外掛 -->
<pluginGroups>
<pluginGroup>org.mortbay.jetty</pluginGroup>
<pluginGroup>org.codehaus.cargo</pluginGroup>
<pluginGroup>org.jvnet.hudson.tools</pluginGroup>
</pluginGroups>
</settings>
e.再次進入 Eclipse—windows-Perferences—Maven—User Settings
Global Settings選擇maven 安裝目錄下conf資料夾下的settings.xml
檢查Local Repository 項,如果為D:/maven/repository則配置成功,否則重新配置上一步。
2)遠端倉庫
指的是非本地的所有其他倉庫,中央倉庫和私服都是遠端倉庫的一種,如果本地倉庫沒有專案構建需要的jar包,專案會自從從遠端下載,如果遠端倉庫也沒有,專案就會報錯。中央倉庫是預設的遠端倉庫,Maven安裝檔案自帶遠端倉庫的位置是:http://repo.maven.apache.org/maven2
3)遠端倉庫---私服
私服是一種特殊的遠端倉庫,它 是架設在區域網內的倉庫服務,服務程式碼廣域網上的遠端倉庫,供區域網內的Maven使用者使用。當Maven需要下載構件的時候,它從私服請求,如果私服上不存在構件,則從外部的遠端倉庫下載,同時快取在私服上,然後為Maven下載請求提供服務。另外,對於第三方的jar無法從倉庫下載(jebc驅動)可以從本地上傳到私服供客戶端下載。
優點如下:①節省外網的寬頻。②加速Maven構建 ③部署第三方構件 ④提高穩定性,增強控制,因為內網相對外網來說,一般比較穩定。⑤降低中央倉庫的負荷 ,原因是中央倉庫的訪問量太大。
第二部分:maven命令
1,update Project(Alt+F5)
本身是更新專案的意思,因為你的工程是一個Maven工程,你的工程做了一些修改之後,必須讓Maven重新生成或修改相關檔案。否則Ecplise將不知道變化。(當然也可以手動修改,讓它知道,但是這樣不推薦。)例如:①用在maven中是指pom.xml檔案改動之後,需要執行Maven、Update Project來更新外部依賴的jar包。
對比:svn的update與Maven的updtae Project作用有什麼不同?
SVN update只是更新專案的svn倉庫。
maven update project則是進行一系列的操作。具體跟自己的配置有關,可能包含以下操作,更新SVN、更新專案關聯、編譯專案、構建釋出等。如果jar包都是放在專案中,不是通過Maven管理,那麼svn update時就取下來了。如果是用Maven倉庫統一管理所有的jar包,那麼是通過Maven update來獲取。一般情況下,pom.xml修改之後,Maven會自動執行專案的Update。
2,maven install
打包並且安裝到本地倉庫,此時本地倉庫會新增maven-quickstart-1.0-SNAPSHOT.jar檔案。
相關的命令:
mvn complile 編譯專案。
maven package:打包,此時target目錄下回出現Maven-quickstart-1.0-SNAPSHOT.jar檔案。即為打包後的檔案。
3, eaplise -project - clean
①,在ecplise的project選單下面有一個build automatically.選中這個的話,每次在儲存一會就會自動編譯。
②,ecplise--->project--->clean...選項將工程中的.class檔案刪除,同時編譯工程,類似於jbuild的rebuild。
由於ecplise的編譯是基於時間戳的判斷機制的。因此當用戶按build all的時候有些ecplise認為時間撮沒有改變的類不會被編譯。因此需要先clean 一下再編譯。這個時候,ecplise會將所有的以前編譯資訊清除然後編譯。
小結:
每次看都會覺得理解多了一點點,多學習幾遍理解就深刻了。為什麼有些東西總覺得理解不透,應該自己重複學習的次數少。