有時候需要手動下載特定的 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 |