欧美经典成人在观看线视频_嫩草成人影院_国产在线精品一区二区中文_国产欧美日韩综合二区三区

maven中央倉庫(Maven倉庫如何搭建保姆級教程)

maven中央倉庫(Maven倉庫如何搭建保姆級教程)

莫暄婷 2025-04-11 科技 23 次瀏覽 0個評論

大家好,我是袁庭新。

Maven在某個統一的位置存儲所有項目的構件,這個統一的位置,我們就稱之為倉庫。換言之,倉庫就是存放依賴和插件的地方。

任何的構件都有唯一的坐標,該坐標定義了構件在倉庫中的唯一存儲路徑。當Maven項目需要某些構件時,只要其POM文件中聲明了這些構件的坐標,Maven就會根據這些坐標找自動到倉庫中找到并使用它們。

項目構建完成生成的構件,也可以安裝或者部署到倉庫中,供其他項目使用。

1.倉庫的分類

Maven倉庫可以分為2個大類:

本地倉庫遠程倉庫

當Maven根據坐標尋找構件時,它會首先查看本地倉庫,若本地倉庫存在此構件,則直接使用;若本地倉庫不存在此構件,Maven就會去遠程倉庫查找,若發現所需的構件后,則下載到本地倉庫使用。如果本地倉庫和遠程倉庫都沒有所需的構件,則Maven就會報錯。

遠程倉庫還可以分為3個小類:中央倉庫、私服、其他公共倉庫。

中央倉庫是由Maven社區提供的一種特殊的遠程倉庫,它包含了絕大多數流行的開源構件。在默認情況下,當本地倉庫沒有Maven所需的構件時,會首先嘗試從中央倉庫下載。私服是一種特殊的遠程倉庫,它通常設立在局域網內,用來代理所有外部的遠程倉庫。它的好處是可以節省帶寬,比外部的遠程倉庫更加穩定。除了中央倉庫和私服外,還有很多其他公共倉庫,例如JBoss Maven庫,Java.net Maven庫和阿里云Maven倉庫等等。

Maven倉庫的分類如下圖。

Maven倉庫如何搭建?保姆級教程

由于私服在實際開發中十分的常用,也特別重要,因此本節只稍做介紹,關于Maven私服的詳細內容將在后續章節專題介紹。

2.本地倉庫

Maven本地倉庫實際上就是本地計算機上的一個目錄(文件夾),它會在第一次執行Maven命令時被創建。

Maven本地倉庫可以儲存本地所有項目所需的構件。當Maven項目第一次進行構建時,會自動從遠程倉庫搜索依賴項,并將其下載到本地倉庫中。當項目再進行構建時,會直接從本地倉庫搜索依賴項并引用,而不會再次向遠程倉庫獲取。

以Window系統為例說明,Maven本地倉庫默認地址為C:%USER_HOME%.m2\repository ,但出于某些原因(例如C盤空間不夠),我們通常會重新自定義本地倉庫的位置。這時需要修改%MAVEN_HOME%\conf目錄下的settings.xml文件,通過localRepository元素定義新的本地倉庫地址。

1.進入apache-maven-3.8.4/conf目錄下,找到settings.xml配置文件,我們在該文件中進行本地倉庫的配置。

2.打開settings.xml文件,進行如下配置。

<!-- 選擇一個磁盤目錄,作為本地倉庫。以下兩種配置Maven本地倉庫的方式,根據操作系統二選其一。 --><!-- 1.Windows系統配置Maven本地倉庫 --><localRepository>H:\ProgramSoftware\localRepository</localRepository><!-- 2.Mac OS系統配置Maven本地倉庫 --><localRepository>/Users/yuanxin/Documents/ProgramSoftware/localRepository</localRepository>

3.在本臺計算機上,上述配置的Maven本地倉庫地址處創建【localRepository】文件夾,用于存放將來從遠程倉庫或中央倉庫下載的插件和jar包。

