1. 程式人生 > >Maven(四)——倉庫

Maven(四)——倉庫

5       Maven倉庫介紹

5.1     簡介

Maven倉庫是用來儲存工件的。Maven倉庫主要包括本地倉庫和遠端倉庫。當Maven需要一個工件的時候,它會先從本地倉庫取,只有在本地倉庫不存在對應的工件的時候,才會從遠端倉庫把對應的工件下載下來儲存在本地倉庫,並從本地倉庫獲取所需的工件。預設的本地倉庫位置是使用者家目錄下面的“.m2/repository”,我們可以在Maven安裝目錄下面的settings.xml檔案中通過localRepository定義本地倉庫的位置。預設的遠端倉庫是“http://repo.maven.apache.org/maven2/”。

在這裡我想陳述一個問題,Maven官方是不主張我們在使用Maven的時候還把專案依賴的一些jar包提交到svn等版本控制系統中進行版本控制。這主要有以下原因:

1)      我們已經使用了Maven來管理我們的依賴jar包,那麼這些jar包就都會儲存在本地倉庫中,我們沒有必要每個專案都儲存一個依賴jar包的拷貝,這會浪費很多的磁碟空間,也違背了Maven設計的初衷。

2)      當我們沒有把依賴的jar包提交到版本控制系統的時候,這也就意味著我們這個專案的容量會相對而言小一些,這給我們帶來的優點就是在我們檢出該專案的時候速度會相對而言更快一些。

3)      Jar包一般都不需要進行版本控制,因為它的變化一般不大,我們很少會去更改一個jar包。

有的時候因為安全或者速度的原因,我們不允許直接從網際網路上下載依賴的jar包,這個時候內部的倉庫就出來了。我們可以從這個內部倉庫下載工件,也可以把工件釋出到該倉庫。這個內部倉庫的概念就相當於是公司內部自己管理了一套工件庫,而且可以自由的往這個工件庫裡面釋出公司自己的工件供大家共享。

5.2     安裝第三方jar包到本地倉庫

有的時候可能我們需要把本地的第三方jar包安裝到我們的Maven本地倉庫來構建我們的Maven專案。Maven為我們提供了一個指令可以很輕鬆的幫我們實現這個功能。

Cmd程式碼  收藏程式碼
  1. mvn install:install-file -Dfile=<filePath> -DgroupId=<groupId> -DartifactId=<artifactId> -Dversion=<version> -Dpackaging=<packagingType>  

       引數file表示需要安裝的第三方jar包在本地的路徑;

       引數groupId用於定義該jar包安裝後的groupId;

       引數artifactId用於定義該jar包安裝後的artifactId;

       引數version用於定義該jar包安裝後的版本;

       引數packaging用於定義該jar包安裝後的打包型別。

       比如現在我想把我電腦上的“D:\develop\lib\mysql-connector-java-5.1.12-bin.jar”安裝到我的Maven本地倉庫,那麼我就可以在命令視窗執行以下指令來達到這個目的:

       mvn install:install-file -Dfile=D:\develop\lib\mysql-connector-5.1.12-bin.jar -DgroupId=mysql -DartifactId=mysql -Dversion=5.1.12 -Dpackaging=jar

       之後在其他Maven專案中我們就可以根據定義好的groupId、artifactId、version和packaging型別來新增這裡定義好的mysql-connector-5.1.12-bin.jar的引用了。

5.3     部署第三方jar包到遠端倉庫

前面安裝到本地倉庫的第三方jar包只能是在本地使用,這樣其他人是無法訪問到的。如果需要其他人也能訪問到的話,我們就需要把它部署到我們的遠端倉庫上去。我們可以使用以下Maven指令來部署一個第三方jar包到指定的遠端倉庫。

Cmd程式碼  收藏程式碼
  1. mvn deploy:deploy-file  
  2.  -Dfile=<filePath>  
  3.  -DgroupId=<groupId>  
  4.  -DartifactId=<artifactId>  
  5.  -Dversion=<version>  
  6.  -Dpackaging=<packagingType>  
  7.  -DrepositoryId=<repositoryId>  
  8.  -Durl=<urlOfTheRepositoryToDeploy>  

