簡體   English   中英

mvn install in maven到底做什么

[英]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

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. 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 中的信息( groupIdartifactIdversion )來確定本地存儲庫中工件的正確位置。

本地存儲庫是本地緩存,其中存儲了構建所需的所有工件。 默認情況下,它位於用戶的主目錄 ( ~/.m2/repository ) 中,但可以使用<localRepository>元素在~/.m2/settings.xml配置該位置。

-Apache Maven 安裝插件 - 介紹

話雖如此,確切的目標目的是:

install:install用於自動安裝項目的主要工件(JAR、WAR 或 EAR)、它的 POM 以及由特定項目生成的任何附加工件(源代碼、javadoc 等)。

-Apache Maven 安裝插件 - 介紹

有關目標的其他詳細信息,請參閱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 等。

重要的是要指出installinstall: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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM