猿问

Maven 本地 repo 在一个通用的全局目录中用于多个并行执行

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

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

有人可以让我知道我应该为每次执行使用单独的 Maven 本地回购路径 ( ) 还是我可以为所有并行运行-Dmaven.repo.local=$MAVEN_REPO使用公共目录?.m2通常的做法是什么?

  • Maven 版本 3.5

  • Java 8


函数式编程
浏览 160回答 3
3回答

白衣染霜花

您不能在执行之间共享本地存储库。它们的实现无法容忍多个并发进程访问它们。您可以而且应该在 Internet 上的进程和存储库之间运行本地缓存存储库管理器。那是可以分享的。

Qyouu

这也在 maven用户邮件列表中进行了讨论。讨论总结你好,恰恰相反,在某些情况下,一个作业可能依赖于另一个作业的已安装工件,在这种情况下,您需要一个共享的 Repo。然而,这是糟糕的风格。在所有其他情况下,如果您有足够的空间,则可以使用执行程序本地或什至工作区本地本地存储库。避免并发访问的好处是你从一个工作到另一个工作的影响较小(特别是如果你使用快照或在不同 Repos 中具有相同版本的多个不同上游工件)并且没有并发下载(这本身有时会导致校验和错误)。问候伯恩德

猛跑小猪

我首先要说的是,可以为每个项目设置多个本地存储库或一个本地存储库。事实上,实现它的方法是为每个项目设置自己的 settings.xml。每个 settings.xml 都有一个指向不同路径的 localRepository 标签。运行项目的 Dmaven.repo.local=/path/to/repo 标志将执行指向具有特定本地存储库的 settings.xml。通常,根本不需要它。Maven 可以处理并行执行,并且为您的所有项目(其中安装和下载所有工件)提供一个中央本地存储库可以促进它们的处理并且不会缩短构建时间。它可以影响你的唯一方法是,如果你的一个项目需要另一个项目创建的工件——但这也不应该由多个本地存储库处理。
随时随地看视频慕课网APP

相关分类

Java
我要回答