把第三方jar包部署到遠端倉庫的引數和安裝第三方jar包到本地倉庫類似,但它多了兩個引數,一個是repositoryId和url。repositoryId表示需要部署到的遠端倉庫的id,這個遠端倉庫是定義在settings.xml中的;url表示需要部署到的遠端倉庫的url。

預設情況下,使用deploy:deploy-file部署的第三方jar包將會生成一個通用的pom。如果在部署的過程中不需要生成這個pom,我們可以在使用該指令的時候加上引數“-DgeneratePom=false”。

如果我們在使用deploy:deploy-file部署第三方jar到遠端倉庫需要使用一個已有的pom的時候,我們需要在使用該指令的時候加上引數“-DpomFile=<pomFilePath>”。如:

Cmd程式碼  收藏程式碼
  1. mvn deploy:deploy-file  
  2.  -Dfile=<filePath>  
  3.  -DpomFile=<pomFilePath>  
  4.  -DrepositoryId=<repositoryId>  
  5.  -Durl=<urlOfTheRepositoryToDeploy>  

細心的讀者可能已經發現了,我們在使用了引數pomFile的時候沒有指定groupId、artifactId、version和packaging引數。這是因為當我們指定了pomFile的時候這些引數都可以從指定的pom檔案中獲得。

當我們需要部署的是一個原始碼jar包的時候,packaging應該指定為java-source,而且generatePom應該指定為false。

相關推薦

Maven——倉庫

5       Maven倉庫介紹 5.1     簡介 Maven倉庫是用來儲存工件的。Maven倉庫主要包括本地倉庫和遠端倉庫。當Maven需要一個工件的時候,它會先從本地倉庫取,只有在本地倉庫不存在對應的工件的時候,才會從遠端倉庫把對應的工件下載下來儲存在本地倉庫,並

Java-Maven:Eclipse集成Maven環境配置

查找 epo 情況 jpg ont 使用 eclipse版 需要 style 一般maven都需要集成到IDE上使用的,而不是單獨的使用,常見的maven可集成IDE:eclipse、IntelliJ IDEA。但這裏就只學習eclipse集成maven的基礎上,進行mav

mavenmaven使用入門

1、編寫pom Maven 專案的核心是 pom.xml。POM(Project Object Model,專案物件模型) 定義了專案的基本資訊, 用於描述專案如何構建, 宣告專案依賴, 等等。 現在我們先為 Hello World專案編寫一個最簡單的 pom

Maven】專案管理利器Maven——常用命令

一、前言       在前面,小編向大家介紹了Maven的三種倉庫:本地倉庫,私服,中央倉庫。相信大家都有了一定的瞭解,下面,小編向大家繼續介紹一下Maven經常使用的——命令。 二、常用命令

maven倉庫

倉庫分為本地倉庫和遠端倉庫。在maven開發的專案中,這個專案不引進第三方的jar包,是用的時候通過pom依賴機制,從本地倉庫或者遠端倉庫去獲取第三方的jar包,然後存到本地倉庫。這樣只要本地倉庫有需要的jar包就可以離線開發了。在打包釋出的時候maven會自動

Maven——POM繼承與多模組構建

約定(慣例)優先於配置 標準的目錄結構 *.java放到src/main/java目錄下 *.class在target目錄下 配置及靜態檔案 這樣做的好處就是:我們只需要把對應的原始碼、檔案放到正確的目錄下,然後maven會自動幫我們找到,做其他所有的事情

Maven中的倉庫

setting back wid csdn esp strong itl nexus 知識 一、分類 maven的倉庫只有兩大類:   1.本地倉庫 2.遠程倉庫,在遠程倉庫中又分成了3種:   2.1 中央倉庫 2.2 私服 2.3

Spark環境搭建-----------數據倉庫Hive環境搭建

apr 程序 版本 擴展 arch 表名 數據集 .tar.gz 自定義 Hive產生背景 1)MapReduce的編程不便,需通過Java語言等編寫程序 2) HDFS上的文缺失Schema(在數據庫中的表名列名等),方便開發者通過SQL的方式處理結構化的數據,而不需

