gpt4 book ai didi

java - 管理 Maven 依赖关系 - 新版本和非 repo 库

转载 作者:行者123 更新时间:2023-11-29 06:20:21 25 4
gpt4 key购买 nike

警告:我刚刚开始使用 Maven,所以提到的内容可能是错误的或者不是最佳实践。

我有一个中等规模的开源项目,我正在从基础迁移到 MavenNetBeans 项目管理。这不是共享同一个房间的开发团队,而是 1-5 个人通过互联网共享一个 SVN 存储库。阅读有关依赖项的操作方法,似乎获得依赖项的唯一方法是从在线存储库获取它们或在本地安装它们。

这不是我要找的。我想将所有依赖项保留在 SVN 中,原因有很多,包括可移植性(任何人都可以通过、检查 repo 、构建和使用;所有这些都不需要手动添加到本地 repo 等等),获得更新的版本(下面讨论)和手动版本控制。

我对 maven 存储库的另一个问题是它们的版本非常落后。例如 Logback 是 0.9.18 in mvnbrowser但是0.9.24 officially . PircBot 是 1.4.6 in mvnbrowser但是1.5.0 officially .为什么这么旧的版本?

问题 3 是我的依赖项甚至不存在于存储库中,例如 Easier Java Persistence .

所以

  1. 例如,如何强制所有依赖项来自 /lib
  2. 相关说明,mvn 可以直接从库的 SVN 存储库构建吗?只是好奇
  3. 如果他们也使用 Maven,是否有一种自动方法可以直接从依赖站点/svn 存储库获取最新版本? IE 库,如 commons-lang 或 logback
  4. 是否有更好的管理依赖关系的方法? (我缺少 IE Ivy 或一些奇怪的 POM 选项)

仅供引用,这是一个包含 3 个模块、项目全局依赖项和模块特定依赖项的 Java 项目。

如果它可以与 NetBeans 附带的捆绑版本的 Maven 一起使用,则加分。

不重复

最佳答案

This is not what I was looking for. I want to keep all dependencies in the SVN for many reasons (...)

我会回来讨论这个,但我在 Maven: add a dependency to a jar by relative path 中描述的解决方案(使用基于文件的 存储库)允许实现这样的解决方案。

The other issue I have with the maven repository is that they are quite behind in versions. Logback for example is 0.9.18 in mvnbrowser but 0.9.24 officially. PircBot is 1.4.6 in mvnbrowser but 1.5.0 officially. Why such old versions?

看起来像mvnbrowser索引完全过时(使其作为存储库搜索引擎无用)因为maven central repository确实有 logback-core-0.9.24.jar (logback 项目正在做必须做的事情来实现这一点)但只有一个旧的 pircbot-1.4.2.jar .为什么?询问 pircbot 团队。无论如何,你是对的,中央存储库可能并不总是有最终版本。

Issue 3 is that I have dependencies that don't even exist in the repos, like Easier Java Persistence.

是的,这也会发生。

How can I force all dependencies to come from /lib for example

如前所述,您应该重新仔细阅读 Maven: add a dependency to a jar by relative path 中建议的解决方案.此解决方案不是关于将库安装到本地存储库,而是关于使用基于文件的存储库(因此可以存储在 SVN 中) .您可能错过了重点,这符合您的用例。还要检查 Brett's answer变化。

On a related note, can mvn build from library's SVN repo directly? Just curious

没有得到那个。你能澄清一下吗?

Is there an automatic way to get the newest version directly from a dependencies site/svn repo if they also use Maven? IE libraries like commons-lang or logback

Maven 支持 version ranges并且您可以使用允许使用“任何大于 X 的版本”的语法。但我完全不推荐使用版本范围,以实现构建的可重复性。您不希望构建因为发生在您身上的某些自动更新而突然失败。仅当您需要错误修复或新功能时才升级,但要明确地进行(如果它没坏,就不要修复它)。

您可能还会找到 mentions LATESTRELEASE 版本标记。出于与上述相同的原因,我不推荐它们,自 they're removed from Maven 3.x 以来甚至更少。 .

Is there a better way of managing dependencies? (IE Ivy or some weird POM option I'm missing)

不能说 Ivy 。但是在 Maven 领域,如果您不能为您的项目(Nexus、Archiva、Artifactory)托管“公司”存储库,那么基于文件的存储库是 IMO 的最佳方法。

关于java - 管理 Maven 依赖关系 - 新版本和非 repo 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3377020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com