如何为本地 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
- 使用 Nexus 或 Artifactory 等工具托管供共享使用的工件
- 如果这些工具不可用 - 使用一些具有 HTTP 访问权限的 Web 服务器并配置 Maven 从那里下载。
- 如果这是不可能的 - 指示开发人员 运行
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!
我们有本地网络,许多用户连接在一起。
我们可以访问 \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
- 使用 Nexus 或 Artifactory 等工具托管供共享使用的工件
- 如果这些工具不可用 - 使用一些具有 HTTP 访问权限的 Web 服务器并配置 Maven 从那里下载。
- 如果这是不可能的 - 指示开发人员 运行
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!