在學習Maven時常會看到Repository這個詞,以下有時簡稱repo。
Maven的repository(倉庫),是指用來存放Artifact(構件)(通常是jar)的地方,所以又稱Artifact Repository。
Repo依存放的位置分為兩種,分別為Remote repository及Local repository。
Local repository(本地倉庫)是指Maven執行所在的電腦中的目錄。在Windows系統中預設位置在${user.home}/.m2/repository/
,${user.home}
是指使用者目錄,也就是你登入Windows的帳戶名稱。例如在我的電腦中為C:\Users\matt\.m2\repository
;macOS預設位置在 $HOME/.m2
,$HOME
是指使用者目錄,例如在我的Mac為Users/matt
。
Local repository的作用是用來快取從remote repo下載回來的構件,及用來暫存你專案所建構且尚未發布的artifact。
你可以在Eclipse的功能選單Window -> Prefereces -> Maven -> User Settings
找到Local Repository的路徑資訊。
Remote repository(遠端倉庫)是指local repo以外的倉庫,通常透過file://
及http://
來存取。Remote repo最常見的就是第三方的遠端倉庫如repo.maven.apache.org/maven2/
(又稱為Maven Central Repository)。另一種是公司自己建立的私有repository,又稱為Internal repository,僅限於公司內部成員使用。
現今開發專案時都會利用第三方的library(jar),例如Spring Boot,Apache Commons,Hibernate,Log4j等,通常都會透過Maven在pom.xml
的<dependencies>
中加入所需要的依賴(jar)的Maven Coordinates(也就是groupId, artifactId, version所組成用來識別artifact的資訊)來引入這些要依賴的jar檔。
例如下面的pom.xml
加入了一個Apache Commons Lang3函式庫(jar)的依賴
<?xml version="1.0" encoding="UTF-8"?>
<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/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.abc</groupId>
<artifactId>banana</artifactId>
<version>0.0.1-SNAPSHOT</version>
<packaging>jar</packaging>
<name>banana</name>
<description>香蕉專案</description>
...
<dependencies>
...
<!-- Apache Commons Lang3依賴 -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<versoin>3.9</version>
</dependency>
...
</dependencies>
...
</project>
例如在Eclipse的Maven專案的pom.xml
加入依賴資訊後,Maven會試著從local repository下載該依賴的jar,若該依賴不在local repo中,就會從預設的remote repo(也就是Maven Central Repository)下載至local repo,然後再從local repo匯入專案。
你可以在Eclipse的Maven專案上按滑鼠右鍵Build Path -> Configure Build Path... -> Java Build Path
的[Libraries]頁籤下的[Maven Dependencies]下看到那些被引入的jar檔。
參考:
沒有留言:
張貼留言