有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java管理与maven相关的新版本和非PO库

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

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

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

maven存储库的另一个问题是,它们的版本非常落后。例如,Logback是0.9.18 in mvnbrowser但是0.9.24 officially。皮尔博特是{a3}但{a4}。为什么会有如此古老的版本

问题3是我的依赖关系甚至不存在于回购协议中,比如Easier Java Persistence

所以

  1. 例如,如何强制所有依赖项来自/lib
  2. 另一方面,mvn可以直接从图书馆的SVN repo构建吗?只是好奇
  3. 如果依赖项站点/svn repo也使用Maven,是否有一种自动方式可以直接从依赖项站点/svn repo获取最新版本?IE库,如commons lang或logback
  4. 有没有更好的方法来管理依赖关系?(如常春藤或我缺少的一些奇怪的POM选项)

仅供参考,这是一个Java项目,包含3个模块,即项目全局依赖项和模块特定依赖项

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

不是


共 (2) 个答案

  1. # 2 楼答案

    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项目正在做必须做的事情来实现这一点),但只有一个旧的^{}。为什么?问问皮尔博特队。无论如何,您是对的,中央存储库可能并不总是有最终版本

    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的任何版本”的语法。但是为了构建的可复制性,我不建议使用版本范围。您不希望构建突然失败,因为您的背部发生了一些自动更新。只有在需要修复bug或新功能时才升级,但要明确地进行升级(如果没有损坏,就不要修复它

    您还可以找到LATESTRELEASE版本标记中的mentions。我不推荐它们,原因与上面相同,甚至更不推荐,因为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)

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