Maven 2 Maven存储库配置

Maven 2 Maven存储库配置,maven-2,settings,repository,Maven 2,Settings,Repository,我曾问过一个类似的问题,其中哪一部分得到了解决,但我想更详细地阐述一下 当配置maven查看内部存储库时,最好将该信息放在项目pom中还是放在用户的settings.xml中?解释一下为什么在这里会很有帮助 谢谢 Jeff我们使用用户的settings.xml,并在自述文件中包含可能需要其他回购的信息 理论上,给定的组工件版本是相同的,无论它来自哪个回购协议。这对我们很有效。如果您发现自己拥有两个具有相同组工件版本标识符的不同资产,那么这表明您做了一些非常糟糕的事情。我鼓励您将存储库定义放在PO

我曾问过一个类似的问题,其中哪一部分得到了解决,但我想更详细地阐述一下

当配置maven查看内部存储库时,最好将该信息放在项目pom中还是放在用户的settings.xml中?解释一下为什么在这里会很有帮助

谢谢


Jeff

我们使用用户的settings.xml,并在自述文件中包含可能需要其他回购的信息


理论上,给定的组工件版本是相同的,无论它来自哪个回购协议。这对我们很有效。如果您发现自己拥有两个具有相同组工件版本标识符的不同资产,那么这表明您做了一些非常糟糕的事情。

我鼓励您将存储库定义放在POM中,这样任何开发人员都只需获取代码的副本并运行Maven即可编译它,无需更改其设置文件中的内容

我发现setting.xml文件对于在特殊情况下攻击Maven的行为非常有用,例如,当一个存储库由于防火墙而无法访问时,您需要使用镜像。但这是我个人的看法。Maven文档为您提供了更多的自由:

中的设置元素 settings.xml文件包含元素 用于定义用于配置的值 Maven以各种方式执行,如 pom.xml,但不应捆绑 任何特定项目,或 分发给观众。这些 包括值,例如本地 存储库位置,备用远程 存储库服务器和身份验证 信息


如果您有一个在每个项目中使用的本地存储库,您可以在settings.xml中添加该存储库,只需确保配置有良好的文档记录即可,在我目前的项目中,情况并非如此,新开发人员在开始尝试编译某些东西时会遇到困难。

您应该始终尝试创建maven项目,以便它能够在本地环境中从源代码管理的干净签出中编译;不使用settings.xml。在我看来,这意味着您可以在user的settings.xml文件中对合理的默认值进行任何覆盖。但是pom应该包含适用于所有人的合理值。

谢谢!我希望将我的存储库信息保存在父pom中,但我有点犹豫是否使用父pom的相对路径,因为这需要用户也签出父项目。但是,如果我不使用相对路径,那么每个项目的POM必须具有回购信息,这样它至少可以找到父POM。您以前处理过这个问题吗?@Jeff只需确保父POM已将包定义为“POM”,这样它将作为POM定义安装在repo中