構件只有儲存在本地倉庫中,才能被其他的Maven項目使用。構件想要進入本地倉庫,除了從遠程倉庫下載到本地倉庫外,還可以使用命令mvn install將本地項目的輸出構件安裝到本地倉庫中。

3.中央倉庫

中央倉庫是由Maven社區提供的一種特殊的遠程倉庫,它包含了絕大多數流行的開源構件。在默認情況下,當本地倉庫沒有Maven所需的構件時,會首先嘗試從中央倉庫下載。

中央倉庫具有如下特點:

這個倉庫由Maven社區管理不需要配置需要通過網絡才能訪問

我們可以通過Maven社區提供的URL地址:http://search.maven.org/#browse,瀏覽其中的構件。中央倉庫包含了絕大多數流行的開源Java構件及其源碼、作者信息和許可證信息等。一般來說,Maven項目所依賴的構件都可以從中央倉庫下載到。

雖然中央倉庫屬于遠程倉庫的范疇,但由于它的特殊性,一般會把它與其他遠程倉庫區分開。我們常說的遠程倉庫,一般不包括中央倉庫。

4.遠程倉庫

如果Maven在本地倉庫和中央倉庫中都找不到依賴的庫文件,它就會停止構建過程并輸出錯誤信息到IDE控制臺。為避免這種情況的發生,Maven還提供了遠程倉庫的概念,它是一種由開發人員自己定制的倉庫,其中包含了供其他項目使用的代碼庫或者構件。

國內開發人員由于網絡原因,直接從中央倉庫下載構件時,速度較慢或不穩定,我們通常會使用中央倉庫的國內鏡像站來解決該問題。

配置Maven鏡像的方法也非常的簡單,我們只需要在Maven安裝目錄中setting.xml文件的mirrors節點中,使用mirror標簽添加鏡像的相關信息即可。

目前國內使用最多,最穩定的中央倉庫鏡像分別是由[阿里云]和[華為云]提供的,它們的地址配置如下。

阿里云鏡像:https://developer.aliyun.com/mvn/guide華為云鏡像:https://mirrors.huaweicloud.com/home4.1 阿里云鏡像

阿里云Maven中央倉庫為阿里云云效提供的公共代理倉庫,幫助研發人員提高研發生產效率,使用阿里云Maven中央倉庫作為下載源,速度更快更穩定。

1.打開Maven的配置文件( windows機器一般在Maven安裝目錄的conf/settings.xml),在<mirrors></mirrors>標簽中添加mirror子節點。進入apache-maven-3.8.4/conf目錄下,在settings.xml文件中做如下配置。

<mirror> <id>aliyunmaven</id> <mirrorOf>*</mirrorOf> <name>阿里云公共倉庫</name> <url>https://maven.aliyun.com/repository/public</url></mirror>

2.如果想使用其它代理倉庫,可在<repositories></repositories>節點中加入對應的倉庫使用地址。以使用central代理倉為例。

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> <modelVersion>4.0.0</modelVersion> <groupId>com.ytx.edu</groupId> <artifactId>hello_maven</artifactId> <packaging>jar</packaging> <version>1.0-SNAPSHOT</version> <name>hello_maven</name> <url>http://maven.apache.org</url> <dependencies> <dependency> <groupId>junit</groupId> <artifactId>junit</artifactId> <version>3.8.1</version> <scope>test</scope> </dependency> </dependencies> <repositories> <repository> <id>central</id> <url>https://maven.aliyun.com/repository/central</url> <releases> <enabled>true</enabled> </releases> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories></project>

說明:上述步驟1和步驟2針對Maven的配置遠程倉庫的配置,兩種方式任選其一即可。

3.在你的pom.xml文件<denpendencies></denpendencies>節點中加入你要引用的文件信息。

<dependency> <groupId>[GROUP_ID]</groupId> <artifactId>[ARTIFACT_ID]</artifactId> <version>[VERSION]</version></dependency>

4.執行拉取命令。

mvn install4.2 華為云鏡像

打開Maven的配置文件( windows機器一般在Maven安裝目錄的conf/settings.xml),在<mirrors></mirrors>標簽中添加mirror子節點。進入apache-maven-3.8.4/conf目錄下,在settings.xml文件中做如下配置。

