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
所以
- 例如,如何强制所有依赖项来自
/lib
- 另一方面,mvn可以直接从图书馆的SVN repo构建吗?只是好奇
- 如果依赖项站点/svn repo也使用Maven,是否有一种自动方式可以直接从依赖项站点/svn repo获取最新版本?IE库,如commons lang或logback
- 有没有更好的方法来管理依赖关系?(如常春藤或我缺少的一些奇怪的POM选项)
仅供参考,这是一个Java项目,包含3个模块,即项目全局依赖项和模块特定依赖项
如果它可以与NetBeans附带的Maven捆绑版本一起使用,则可以获得额外的积分
不是
- Maven: add a dependency to a jar by relative path-不希望安装到本地存储库
- maven compile fails because i have a non-maven jar-不要认为系统依赖性是正确的答案
- maven look for new versions of dependencies-仍然使用(?)存储库,仅为最新(旧)版本
# 1 楼答案
设置您自己的Maven存储库
http://archiva.apache.org/
# 2 楼答案
我将回到这里,但是我在Maven: add a dependency to a jar by relative path中描述的解决方案(使用基于文件的存储库)允许实现这样的解决方案
看起来mvnbrowser索引完全过时了(这使得它作为存储库搜索引擎毫无用处),因为maven central repository确实有^{} (logback项目正在做必须做的事情来实现这一点),但只有一个旧的^{} 。为什么?问问皮尔博特队。无论如何,您是对的,中央存储库可能并不总是有最终版本
是的,这种情况也会发生
如前所述,您应该仔细阅读Maven: add a dependency to a jar by relative path中建议的解决方案。此解决方案不是关于将库安装到本地存储库,而是关于使用基于文件的存储库(因此可以存储在SVN中)。您可能没有抓住要点,这与您的用例相匹配。并检查Brett's answer是否有变化
我没有得到那个。你能澄清一下吗
Maven支持version ranges,您可以使用允许使用“大于X的任何版本”的语法。但是为了构建的可复制性,我不建议使用版本范围。您不希望构建突然失败,因为您的背部发生了一些自动更新。只有在需要修复bug或新功能时才升级,但要明确地进行升级(如果没有损坏,就不要修复它)
您还可以找到
LATEST
和RELEASE
版本标记中的mentions。我不推荐它们,原因与上面相同,甚至更不推荐,因为they're removed from Maven 3.x不能说是常春藤。但是在Maven领域,如果您不能为您的项目(Nexus、Archiva、Artifactory)建立一个“公司”存储库,那么基于文件的存储库是最好的方法