Contents

# Maven 下載 Jar 方法

有時候需要手動下載特定的 jar 檔,或者將依賴複製到指定目錄,Maven 提供幾個實用的指令來完成這些任務。

下載單一 Jar 到本地 Repository

使用 mvn dependency:get

1
mvn dependency:get -Dartifact=groupId:artifactId:version

範例:下載 MySQL Connector

1
mvn dependency:get -Dartifact=mysql:mysql-connector-java:8.0.30

下載後 jar 會存放在本地 Maven Repository(預設位置 ~/.m2/repository)。

指定下載來源 Repository

1
2
3
mvn dependency:get \
  -Dartifact=mysql:mysql-connector-java:8.0.30 \
  -DremoteRepositories=https://repo1.maven.org/maven2

複製單一 Jar 到指定目錄

使用 mvn dependency:copy

1
2
3
mvn dependency:copy \
  -Dartifact=groupId:artifactId:version \
  -DoutputDirectory=./libs

範例:

1
2
3
mvn dependency:copy \
  -Dartifact=mysql:mysql-connector-java:8.0.30 \
  -DoutputDirectory=./libs

執行後 jar 會被複製到 ./libs 目錄。


下載所有依賴到指定目錄

使用 mvn dependency:copy-dependencies

pom.xml 定義好依賴後,可以一次把所有依賴下載到指定目錄:

1
mvn dependency:copy-dependencies -DoutputDirectory=./libs

常用選項:

1
2
3
4
5
6
7
8
9
# 只複製 compile scope 的依賴(排除 test、provided)
mvn dependency:copy-dependencies \
  -DoutputDirectory=./libs \
  -DincludeScope=compile

# 排除傳遞性依賴(只複製直接宣告的依賴)
mvn dependency:copy-dependencies \
  -DoutputDirectory=./libs \
  -DexcludeTransitive=true

在 pom.xml 中引入本地 Jar

如果有無法上傳到 Maven Repository 的 jar,可以透過 system scope 引入本地檔案:

1
2
3
4
5
6
7
<dependency>
    <groupId>com.example</groupId>
    <artifactId>my-library</artifactId>
    <version>1.0</version>
    <scope>system</scope>
    <systemPath>${project.basedir}/libs/my-library-1.0.jar</systemPath>
</dependency>

⚠️ 注意:system scope 不建議在正式專案使用,因為它依賴絕對路徑,容易在不同環境出現問題。建議改用 mvn install:install-file 將 jar 安裝到本地 Repository。

使用 install:install-file 安裝本地 Jar

1
2
3
4
5
6
mvn install:install-file \
  -Dfile=./libs/my-library-1.0.jar \
  -DgroupId=com.example \
  -DartifactId=my-library \
  -Dversion=1.0 \
  -Dpackaging=jar

安裝後就可以在 pom.xml 以正常方式引用:

1
2
3
4
5
<dependency>
    <groupId>com.example</groupId>
    <artifactId>my-library</artifactId>
    <version>1.0</version>
</dependency>

小結

需求 指令
下載單一 jar 到本地 Repository mvn dependency:get
複製單一 jar 到指定目錄 mvn dependency:copy
複製所有依賴到指定目錄 mvn dependency:copy-dependencies
安裝本地 jar 到 Repository mvn install:install-file