1. 程式人生 > >[Maven實戰](6)倉庫(本地倉庫,遠端倉庫,映象)

[Maven實戰](6)倉庫(本地倉庫,遠端倉庫,映象)

1. 簡介 maven可以在某個位置統一儲存所有maven專案共享的構件,這個統一的位置就是倉庫。實際的Maven專案將不會各自儲存其依賴檔案,它們只需要宣告這些依賴的座標,在需要的時候(例如,編譯專案的時候需要將依賴加入到classpath中),maven會自動根據座標找到倉庫中的構件,並使用它們。為了實現重用,專案構建完畢後生成的構件也可以安裝或者部署到倉庫中,供其他專案使用。 2. 倉庫分類 對於maven來說,倉庫只分為兩類:本地倉庫和遠端倉庫。當maven根據座標尋找構件的時候,它首先會檢視本地倉庫,如果本地倉庫存在此構件,則直接使用;如果本地倉庫不存在此構件,或者需要檢視是否有更新的構件版本,maven就會去遠端倉庫
查詢,發現需要的構件之後,下載到本地倉庫再使用。如果本地倉庫和遠端倉庫都沒有需要的構件,maven就會報錯。 在這個最基本分類的基礎上,還有必要介紹一些特殊的遠端倉庫。中央倉庫是maven核心自帶的遠端倉庫,它包含了絕大部分開源的構件。在預設配置下,當本地倉庫沒有maven需要的構件的時候,它就會嘗試從中央倉庫下載。私服是另一種特殊的遠端倉庫,為了節省頻寬和時間,應該在區域網內架設一個私有的倉庫伺服器,用其代理所有外部的遠端倉庫。內部的專案還能部署到私服上供其他專案使用。除了中央倉庫和私服,還有很多其他公開的遠端倉庫,常見的有java.net Maven庫(http://download.java.net/maven/2/)和jboss Maven庫(http://repository.jboss.com/maven2/)等。

3. 本地倉庫 預設情況下,不管是在windows還是linux上,每個使用者在自己的使用者目錄下都有一個路徑名為.m2/repository/的倉庫目錄。有時候,因為某些原因(例如C盤空間不夠,或者要重灌系統等等),使用者會想要自定義本地倉庫目錄地址。這時,可以編輯檔案~/.m2/settings.xml,設定localRepository元素的值為想要的倉庫地址。例如: <settings><localRepository>D:\IT\maven\repo</localRepository><settings> 這樣,該使用者的本地倉庫地址就被設定成了 D:\IT\maven\repo。需要注意的是,預設情況下,~/.m2/settings.xml檔案是不存在的,使用者需要從Maven安裝目錄複製$M2_HOME/conf/settings.xml檔案再進行編輯。 一個構件只有在本地倉庫中之後,才能由其他Maven專案使用,那麼構件如何進入到本地倉庫中呢? (1)最常見的是Maven從遠端倉庫下載到本地倉庫中
。當我們第一次執行某個命令時,例如mvn compile時,會下載大量檔案當本地倉庫中。 (2)還有一種常見的情況是,將本地專案的構件安裝到Maven倉庫中。使用命令:mvn clean install即可完成安裝。install目標就是將專案的構建輸出檔案安裝到本地倉庫。 4. 遠端倉庫 安裝好Maven後,如果不執行任何Maven命令,本地倉庫目錄是不存在的。當用戶輸入第一條Maven命令之後,Maven才會建立本地倉庫,然後根據配置和需要,從遠端倉庫下載構件至本地倉庫。
本地倉庫好比書房,我需要讀書的時候先從書房找,相應的,Maven需要構件的時候先從本地倉庫找。遠端倉庫就好比書店,當我無法從自己的書房找到需要的書的時候,就會從書店購買後放到書房。相應的,當Maven無法從本地倉庫找到需要的書的時候,就會從遠端倉庫下載構件到本地倉庫。一般的,對於每個人來說,書房只有一個,但外面的書店卻有很多,類似的,對於Maven來說,每個使用者只有一個本地倉庫,但可以配置很多遠端倉庫。 5. 中央倉庫 由於最原始的本地倉庫是空的,Maven必須知道至少一個可用的遠端倉庫,才能在執行Maven命令的時候下載到需要的構件。中央倉庫就是這樣一個預設的遠端倉庫,Maven的安裝檔案自帶了中央倉庫的配置。讀者可以使用解壓工具開啟jar檔案$M2_HOME/lib/maven-model-builder-3.3.9.jar,然後訪問路徑:org/apache/maven/model/pom-4.0.0.xml,可以看到如下的配置: <repositories><repository><id>central</id><name>Central Repository</name><url>https://repo.maven.apache.org/maven2</url><layout>default</layout><snapshots><enabled>false</enabled></snapshots></repository></repositories> 包含這段配置的檔案是所有Maven專案都會繼承的超級POM。這段配置使用central對中央倉庫進行唯一標識,其名稱為Central Repository,它使用default進行倉庫佈局。最後需要注意的是snapshots元素,其子元素enabled的值為false,表示不從該中央倉庫下載快照版本的構件。 6. 映象倉庫 如果倉庫X可以提供倉庫Y儲存的所有內容,那麼就可以認為X是Y的一個映象。換句話說,任何一個可以從倉庫Y獲得的構件,都能夠從它的映象中獲取。舉個例子,http://maven.oschina.net/content/groups/public/ 是中央倉庫http://repo1.maven.org/maven2/ 在中國的映象,由於地理位置的因素,該映象往往能夠提供比中央倉庫更快的服務。因此,可以配置Maven使用該映象來替代中央倉庫。編輯settings.xml(apache-maven-3.3.9\conf\settings.xml),程式碼如下: <mirrors><mirror><id>maven.oschina.net</id><mirrorOf>central</mirrorOf><name>maven mirror in China</name><url>http://maven.oschina.net/content/groups/public/</url></mirror></mirrors> 該例中,mirrorOf的值為central,表示該配置為中央倉庫的映象,任何對於中央倉庫的請求都會轉至該映象,使用者也可以使用同樣的方法配置其他倉庫的映象。id表示映象的唯一識別符號,name表示映象的名稱,url表示映象的地址。 關於映象的一個更為常見的用法是結合私服。由於私服可以代理任何外部的公共倉庫(包括中央倉庫),因此,對於組織內部的Maven使用者來說,使用一個私服地址就等於使用了所有需要的外部倉庫,這可以將配置集中到私服,從而簡化Maven本身的配置。在這種情況下,任何需要的構件都可以從私服獲得,私服就是所有倉庫的映象。以後再慢慢介紹私服的使用。  下面提供一些別的映象倉庫: <mirror><id>CN</id><name>OSChina Central</name><url>http://maven.oschina.net/content/groups/public/</url><mirrorOf>central</mirrorOf></mirror><mirror><id>repo2</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://repo2.maven.org/maven2/</url></mirror><mirror><id>net-cn</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://maven.net.cn/content/groups/public/</url></mirror><mirror><id>ibiblio</id><mirrorOf>central</mirrorOf><name>Human Readable Name for this Mirror.</name><url>http://mirrors.ibiblio.org/pub/mirrors/maven2/</url></mirror><mirror><id>jboss-public-repository-group</id><mirrorOf>central</mirrorOf><name>JBoss Public Repository Group</name><url>http://repository.jboss.org/nexus/content/groups/public</url></mirror><mirror><id>JBossJBPM</id><mirrorOf>central</mirrorOf><name>JBossJBPM Repository</name><url>https://repository.jboss.org/nexus/content/repositories/releases/</url></mirror> 來源於:《Maven實戰》

相關推薦

[Maven實戰]6倉庫本地倉庫遠端倉庫映象

1. 簡介 maven可以在某個位置統一儲存所有maven專案共享的構件,這個統一的位置就是倉庫。實際的Maven專案將不會各自儲存其依賴檔案,它們只需要宣告這些依賴的座標,在需要的時候(例如,編譯專案的時候需要將依賴加入到classpath中),maven會自動根據

Maven1——本地倉庫遠端倉庫

  Maven   在開發Java專案的過程中,經常會引入大量的Jar檔案,在專案目錄下,往往會看到一個名為/lib的子目錄,那裡存放著各類第三方依賴jar檔案,如 log4j.jar,junit.jar等等。每建立一個專案,開發人員都必須走這一步。多個專案不共用相同的j

使用vsftpd服務傳輸檔案匿名使用者認證、本地使用者認證、虛擬使用者認證

vsftpd是一款執行在Linux作業系統上的FTP服務程式,不僅完全開源而且免費,此外,還具有很高的安全性、傳輸速度,以及支援虛擬使用者驗證等其他FTP服務程式不具備的特點。 vsftd作為更加安全的檔案傳輸的服務程式,允許使用者以三種認證模式登入到FTP伺服器上。 匿名開放模式: 是一種最不安全

linuxcentos7中安裝mysql修改密碼遠端連線從sqlyog連線一套教程自己整理筆記

2.開啟MySQL遠端訪問許可權 允許遠端連線 改表法: use mysql; update user set host = '%' where user = 'root'; FLUSH PRIVILEGES; ps:網上還要修改防火牆的方法,我沒成功,

Maven部署本地jar到遠端倉庫

  要將jar部署到外部儲存庫,您必須在pom.xml中配置儲存庫url和用於在settings.xml中的庫連線的身份驗證資訊。   下面是一個使用scp和使用者名稱/密碼身份驗證的示例: <

Maven本地倉庫遠端倉庫

在Maven中,任何一個依賴、外掛或者專案構建的輸出,都可以稱之為構件。 Maven在某個統一的位置儲存所有專案的共享的構件,這個統一的位置,我們就稱之為倉庫。(倉庫就是存放依賴和外掛的地方) 任何一個構件都有一個座標作為唯一的標識。 這個座標就是:group、artif

maven修改本地倉庫遠端倉庫與中央倉庫

什麼是Maven倉庫在不用Maven的時候,比如說以前我們用Ant構建專案,在專案目錄下,往往會看到一個名為/lib的子目錄,那裡存放著各類第三方依賴jar檔案,如 log4j.jar,junit.jar等等。每建立一個專案,你都需要建立這樣的一個/lib目錄,然後複製一對jar檔案,這是很明顯的重複。重複永

maven 整合支付寶匯入alipay-sdk-java包到本地倉庫遠端倉庫

1.環境變數新增: MAVEN_HOME:(maven位置) M2_HOME:(maven位置) PATH:%M2_HOME%\bin (驗證maven是否配置成功cmd–>mvn -version(或者 mvn -v)) 2.安裝sdk到本地倉

Git 本地倉庫推送多個遠端倉庫

使用: git remote add [name,預設:origin] [url,遠端倉庫地址https] 可以給我們的本地倉庫增加遠端倉庫的連線(推送)地址。 所以只要指定的[name] [url]都不一致,便可以給本地倉庫增加多個遠端倉庫。 示例 如下圖:

如何建立/修改遠端倉庫 + 如何刪除遠端倉庫 + 如何刪除遠端倉庫中的某個檔案或資料夾 + 如何使用git將本地倉庫連線到多個遠端倉庫

首先我們來區分一些概念、術語、名詞。不然腦子一鍋粥,總是暈!!!博主對此深有體會!從中學到了沒事要多總結、多歸類! 倉庫有本地倉庫和遠端倉庫之分。倉庫都可以叫做服務端(器)。本地倉庫有:Windows、Linux、MacOS。(指的是執行在不同系統下的本地倉庫)遠端倉庫有:GiuHub(國外)、Gi

git衝突之git pull時同一個檔案遠端倉庫裡已經修改了不幸的是你在本地倉庫也修改了

0、git pull,爆出一個錯誤,pull failed Your local changes would be overwritten by merge. Commit, stash or revert them to proceed. 你本地修改的將會被合併覆蓋。要麼提交、要麼儲存

GitExtension推送pull本地資料到遠端倉庫

1.建立新的檔案庫  如果是自己已經開發的專案,直接選中開發的專案目錄,直接進行初始化,得到初始化的檔案庫,會顯示下列頁面 從檔案樹看到初始化的檔案庫為空,此時點選提交,會跳轉到工作區間的更新頁面 “提交”是將檔案提交到本地庫 “提交併推送”則是同時將檔案提交到本地庫並

通過Android studio使用git建立本地分支提交遠端倉庫以及如何檢視切換分支

            我們有時候對命令不熟悉的同學例如我,那麼這個AS自帶的這個建立分支功能就對我們必不可少了。 首先我們看下遠端倉庫只有主支master,沒有任何分支的資訊如下圖: 1.首先我們開啟AS,點選右下角的git會彈出選單:如下(右下角預設顯示的事g

git 本地倉庫遠端倉庫本地分支和遠端分支

從遠端git倉庫簽出程式碼:   $ git clone git://aaa.com/git_project.git (遠端git伺服器專案所在地址) 當你需要克隆遠端專案到本地時,預設會把專案儲存在名為 git_project 資料夾下面. 你也可以指定本地的一個空資料夾ccc git clone git

初步建立遠端倉庫本地倉庫上傳到git 遠端倉庫

最近開始做一個新的專案,在第一步建立遠端倉庫都遇到的麻煩, 一直處這個錯: ! [rejected] master -> master (fetch first) error: failed to push some refs to

github—本地建立與遠端倉庫的聯絡以及程式碼上傳與合併

一.註冊github 首先需要註冊github 並將本地生成的SSH keys放到github上setting裡的SSH and GPG keys 裡面去 二.clone到本地並建立關聯 git clone https://github.

【TortoiseGit】建立本地倉庫並上傳至遠端倉庫

今天早上弄了一早上,老是失敗 ,所以這裡把踩過的坑記錄下來,以後也可以看看。 一. 新建遠端倉庫 在網頁端Github建立遠端倉庫。 <1>

Maven系列第6篇:生命週期和外掛詳解此篇看過之後在maven的理解上可以超越同級別90%的人!

maven系列目標:從入門開始開始掌握一個高階開發所需要的maven技能。 這是maven系列第6篇。 整個maven系列的內容前後是有依賴的,如果之前沒有接觸過maven,建議從第一篇看起,本文尾部有maven完整系列的連線。 前面我們使用maven過程中,用到了一些命令,如下: mvn clean mvn

linux採用scp命令拷貝檔案到本地拷貝本地檔案到遠端伺服器伺服器之間傳輸檔案

拷貝遠端伺服器的檔案到本地: scp -r -P  埠號   使用者名稱@IP地址:/usr/local/tomcat_airc/webapps/        /tmp/kyj/ 拷貝本地檔案到遠端伺服器: scp -r    /tmp/kyj/sys.war

Git工作區暫存區遠端倉庫及分支管理

一,Git的工作區與暫存區 Git的工作區(working directory),就像我們平時看到的目錄一樣。Git的版本庫中包含了暫存區(stage或者index)以及Git為我們自動建立的第一個分支master,和指向master的一個指標HEAD。 當