java - 将公共(public) Maven 存储库用于库而不是本地的优点

标签 java git maven

与在本地存储您的库相比,使用 Maven 的公共(public)存储库有哪些优势?

我发现使用公共(public)存储库有以下缺点:

  • 如果出于某种原因更新了某些库,我的应用程序可能会崩溃,考虑到我有时会使用数百个库。
  • 如果指定特定库版本以避免更新版本破坏应用程序,则该特定版本可能不再可用。
  • 存储库可能总是会遇到网络问题或类似的错误,从而完全阻止软件的开发,通过 git 共享包含所有必需 jar 的本地 lib 文件夹更加可靠。

为了避免使用公共(public)仓库,我关注 this advice , 不过也有人建议

运行 Nexus 之类的东西,您自己的 maven 存储库,您可以上传第 3 方专有 jar 文件,并代理其他公共(public)存储库,以节省带宽?”。

这真的总结了我的疑惑:为什么要为了简单地与几个开发人员共享库文件而经历所有这些痛苦?

最佳答案

  • If for some reason some library is updated my application will probably crash, considering I use hundreds of libraries that's bound to happen sometime.

没有。我知道墨菲定律指出,任何可能发生的事情都会发生。但是在 Maven Central 中发布的库应该是稳定的。如果更新库,它将使用新版本,因此不会发生冲突。任何理智的图书馆维护者都不会反对这一点。

  • If a specific library version is specified to avoid newer versions to break the application, that specific version might not be available anymore.

没有。 You can't remove an artifact from Maven Central .所以这是不可能的。

  • The repositories might always be subject to network problems or similar error blocking development of the software completely, a local lib folder with all the required jars shared through git is more robust.

虽然这是真的,但 Maven 会在您的本地存储库中保留所有 Artifact 的缓存。它只需要下载一次。


使用内部存储库管理器的优势超出了缓存 Maven Central 的范围。它允许所有依赖项的中央入口点,无论这些依赖项是否是公共(public)的。它还可以托管内部库和私有(private)库(如 Oracle JDBC)。此外,使用它对于 Maven 项目是透明的:依赖项的声明方式完全相同,无论它是公共(public) Artifact 还是内部 Artifact 。

关于java - 将公共(public) Maven 存储库用于库而不是本地的优点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34179657/

相关文章:

java - 使用迭代器降序斐波那契数

java - OpenGL 深度缓冲区困惑

git - 如何修复断点文件中存在冲突的 Git merge ?

java - 如果 Artifact 是一个库,Maven 的 pom.xml 中是否需要 "main.class"XML 元素?

java - 如何循环猜谜游戏?

java - Android - TTS 将语言设置为 Locale.getDefault 没有互联网不可能吗?

git - 在命令行中编辑 Git 别名

git - 为什么有两种方法可以在 Git 中取消暂存文件?

java - Docker - Maven 在运行时连接到特定的存储库

java - Maven突然下载maven-clover2-plugin