通用全局目录中的Maven本地存储库,用于多个并行执行

时间:2019-05-26 13:51:07

标签: java maven maven-3

我有一台机器,其中执行多个并行Maven。每次执行都会在单独的工作空间目录中执行以下命令

mvn -f main/pom.xml clean package -DskipTests -T 6

有人可以让我知道我应该为每个执行使用单独的Maven本地存储路径(-Dmaven.repo.local=$MAVEN_REPO),还是可以为所有并行运行使用公用的.m2目录?遵循的惯例是什么?

  • Maven版本3.5
  • Java 8

3 个答案:

答案 0 :(得分:1)

您不能在两次执行之间共享本地存储库。它们没有实现为允许多个并发进程访问它们。您可以并且应该在Internet上的进程和存储库之间运行本地缓存存储库管理器。可以共享。

答案 1 :(得分:0)

首先,我可以为每个项目设置多个本地存储库或一个本地存储库。 实际上,要做的方法是通过使用自己的settings.xml设置每个项目。 每个settings.xml将具有指向不同路径的localRepository标记。 用于运行项目的Dmaven.repo.local = / path / to / repo标志将执行指向具有特定本地存储库的settings.xml。

通常,完全不需要。 Maven可以处理并行执行,并为您的所有项目(安装和下载了所有工件的地方)提供一个中央本地存储库,可以简化其处理过程,并且不会缩短构建时间。 可能对您有影响的唯一方法是,如果您的一个项目需要另一个项目创建的工件-但这也不应该由多个本地存储库处理。

答案 2 :(得分:0)

这也已经在行家user mailing list中讨论过。讨论摘要

  

你好

     

反之亦然,在某些情况下,可能只有一份工作   依赖于另一个安装的工件,在这种情况下,您   需要一个共享的仓库。但是,这是不好的风格。在所有其他情况下   您可以使用执行程序甚至工作空间本地的本地存储库   你有足够的空间。

     

避免并发访问的优点是您获得的资源更少   一种工作对另一种工作的影响(尤其是如果您与   快照或具有相同版本的多个不同上游工件   在不同的Repos中),并且没有并发下载(   本身有时会导致校验和错误。

     

格鲁斯·伯恩德