<mirror> <id>huaweicloud</id> <name>mirror from maven huaweicloud</name> <mirrorOf>central</mirrorOf> <url>https://repo.huaweicloud.com/repository/maven/</url></mirror>

以上配置中,mirrorOf的取值為central,表示該配置為中央倉庫的鏡像,所有對于中央倉庫的請求都會轉到該鏡像。當然,我們也可以使用以上方式配置其他倉庫的鏡像。另外三個元素id、name和url分別表示鏡像的唯一標識、名稱和地址。

4.3 鏡像與Maven私服配合使用

鏡像通常會和Maven私服配合使用,由于Maven私服可以代理所有外部的公共倉庫(包括中央倉庫),因此對于組織內部的用戶來說,使用一個私服就相當于使用了所有需要的外部倉庫,這樣就可以將配置集中到私服中,簡化Maven本身的配置。這種情況下,用戶所有所需的構件都可以從私服中獲取,此時私服就是所有倉庫的鏡像。

<srttings> ... <mirrors> <mirror> <id>nexus</id> <mirrorOf>*</mirrorOf> <name>nexus</name> <url>http://localhost:8000/nexus/content/groups/ytx_repository_group/</url> </mirror> </mirrors> ...</settings>

以上配置中,mirrorOf元素的取值為*,表示匹配所有遠程倉庫,所有對于遠程倉庫的請求都會被攔截,并跳轉到url元素指定的地址。

為了滿足一些較為復雜的需求,Maven還支持一些更為高級的配置。

<mirrorOf>*</mirrorOf>:匹配所有遠程倉庫。<mirrorOf>external:*</mirrorOf>:匹配所有遠程倉庫,使用localhost和file://協議的除外。即,匹配所有不在本機上的遠程倉庫。<mirrorOf>repo1,repo2</mirrorOf>:匹配倉庫repo1和repo2,使用逗號分隔多個遠程倉庫。<mirrorOf>*,!repo1</miiroOf>:匹配所有遠程倉庫,repo1除外,使用感嘆號將倉庫從匹配中排除。

需要注意的是,由于鏡像倉庫完全屏蔽了被鏡像倉庫,當鏡像倉庫不穩定或者停止服務時,Maven也無法訪問被鏡像倉庫,因而將無法下載構件。

5.Profiles配置

在settings.xml文件中的<profiles></profiles>標簽中,添加一個<profile>標簽,用于限定Maven項目默認的JDK版本。

<profiles> <!-- 在已有的profiles標簽中添加profile標簽 --> <profile> <id>jdk-11</id> <activation> <activeByDefault>true</activeByDefault> <jdk>11</jdk> </activation> <properties> <maven.compiler.source>11</maven.compiler.source> <maven.compiler.target>11</maven.compiler.target> <maven.compiler.compilerVersion>11</maven.compiler.compilerVersion> </properties> </profile></profiles><!-- 讓增加的profile生效 --><activeProfiles> <activeProfile>jdk-11</activeProfile></activeProfiles>6.總結

本文主要介紹了 Maven 倉庫相關知識。Maven 倉庫用于存放依賴和插件,分為本地倉庫和遠程倉庫(中央倉庫、私服、其他公共倉庫)。本地倉庫是本地計算機目錄,默認地址可修改。中央倉庫由 Maven 社區管理,默認優先從其下載構件。遠程倉庫可定制,國內常用阿里云和華為云鏡像解決下載問題。還講述了私服及鏡像與私服配合使用,以及在 settings.xml 中通過 Profiles 配置限定項目默認 JDK 版本等內容,為 Maven 項目構建提供了重要的倉庫管理指導。

轉載請注明來自夕逆IT,本文標題:《maven中央倉庫(Maven倉庫如何搭建保姆級教程)》

每一天,每一秒,你所做的決定都會改變你的人生!

發表評論

快捷回復:

評論列表 (暫無評論,23人圍觀)參與討論

還沒有評論,來說兩句吧...