[英]What does mvn install in maven exactly do
我剛開始使用 Maven,有人告訴我在特定目錄中執行mvn install
。
mvn install
究竟做了什么?
我認為它會在當前文件夾中查找pom.xml
並按照該文件中指定的說明開始。 那是對的嗎?
您可能已經知道,Maven 是 Apache 提供的構建自動化工具,它的作用不僅僅是依賴管理。 我們可以使它成為 Ant 和 Makefile 的對等體,它會下載所需的所有依賴項。
在mvn install
,它基於項目配置pom.xml
在超級pom.xml
(根 POM)下的所有子項目上pom.xml
一個依賴樹,並在名為.m2
的目錄下下載/編譯所有需要的組件用戶的文件夾。 必須解決這些依賴項,才能在沒有任何錯誤的情況下構建項目,而mvn install
是一種可以下載大部分依賴項的實用程序。
此外,Maven 中還有其他實用程序,如dependency:resolve
,可以在任何特定情況下單獨使用。 mvn 的構建生命周期如下: LifeCycle Bindings
process-resources
compile
process-test-resources
test-compile
test
package
install
deploy
可以使用標志-DskipTests=true
忽略此 mvn 的測試階段。
您是否查看過任何 Maven 文檔,例如maven 安裝插件文檔?
Nutshell 版本:它將構建項目並將其安裝在您的本地存儲庫中。
它將運行與默認生命周期的任何階段相關的所有配置插件的所有目標,直到“安裝”階段:
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
install:install
目標由«Apache Maven Install Plugin»提供:
Apache Maven 安裝插件
在安裝階段使用安裝插件將工件添加到本地存儲庫。 安裝插件使用 POM 中的信息(
groupId
、artifactId
、version
)來確定本地存儲庫中工件的正確位置。本地存儲庫是本地緩存,其中存儲了構建所需的所有工件。 默認情況下,它位於用戶的主目錄 (
~/.m2/repository
) 中,但可以使用<localRepository>
元素在~/.m2/settings.xml
配置該位置。
話雖如此,確切的目標目的是:
install:install
用於自動安裝項目的主要工件(JAR、WAR 或 EAR)、它的 POM 以及由特定項目生成的任何附加工件(源代碼、javadoc 等)。
有關目標的其他詳細信息,請參閱Apache Maven 安裝插件 - install:install頁面。
有關構建生命周期的其他詳細信息以及目標在構建生命周期中的位置,請參閱Maven – 構建生命周期簡介頁面。
簡答
安裝
- 將pom 中指定的所有工件(依賴項)添加到本地存儲庫(來自遠程源)。
-DskipTests=true
是短形式-Dmaven.test.skip=true
在.m2文件夾中的Setting.xml中進行更改。 您可以使用本地存儲庫的鏈接,這樣一旦下載的 jar 就不應該一次又一次地下載。
<url>file://C:/Users/admin/.m2/repository</url>
</repository>
在 Maven 構建生命周期的任何階段,都會執行之前的所有目標。
例如:mvn install 將調用 mvn validate、mvn compile、mvn test、mvn package 等。
重要的是要指出install
和install:install
是不同的東西, install
是一個階段,其中 maven 不僅僅是將當前項目模塊 artifacs 安裝到本地存儲庫,它首先檢查遠程存儲庫。 另一方面, install:install
是一個目標,它只是構建您當前的項目並將它的所有工件安裝到本地存儲庫(例如到.m2
目錄中)。
mvn install主要工作是1) 下載依賴項和2) 構建項目
而現在作業 1由像 intellij 這樣的 ID 處理(它們在 POM 下載任何依賴項)
mvn install 現在主要用於作業 2 。
一般來說,我們應該使用mvn package
而不是mvn install
,我到處都看到這個錯誤
mvn install copy generated jar from target to.m2 repository,這可能會給開發者帶來一些問題
經過我 7 年以上的經驗,我建議開發人員使用mvn package
of mvn install
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.