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