我刚开始使用 Maven,有人告诉我要mvn install
在特定目录中进行操作。
究竟是mvn install
做什么的?
我认为它pom.xml
在当前文件夹中查找并开始按照该文件中指定的说明进行操作。那是对的吗?
您可能知道,Maven 是 Apache 提供的一个构建自动化工具,它不仅仅做依赖管理。我们可以使它成为 Ant 和 Makefile 的对等体,它下载所需的所有依赖项。
在 a 上,它基于超级(根 POM)下所有子项目mvn install
的项目配置构建依赖关系树,并在用户文件夹下调用的目录中下载/编译所有需要的组件。必须解决这些依赖项才能构建项目而不会出现任何错误,并且是一种可以下载大多数依赖项的实用程序。pom.xml
pom.xml
.m2
mvn install
此外,Maven 中还有其他实用dependency:resolve
程序,可以在任何特定情况下单独使用。mvn 的构建生命周期如下:LifeCycle Bindings
process-resources
compile
process-test-resources
test-compile
test
package
install
deploy
这个 mvn 的测试阶段可以通过使用 flag 来忽略-DskipTests=true
。
您是否查看过任何 Maven 文档,例如Maven 安装插件文档?
Nutshell 版本:它将构建项目并将其安装在您的本地存储库中。
目标由install:install
«Apache Maven Install Plugin»提供:
Apache Maven 安装插件
在安装阶段使用安装插件将工件添加到本地存储库。安装插件使用 POM (
groupId
,artifactId
,version
) 中的信息来确定工件在本地存储库中的正确位置。本地存储库是存储构建所需的所有工件的本地缓存。默认情况下,它位于用户的主目录 (
~/.m2/repository
) 中,但可以~/.m2/settings.xml
使用该<localRepository>
元素配置该位置。
话虽如此,确切的目标目的:
install:install
用于自动安装项目的主要工件(JAR、WAR 或 EAR)、其 POM 和特定项目生成的任何附加工件(源代码、javadoc 等)。
有关目标的更多详细信息,请参阅Apache Maven 安装插件 - install:install页面。
有关构建生命周期的更多详细信息以及目标在构建生命周期中的位置,请参阅Maven – 构建生命周期简介页面。
它将运行与默认生命周期的任何阶段相关联的所有已配置插件的所有目标,直到“安装”阶段:
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
简短的回答
mvn 安装
- 将pom中指定的所有工件(依赖项)添加到本地 存储库(来自远程源)。
-DskipTests=true
是的缩写形式-Dmaven.test.skip=true
在.m2文件夹中的Setting.xml中进行更改。您可以使用指向本地 repo 的链接,这样一旦下载的 jars 就不会一次又一次地下载。
<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 不仅仅将当前项目模块工件安装到本地存储库,它首先检查远程存储库。另一方面,这install:install
是一个目标,它只是构建您当前的项目并将其所有工件安装到本地存储库(例如,安装到.m2
目录中)。
mvn install主要工作是1) 下载依赖项和2) 构建项目
而现在工作 1由 intellij 之类的 ID 负责(他们在 POM 下载任何依赖项)
mvn install 现在主要用于作业 2。