【Java_SSM】Eclipse中通過maven引入jar包

osc ati eight wid -- stat ack ips 技術 這篇博文我們介紹一下如何通過eclipse配置setting並引入jar包 (1)eclipse:Window--Preferences--Maven--User Setting 全部完成

Maven學習-- Maven的核心概念

pue nlj 人員 gbk provided spi vts 源代碼 -s 摘自:http://www.cnblogs.com/xdp-gacl/p/4051819.html 一、Maven坐標 1.1、什麽是坐標?   在平面幾何中坐標(x,y)可以標識平面中唯一的一

gitlab+jenkins+maven+docker持續集成——Extended E-mail Notification配置

gitlab jenkins maven 構建後進行郵件通知,這裏我們用Extended E-mail Notification系統管理-->Extended E-mail Notification在這裏subject、content為defalut 模板,我們暫不做配置,我這裏按項目進行配

【筆記篇】斜率優化dp ZJOI2007倉庫建設

描述 get -- ons turn clu 最小花費 ont inline 傳送門戳這裏>>> \(n\leq1e6\), 顯然還是\(O(n)\)的做法. 這個題有個條件是只能運往編號更大的工廠的倉庫, 這也是寫出樸素dp的方程的條件. 我們令\(f

springmvc+mybatis+zookeeper分布式架構 整合 - maven代碼結構

clip ips 解釋 mvc alt 代碼結構 圖片 keep 分布 我們接著上一篇文章,針對於dubbo分布式項目進行maven構建,因為我在本地的eclipse中進行了項目構建,代碼結構圖如下: 代碼結構解釋: 架構代碼如下: (四)springmvc+mybat

構建dubbo分布式平臺-maven代碼結構

color mave ges shadow text mar image 針對 分享 上一篇我們介紹《構建dubbo分布式平臺-maven模塊規劃》,我們接著上一篇文章,針對於dubbo分布式項目進行maven構建,因為我在本地的eclipse中進行了項目構建,代碼結構圖如

Java-Maven:配置遠程中央倉庫的各種方法

訪問 class 平時 str cksum nbsp bsp rep brush 一、遠程倉庫的配置   在平時的開發中,我們往往不會使用默認的中央倉庫,默認的中央倉庫訪問的速度比較慢,訪問的人或許很多,有時候也無法滿足我們項目的需求,可能項目需要的某些構件中央倉庫中是沒有

配置mac環境下的JAVA_HOME 與 配置maven Mac上jdk的配置 ()在terminal中執行.class檔案

(一)mac環境下,echo $JAVA_HOME 一般輸出為空,但有時候某些構件會需要有javahome的配置,這時就需要把Java home配置好。 步驟: 1, 命令列輸入: /usr/libexec/java_home 我的環境輸出是 /Library/Java/JavaVi

maven系列-maven生命週期和外掛

前面講了maven的依賴和倉庫,這是經常接觸到的一些操作。但是我們平時還會接觸到maven生命週期的一些操作,比如打包、編譯等,maven就可以把我們的專案進行打包、編譯。其實這個過程,還是涉及到很多知識點的,只不過我們在操作過程中察覺不到而已。 我們在專案開發中都會涉及到清理、編譯、測

Maven學習筆記--pom檔案

pom.xml檔案 通過maven構建的專案在根目錄下都會有pom.xml這個檔案 <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-i

maven學習之路生命週期和外掛

1、什麼是生命週期?外掛的作用? 前面我們說過,maven是一個專案構建、依賴管理的工具,生命週期就是maven在專案構建的過程中抽象出來的一系列子過程,例如編譯、執行測試、打包等等過程。 需要注意的是,maven只是將生命週期進行了抽象化的定義,真正實現生

搭建SpringBoot+dubbo+zookeeper+maven框架

 今天我們完成框架的thymeleaf模板顯示頁面功能,頁面的使用者登陸,密碼的AES加密解密,輸錯3次進行驗證碼驗證功能,東西可能比較多,這個是我這兩天在網上結合各種資源整合出來的,基本功能都已經實現,專案程式碼我會附在文章的最後面。 1.thymeleaf模板顯示頁面功能  簡單說, Thymeleaf