如何为本地 Maven 存储库设置网络路径 \\user023\share\folder

how to put network path for local maven repository \\user023\share\folder

我们有本地网络,许多用户连接在一起。 我们可以访问 \user023\share\folder\test.txt 之类的共享文件。 我如何使用此地址创建本地 Maven 存储库或如何使用 maven { url 'path to network address'} ?

注意:本地 Maven 存储库不是线程安全的。

如果您 运行 在同一个 Maven 本地存储库上同时构建多个,这可能会导致状态不一致。

所以在多个用户之间共享本地存储库不是一个好主意。

我完全同意我们的同事建议避免使用这种解决方案:

首先是本地仓库:

  • Local - 仅供开发人员更新此存储库。它 "multi-access" 不安全。 即使来自同一个 maven 进程的许多线程尝试将工件下载到它(或通常更改它),这有时也会有问题。我不是在说多JVM并发访问,它只是没有设计成这样。

  • Cache - 用于在编译和开发人员执行的其他任务期间快速访问。如果您使用分布式文件系统,它可能会减慢编译速度并且开发人员不会使用它。

因此,如果您的目标是

i need to publish my library on server and other user use it to build project

  1. 使用 Nexus 或 Artifactory 等工具托管供共享使用的工件
  2. 如果这些工具不可用 - 使用一些具有 HTTP 访问权限的 Web 服务器并配置 Maven 从那里下载。
  3. 如果这是不可能的 - 指示开发人员 运行 mvn install 每个新版本的共享资源。然后他们将在本地存储库中获得可复制版本的应用程序。

当然选项 3 是一个非常糟糕的选项,选项 2 好得多,但是选项 1 是你能得到的最好的。

干脆退出:

maven{url'file:///[Path-to-Repo]'}

例如: 如果您的回购位于 '\Sever\Developer Repos\m2':

您 build.gradle 的存储库部分中的 maven 参考如下所示:

maven { url 'file:///Sever/Developer%2520Repos/m2'}

一些注意事项:.

  • 建议按照其他人的建议设置 'real' 存储库。 如果那是不可能的,那么你自己进入剩下的部分 风险。
  • 在您的路径中使用“/”字符。
  • 文件名中的空格需要用它们的 unicode 转义等效项指定。
  • m2 存储库需要是具有适当文件结构、.pom 文件等的实际 Maven 存储库
  • 当有多个用户使用此 repo 时,切勿使用构建脚本写入这样的 repo。这肯定会导致至少一部分回购的腐败。事实上,如果可能的话,我会将文件结构锁定为只读,以防止这种情况发生,并在必要时强制手动更新存储库。
  • 此信息适用于 gradle 6.3 和 android 3.6.3 gradle 构建工具。这在过去已经中断,因此请务必在您的项目中使用 gradle 包装器,以确保在您前进时构建兼容性。

哦,对于那些主动提出意见的人:如果您不知道答案或不愿分享,则无需 post!