網頁

2019/4/21

Maven 什麼是Repository

在學習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檔。




參考:

沒有留言:

張貼留言