我有几个关于maven最佳实践和管理存储库的问题。
在我的环境中,我不想去中央maven存储库,而是将所有内容存储在内部存储库中。我是否应该要求每个用户将信息放在settings.xml文件中,该文件禁止使用maven存储库中的快照或版本,或者它应该在POM文件中?
此外,我希望让用户都进入同一个公司存储库。这个存储库信息应该放在pom还是settings.xml中?如果它在pom中,maven将如何知道去存储库,因为它需要知道存储库在哪里获取pom?
答案 0 :(得分:11)
第一步:在局域网中的服务器上安装nexus。它非常好 - 易于安装(真的,只需几分钟!)而且非常坚固。我们有大约50名工程师和许多CI服务器,它们整天都在使用它,它已经稳定了好几个月。假设您已将其安装在DNS中名为“nexus.local”的服务器上。
第二步:从http://www.sonatype.com/books/nexus-book/reference/maven-sect-single-group.html复制settings.xml,根据需要修改主机名,将其提交到源代码系统,并告诉所有开发人员将其复制到他们的〜 /.m2/settings.xml。
第三步:正确设置项目的pom.xml。您需要一个“父POM”来定义“distributionManagement”部分,如下所示:
<distributionManagement>
<snapshotRepository>
<id>nexusSS</id>
<name>Nexus Snapshot Repository</name>
<url>http://nexus.local:8081/nexus/content/repositories/snapshots</url>
</snapshotRepository>
<repository>
<id>nexusRelease</id>
<name>Nexus Release Repository</name>
<url>http://nexus.local:8081/nexus/content/repositories/releases</url>
</repository>
</distributionManagement>
第四步:启用“mvn deploy” - 转到您的nexus用户界面(类似http://nexus.local:8081/nexus),点击用户,点击“部署”,然后输入密码。然后编辑你的〜/ .m2 / settings.xml并添加:
<settings>
...
<servers>
<server>
<id>nexus</id>
<username>deployment</username>
<password>PASSWORD</password>
</server>
</servers>
</settings>
通过运行“mvn deploy”检查它是否有效,您应该已将项目的工件安装到nexus中。
第五步:阅读maven的优秀文档:http://www.sonatype.com/products/maven/documentation/book-defguide
答案 1 :(得分:6)
在一个大型项目中,最好有几个存储库。
公司代理/缓存将在本地存储已下载的jar,以便公司不会依赖外部站点的可用性。它像普通的存储库一样被访问,但它是公共存储库的网关。
已发布库的公司存储库受到限制,它包含内部库。这些是从项目存储库“升级”到公司存储库的框架,因为它们对所有项目都有用。
项目存储库包含项目使用的工件。它可以包含子项目工件等。项目中的每个开发人员都应该能够在此处发布内容。
你放置设置的地方是品味问题。我把这些东西放在settings.xml中。因为如果内部存储库的地址发生变化,您将不得不修改项目。