mvn在maven中安装的功能是什么


Answers:


124

您可能已经知道,Maven是Apache提供的构建自动化工具,它不仅执行依赖管理。我们可以将其作为Ant和Makefile的对等节点,以下载所需的所有依赖项。

在上mvn install,它基于pom.xml超级目录pom.xml(根POM)下所有子项目的项目配置来构建依赖关系树,并.m2在用户文件夹下的目录中下载/编译所有需要的组件。这些依赖关系将必须得到解决,才能生成没有任何错误的项目,并且mvn install是可以下载大多数依赖关系的实用程序。

此外,Maven中还有其他类似的工具dependency:resolve,可以在任何特定情况下单独使用。mvn的构建生命周期如下:LifeCycle绑定

  1. process-resources
  2. compile
  3. process-test-resources
  4. test-compile
  5. test
  6. package
  7. install
  8. deploy

可以通过使用flag忽略此mvn的测试阶段-DskipTests=true


9
附带说明一下,如果您想跳过所有与测试相关的目标,请使用:-Dmaven.test.skip = true(而不是-DskipTests = true)
Manoj Shrestha

该答案无法说明install命令最终工件安装在本地,即本地存储库中。
PeriChandra

34

您是否看过任何Maven文档,例如maven安装插件文档

果壳版本:它将构建项目并将其安装在本地存储库中。


假设您在开源库上运行“ mvn install”。然后,在使用我们首先编译的开源库的项目上运行“ mvn install”。运行“ mvn install”时,将首先在本地存储库中查找JAR吗?还是取决于POM文件?
凯文·梅雷迪斯

1
@Kevin应该先本地化,因为这很重要。如果不在本地存储库中,它将查找您已配置的任何存储库(或默认存储库),并将其安装到本地存储库(如果找到)。我怀疑您可以将其配置为始终跳过本地存储库,尽管我不知道如何查找它。
戴夫牛顿

17
是否查看过有关Maven的规范文档?Apache的站点因此解释了mvn安装的目的:“在大多数情况下,install:install目标不需要任何配置,它需要在默认构建生命周期的安装阶段中安装项目的POM和工件文件。” 这是因为Apache的文档无法解释'mvn install'的实际作用,所以海报者和我本人都在寻找答案。完全合理的问题。
bethesdaboys


6

install:install目标是由《 Apache Maven安装插件》提供的:

Apache Maven安装插件

在安装阶段使用“安装插件”将工件添加到本地存储库。安装插件使用的信息在POM( ,groupIdartifactId),version以确定当地的仓库里的神器的适当位置。

本地存储库是本地缓存,用于存储构建所需的所有工件。默认情况下,它位于用户的主目录(~/.m2/repository)中,但是可以~/.m2/settings.xml使用<localRepository>元素。

Apache Maven安装插件-简介

话虽如此,确切的目标目的是:

install:install 用于自动安装项目的主要工件(JAR,WAR或EAR),其POM以及特定项目产生的任何附加工件(源代码,javadoc等)。

Apache Maven安装插件-简介

有关目标的更多详细信息,请参阅Apache Maven安装插件-install:install页面。

有关一般构建生命周期以及目标在构建生命周期中所处位置的其他详细信息,请参阅Maven –“构建生命周期简介”页面。



2

-DskipTests=true 是以下形式的缩写 -Dmaven.test.skip=true

.m2文件夹中的Setting.xml中进行更改。您可以使用指向本地存储库的链接,这样就不会一次下载一次下载的jar。

<url>file://C:/Users/admin/.m2/repository</url>
 </repository>

0

mvn install主要工作是1)下载依赖项2)构建项目

如今,工作1由诸如intellij之类的ID负责(他们可以下载POM上的任何依赖项)

mvn install现在主要用于作业2

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.