我有一台机器,其中执行多个并行Maven。每次执行都会在单独的工作空间目录中执行以下命令
mvn -f main/pom.xml clean package -DskipTests -T 6
有人可以让我知道我应该为每个执行使用单独的Maven本地存储路径(-Dmaven.repo.local=$MAVEN_REPO
),还是可以为所有并行运行使用公用的.m2
目录?遵循的惯例是什么?
答案 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中),并且没有并发下载( 本身有时会导致校验和错误。
格鲁斯·伯恩德