我刚开始使用Maven,并被告知在特定目录中执行mvn install。
mvn install
mvn install到底做什么?
我认为它在当前文件夹中寻找pom.xml,并开始遵循该文件中指定的说明。对吗?
pom.xml
你有没有看过任何Maven文档,例如Maven安装插件文档?
果壳版本:它将构建项目并将其安装在本地存储库中。
它将运行与默认生命周期的任何阶段相关的所有配置插件的所有目标,直到“安装”阶段:
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
您可能已经知道,Maven是Apache提供的构建自动化工具,它的功能不仅仅是依赖项管理。我们可以让它成为Ant和Makefile的对等体,后者可以下载所需的所有依赖项。
在mvn install上,它根据超级pom.xml(根POM)下所有子项目上的项目配置pom.xml构建依赖树,并在用户文件夹下名为.m2的目录中下载/编译所有所需的组件。这些依赖项将必须被解析,以便在没有任何错误的情况下构建项目,而mvn install是一个可以下载大多数依赖项的实用程序。
.m2
此外,Maven中还有其他utils,如dependency:resolve,可以在任何特定情况下单独使用。mvn的构建生命周期如下
dependency:resolve
process-resources
compile
process-test-resources
test-compile
test
package
install
deploy
这个mvn的测试阶段可以通过使用-DskipTests=true标志来忽略。
-DskipTests=true
-DskipTests=true是-Dmaven.test.skip=true的缩写形式
-Dmaven.test.skip=true
在.m2文件夹中的Setting.xml中进行更改。你可以使用链接到本地回购,这样罐子一旦下载不应该下载一遍又一遍。
<url>file://C:/Users/admin/.m2/repository</url> </repository>
install:install目标由«Apache Maven Install Plugin»提供:
install:install
Apache Maven安装插件 在安装阶段使用Install Plugin将工件添加到本地存储库。安装插件使用POM (groupId, artifactId, version)中的信息来确定本地存储库中工件的正确位置。 本地存储库是存储构建所需的所有工件的本地缓存。默认情况下,它位于用户的主目录(~/.m2/repository)中,但可以使用<localRepository>元素在~/.m2/settings.xml中配置位置。 ——Apache Maven安装插件-介绍。
在安装阶段使用Install Plugin将工件添加到本地存储库。安装插件使用POM (groupId, artifactId, version)中的信息来确定本地存储库中工件的正确位置。
groupId
artifactId
version
本地存储库是存储构建所需的所有工件的本地缓存。默认情况下,它位于用户的主目录(~/.m2/repository)中,但可以使用<localRepository>元素在~/.m2/settings.xml中配置位置。
~/.m2/repository
<localRepository>
~/.m2/settings.xml
——Apache Maven安装插件-介绍。
话虽如此,确切的目标目的是:
install:install用于自动安装项目的主工件(JAR, WAR或EAR),它的POM和任何由特定项目产生的附加工件(源代码,javadoc等)。 ——Apache Maven安装插件-介绍。
install:install用于自动安装项目的主工件(JAR, WAR或EAR),它的POM和任何由特定项目产生的附加工件(源代码,javadoc等)。
有关目标的更多细节,请参阅Apache Maven安装插件-安装:安装页。
有关构建生命周期的其他详细信息以及目标在构建生命周期中的位置,请参阅Maven -构建生命周期介绍页。
简短的回答
mvn install 将砰的一声中指定的所有工件(依赖项)添加到当地的 存储库(来自远程源)。
mvn install的主要工作是
1)下载依赖项
2)构建项目
而工作1现在由intellij这样的id负责(他们在POM下载任何依赖项)
mvn install现在主要用于工作2。
在maven构建生命周期的任何阶段,都会执行之前的所有目标。
例如:mvn安装将调用mvn验证,mvn编译,mvn测试,mvn包等。
重要的是要指出install和install:install是不同的东西,install是一个阶段,其中maven不仅仅将当前项目模块工件安装到本地存储库,它首先检查远程存储库。另一方面,install:install是一个目标,它只是构建你当前的项目,并将它的所有工件安装到本地存储库(例如到.m2目录)。