Java 在maven中安装mvn到底做什么
我刚开始使用Maven,有人告诉我在一个特定的目录中安装Java 在maven中安装mvn到底做什么,java,maven,pom.xml,Java,Maven,Pom.xml,我刚开始使用Maven,有人告诉我在一个特定的目录中安装mvn mvn install到底做什么 我认为它会在当前文件夹中查找pom.xml,并开始按照该文件中指定的说明进行操作。这是正确的吗?您看过Maven的任何文档吗,例如 Nutshell版本:它将构建项目并将其安装到本地存储库中。它将运行与默认生命周期的任何阶段相关联的所有已配置插件的所有目标,直至“安装”阶段: 正如您所知,Maven是Apache提供的一种构建自动化工具,它的功能不仅仅是依赖关系管理。我们可以将其作为Ant和Make
mvn
mvn install
到底做什么
我认为它会在当前文件夹中查找
pom.xml
,并开始按照该文件中指定的说明进行操作。这是正确的吗?您看过Maven的任何文档吗,例如
Nutshell版本:它将构建项目并将其安装到本地存储库中。它将运行与默认生命周期的任何阶段相关联的所有已配置插件的所有目标,直至“安装”阶段:
正如您所知,Maven是Apache提供的一种构建自动化工具,它的功能不仅仅是依赖关系管理。我们可以将其作为Ant和Makefile的对等体,下载所需的所有依赖项 在
mvn安装
上,它基于superpom.xml
下的所有子项目上的项目配置pom.xml
(根pom)构建依赖关系树,并在用户文件夹下名为.m2
的目录中下载/编译所有需要的组件。必须解决这些依赖关系,才能在没有任何错误的情况下构建项目,mvn install
是一个可以下载大多数依赖关系的实用程序
此外,Maven中还有其他UTIL,如dependency:resolve
,可在任何特定情况下单独使用。mvn的构建生命周期如下:
流程资源
编译
过程测试资源
测试编译
测试
package
安装
部署
此mvn的测试阶段可以通过使用标志来忽略
-DskipTests=true
-DskipTests=true
是-Dmaven.test.skip=true
的缩写形式
在.m2文件夹中的Setting.xml中进行更改。您可以使用指向本地回购的链接,这样一旦下载的jar就不会被反复下载
<url>file://C:/Users/admin/.m2/repository</url>
</repository>
file://C:/Users/admin/.m2/repository
安装:安装目标由«Apache Maven安装插件»提供:
ApacheMaven安装插件
安装插件在安装阶段用于将工件添加到本地存储库。安装插件使用POM中的信息(groupId
,artifactId
,version
)来确定工件在本地存储库中的正确位置
本地存储库是存储构建所需的所有工件的本地缓存。默认情况下,它位于用户的主目录(~/.m2/repository
)中,但可以使用~/.m2/settings.xml
元素在~/.m2/settings.xml
中配置该位置
-
话虽如此,确切的目标是:
install:install
用于自动安装项目的主要工件(JAR、WAR或EAR)、其POM以及由特定项目生成的任何附加工件(源代码、javadoc等)
-
有关目标的更多详细信息,请参阅页面
有关构建生命周期的一般详细信息以及目标在构建生命周期中的位置,请参阅本页。简短回答
mvn安装
- 将pom中指定的所有工件(依赖项)添加到本地存储库中(来自远程源)
mvn安装主要任务是1)下载依赖项和2)构建项目 而作业1现在由intellij等ID负责(它们在POM下载任何依赖项)
mvn安装现在主要用于作业2。在maven构建生命周期的任何阶段,都会执行之前的所有目标
例如:mvn安装将调用mvn验证、mvn编译、mvn测试、mvn包等。需要指出的是,
install
和install:install
是不同的事情,install
是一个阶段,在这个阶段,maven所做的不仅仅是将当前项目模块工件安装到本地存储库,它首先检查远程存储库。另一方面,install:install
是一个目标,它只需构建当前项目并将其所有构件安装到本地存储库中(例如,安装到.m2
目录中)。假设您在开源库上运行“mvn install”。然后,在使用我们首先编译的开源库的项目上运行“mvn安装”。在运行“mvn安装”时,是否会首先在本地repo中查找JAR?或者它依赖于POM文件?@Kevin它应该先本地,因为这就是重点。如果它不在本地存储库中,它将查找您配置的任何存储库(或默认设置),如果找到它,将其安装到您的本地repo中。我怀疑您可以将其配置为总是跳过本地回购,尽管我不知道如何不查找它。您看过Maven的规范文档了吗?Apache的站点这样解释了mvn安装的目的:“在大多数情况下,安装:安装目标不需要任何配置,它需要在默认构建生命周期的安装阶段安装项目的POM和工件文件。”这是因为Apache的doc未能解释“mvn安装”的实际功能,所以喜欢这张海报的人和我自己都在寻找答案。这是一个非常合理的问题。请注意,如果您想跳过所有与测试相关的目标,请使用:-Dmaven.test.skip=true(而不是-DskipTests=true)。此答案无法说明install命令最终在本地安装工件,即在