我刚刚开始使用Maven,我被告知要在特定目录中执行mvn install
。
mvn install
到底做了什么?
我认为它在当前文件夹中查找pom.xml
并开始按照该文件中指定的说明进行操作。这是对的吗?
答案 0 :(得分:93)
正如您可能知道的那样,Maven是Apache提供的构建自动化工具,它不仅仅是依赖项管理。我们可以将它作为Ant和Makefile的对等体,它可以下载所需的所有依赖项。
在mvn install
上,它根据超级pom.xml
下的所有子项目(根POM)上的项目配置pom.xml
构建依赖关系树,并下载/编译所有用户文件夹下名为.m2
的目录中的所需组件。必须解决这些依赖项才能构建项目而不会出现任何错误,mvn install
是一个可以下载大多数依赖项的实用程序。
此外,Maven中还有其他类似dependency:resolve
的工具,可以在任何特定情况下单独使用。 mvn的构建生命周期如下:
process-resources
compile
process-test-resources
test-compile
test
package
install
deploy
使用标记-DskipTests=true
可以忽略此mvn的测试阶段。
答案 1 :(得分:28)
您是否查看了任何Maven文档,例如maven install plugin docs?
Nutshell版本:它将构建项目并将其安装在本地存储库中。
答案 2 :(得分:7)
它将运行与默认生命周期的任何阶段相关的所有已配置插件的所有目标,直到“安装”阶段:
https://maven.apache.org/guides/introduction/introduction-to-the-lifecycle.html#Lifecycle_Reference
答案 3 :(得分:2)
-DskipTests=true
是-Dmaven.test.skip=true
在 .m2 文件夹中对 Setting.xml 进行更改。您可以使用链接到本地仓库,这样一旦下载的罐子不应该一次又一次地下载。
<url>file://C:/Users/admin/.m2/repository</url>
</repository>
答案 4 :(得分:2)
install:install
目标由«Apache Maven Install Plugin»提供:
Apache Maven安装插件
在安装阶段使用Install Plugin将工件添加到本地存储库。 Install Plugin使用POM中的信息(
groupId
,artifactId
,version
)来确定本地存储库中工件的正确位置。本地存储库是本地缓存,其中存储构建所需的所有工件。默认情况下,它位于用户的主目录(
~/.m2/repository
)内,但可以使用~/.m2/settings.xml
元素在<localRepository>
中配置位置。
话虽如此,确切的目标是:
install:install
用于自动安装项目的主要工件(JAR,WAR或EAR),其POM以及由特定项目生成的任何附加工件(源,javadoc等)。
有关目标的其他详细信息,请参阅Apache Maven Install Plugin - install:install页。
有关构建生命周期的更多详细信息以及目标在构建生命周期中的位置,请参阅Maven – Introduction to the Build Lifecycle页面。
答案 5 :(得分:1)
在maven构建生命周期的任何阶段,都将执行所有先前的目标。
例如:mvn安装将调用mvn验证,mvn编译,mvn测试,mvn软件包等。
答案 6 :(得分:1)
需要指出的是,install
和 install:install
是不同的东西,install
是一个阶段,在这个阶段 maven 不仅仅是安装当前项目模块工件到本地存储库,它首先检查远程存储库。另一方面,install:install
是一个目标,它只是构建您当前的项目并将其所有工件安装到本地存储库(例如,安装到 .m2
目录中)。
答案 7 :(得分:0)
简短答案
MVN安装
- 将 pom 中指定的所有工件(依赖项)添加到本地 存储库(来自远程源)。
答案 8 :(得分:0)
mvn install 的主要工作是 1)下载依赖项和 2)构建项目
如今,工作1 受到了像intellij这样的ID的照顾(它们可以在POM上下载到任何依赖项)mvn安装现在主要用于 job 2 。