Java 管理maven依赖性-新版本和非Repo库

Java 管理maven依赖性-新版本和非Repo库,java,maven-2,dependencies,Java,Maven 2,Dependencies,警告:我刚刚学习了Maven,所以提到的东西可能是错误的,或者不是最佳实践 我有一个中等规模的开源项目,我正在从基础迁移到Maven NetBeans项目管理。这不是一个开发团队共享同一个房间,而是1-5个人通过互联网共享一个SVN回购协议。阅读关于依赖项的how-tos,似乎获取依赖项的唯一方法是从在线repo获取它们或在本地安装它们 这不是我想要的。出于许多原因,我想保留SVN中的所有依赖项,包括可移植性(任何人都可以通过,查看repo、构建和使用;所有这些都不需要手动添加到本地repo等等

警告:我刚刚学习了Maven,所以提到的东西可能是错误的,或者不是最佳实践

我有一个中等规模的开源项目,我正在从基础迁移到Maven NetBeans项目管理。这不是一个开发团队共享同一个房间,而是1-5个人通过互联网共享一个SVN回购协议。阅读关于依赖项的how-tos,似乎获取依赖项的唯一方法是从在线repo获取它们或在本地安装它们

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

maven存储库的另一个问题是,它们的版本非常落后。例如,Logback就是一个例子。皮尔博特只不过是一个。为什么会有如此古老的版本

问题3是我的依赖关系在回购协议中根本不存在,比如

所以

  • 例如,如何强制所有依赖项来自
    /lib
  • 另一方面,mvn可以直接从图书馆的SVN repo构建吗?只是好奇
  • 如果依赖项站点/svn repo也使用Maven,是否有一种自动方式可以直接从依赖项站点/svn repo获取最新版本?IE库,如commons lang或logback
  • 有没有更好的方法来管理依赖关系?(如常春藤或我缺少的一些奇怪的POM选项)
  • 仅供参考,这是一个Java项目,包含3个模块,即项目全局依赖项和模块特定依赖项

    如果它可以与NetBeans附带的Maven捆绑版本一起使用,则可以获得额外的积分

    不是

    • -不希望安装到本地存储库
    • -不要认为系统依赖性是正确的答案
    • -仍然使用(?)存储库,只是最新(旧)版本
    这不是我想要的。我想保留SVN中的所有依赖项,原因有很多(…)

    我将回到这里,但是我在中描述的解决方案(使用基于文件的存储库)允许实现这样的解决方案

    maven存储库的另一个问题是,它们的版本非常落后。例如,在mvnbrowser中,Logback为0.9.18,但官方为0.9.24。PircBot在mvnbrowser中为1.4.6,但官方为1.5.0。为什么会有如此古老的版本

    看起来索引完全过时了(这使得它作为存储库搜索引擎毫无用处),因为确实有(logback项目正在做必须做的事情来实现这一点),但只有一个旧的索引。为什么?问问皮尔博特队。无论如何,您是对的,中央存储库可能并不总是有最终版本

    问题3是我的依赖关系甚至不存在于repo中,比如更简单的Java持久化

    是的,这种情况也会发生

    例如,如何强制所有依赖项来自/lib

    如前所述,您应该仔细阅读中建议的解决方案。此解决方案不是关于将库安装到本地存储库,而是关于使用基于文件的存储库(因此可以存储在SVN中)。您可能没有抓住要点,这与您的用例相匹配。并检查是否有变化

    另一方面,mvn可以直接从图书馆的SVN repo构建吗?只是好奇

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

    如果依赖项站点/svn repo也使用Maven,是否有一种自动方式可以直接从依赖项站点/svn repo获取最新版本?IE库,如commons lang或logback

    Maven支持并且您可以使用允许使用“大于X的任何版本”的语法。但是为了构建的可复制性,我不建议使用版本范围。您不希望构建突然失败,因为您的背部发生了一些自动更新。只有在需要修复bug或新功能时才升级,但要明确地进行(如果没有损坏,就不要修复)

    您还可以找到
    最新版本的
    发行版的
    版本标记。我不推荐它们,原因与上面相同,甚至更少

    有没有更好的方法来管理依赖关系?(如常春藤或我缺少的一些奇怪的POM选项)


    不能说是常春藤。但是在Maven领域,如果您不能为您的项目(Nexus、Archiva、Artifactory)建立一个“公司”存储库,那么基于文件的存储库是最好的方法。

    设置您自己的Maven存储库


    我将尝试这个方法,尤其是bretts的答案,因为EJP遍布整个项目。谢谢你的回答