哪里是指定maven仓库,pom.xml或settings.xml的最佳位置?

哪里是最好的地方来指定所需的maven项目的仓库, pom.xmlsettings.xml ? 每个地点有什么优点和缺点? 什么是最佳做法?

在我看来,在POM中定义存储库是有好处的,原因如下:

  • 可重复性:相关的工件来自POM中明确声明的已知位置。 用户configuration不当的存储库也会导致问题的机会减less。
  • 可移植性:这个POM将build立在安装了maven的任何人的机器上。 对额外的用户configuration的存储库设置没有额外的要求。
  • 易于使用:新开发人员更容易检索和构build项目,因为安装的configuration较less。

也许一个问题是,如果版本库的位置将来发生变化,则需要安装代理,或者需要发布旧软件的补丁版本,以指定新的版本库位置(或者.m2/settings.xml始终可以提供额外的版本库最后的手段)。 然而,这似乎是在释放pipe理中的良好可重复性和可移植性的必要分支,而不是一个骗局。

任何其他的想法?

哪里是最好的地方来指定所需的maven项目的仓库,pom.xml或settings.xml? 每个地点有什么优点和缺点? 什么是最佳做法?

我个人定义项目pom.xml的特定项目所需的存储库,因为它保持构build的便携性。 只有在我看来, settings.xml文件应该用于用户特定的或者秘密的东西。 没有,要求用户添加存储库的位置,即使这是正确的logging,不知何故击败了一个maven的function(透明依赖处理),我不喜欢这个想法。

我可以想到使用settings.xml处理存储库的唯一“好”用例是当你有一个企业存储库,并希望Maven使用这个存储库而不是公共存储库。 例如,为了避免连接到任何公共存储库,您需要将公司存储库声明为所有这些存储库的镜像:

 <settings> ... <mirrors> <mirror> <id>proxy-of-entire-earth</id> <mirrorOf>*</mirrorOf> <name>Maven Repository Manager running on repo.mycompany.com</name> <url>http://repo.mycompany.com/proxy</url> </mirror> </mirrors> ... </settings> 

我build议阅读这篇关于这个主题的博客文章。

我总是把URL放在POM和密码settings.xml中。 如果将URL放在settings.xml中,则如果URL发生更改,则需要用户更新本地系统上的文件。 如果在您的POM中指定了URL,则可以更改它并推送新版本。 url的变化比大多数人预测的要多,当构build中断时会导致用户失望。

密码保存在settings.xml中,原因很明显。 密码不应该保存在版本控制中。 您需要密码才能将mvn部署function部署到远程存储库。