194

我刚开始使用 Maven,有人告诉我要mvn install在特定目录中进行操作。

究竟是mvn install做什么的?

我认为它pom.xml在当前文件夹中查找并开始按照该文件中指定的说明进行操作。那是对的吗?

4

9 回答 9

142

您可能知道,Maven 是 Apache 提供的一个构建自动化工具,它不仅仅做依赖管理。我们可以使它成为 Ant 和 Makefile 的对等体,它下载所需的所有依赖项。

在 a 上,它基于超级(根 POM)下所有子项目mvn install的项目配置构建依赖关系树,并在用户文件夹下调用的目录中下载/编译所有需要的组件。必须解决这些依赖项才能构建项目而不会出现任何错误,并且是一种可以下载大多数依赖项的实用程序。pom.xmlpom.xml.m2mvn 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

这个 mvn 的测试阶段可以通过使用 flag 来忽略-DskipTests=true

于 2012-09-13T13:13:15.537 回答
40

您是否查看过任何 Maven 文档,例如Maven 安装插件文档

Nutshell 版本:它将构建项目并将其安装在您的本地存储库中。

于 2012-05-10T12:21:20.557 回答
9

目标由install:install«Apache Maven Install Plugin»提供:

Apache Maven 安装插件

在安装阶段使用安装插件将工件添加到本地存储库。安装插件使用 POM ( groupId, artifactId, version) 中的信息来确定工件在本地存储库中的正确位置。

本地存储库是存储构建所需的所有工件的本地缓存。默认情况下,它位于用户的主目录 ( ~/.m2/repository) 中,但可以~/.m2/settings.xml使用该<localRepository>元素配置该位置。

Apache Maven 安装插件 - 简介

话虽如此,确切的目标目的:

install:install用于自动安装项目的主要工件(JAR、WAR 或 EAR)、其 POM 和特定项目生成的任何附加工件(源代码、javadoc 等)。

Apache Maven 安装插件 - 简介

有关目标的更多详细信息,请参阅Apache Maven 安装插件 - install:install页面。

有关构建生命周期的更多详细信息以及目标在构建生命周期中的位置,请参阅Maven – 构建生命周期简介页面。

于 2017-10-26T10:39:31.763 回答
8

它将运行与默认生命周期的任何阶段相关联的所有已配置插件的所有目标,直到“安装”阶段:

https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference

于 2012-05-10T12:42:35.537 回答
7

简短的回答

mvn 安装

  • 将pom中指定的所有工件(依赖项)添加到本地 存储库(来自远程源)。
于 2019-05-14T13:55:39.733 回答
3

-DskipTests=true是的缩写形式-Dmaven.test.skip=true

在.m2文件夹中的Setting.xml中进行更改。您可以使用指向本地 repo 的链接,这样一旦下载的 jars 就不会一次又一次地下载。

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>
于 2013-04-04T06:36:23.370 回答
2

在 maven 构建生命周期的任何阶段,都会执行之前的所有目标。

例如:mvn install 将调用 mvn validate、mvn compile、mvn test、mvn package 等。

于 2020-10-14T17:55:25.973 回答
1

重要的是要指出,install不同install:install的事情install是一个阶段,在这个阶段,maven 不仅仅将当前项目模块工​​件安装到本地存储库,它首先检查远程存储库。另一方面,这install:install是一个目标,它只是构建您当前的项目并将其所有工件安装到本地存储库(例如,安装到.m2目录中)。

于 2021-01-29T08:53:08.357 回答
0

mvn install主要工作是1) 下载依赖项2) 构建项目

而现在工作 1由 intellij 之类的 ID 负责(他们在 POM 下载任何依赖项)

mvn install 现在主要用于作业 2

于 2019-12-03T08:52:08.087 回答