我有几个关于 Maven 最佳实践和管理存储库的问题。
在我的环境中,我不想去中央 maven 存储库,而是将所有内容存储在内部存储库中。我应该只要求每个用户将信息放入禁用使用来自 maven 存储库的快照或版本的 settings.xml 文件中,还是应该在 POM 文件中?
另外,我希望所有用户都访问同一个公司存储库。这个存储库信息应该放在 pom 中还是 settings.xml 中?如果它在 pom 中,maven 将如何知道去存储库,因为它需要已经知道存储库在哪里才能获取 pom?
我有几个关于 Maven 最佳实践和管理存储库的问题。
在我的环境中,我不想去中央 maven 存储库,而是将所有内容存储在内部存储库中。我应该只要求每个用户将信息放入禁用使用来自 maven 存储库的快照或版本的 settings.xml 文件中,还是应该在 POM 文件中?
另外,我希望所有用户都访问同一个公司存储库。这个存储库信息应该放在 pom 中还是 settings.xml 中?如果它在 pom 中,maven 将如何知道去存储库,因为它需要已经知道存储库在哪里才能获取 pom?
第一步:在 LAN 中的服务器上安装 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。您将需要一个定义“distributionManagement”部分的“父 POM”,如下所示:
<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 UI(类似http://nexus.local:8081/nexus),点击users,点击“deployment”,然后给它一个密码。然后编辑你的~/.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
在大型项目中,最好有多个存储库。
公司代理/缓存将在本地存储下载的 jar,这样公司就不会依赖外部站点的可用性。它像普通存储库一样被访问,但它是公共存储库的网关。
已发布库的公司存储库受到限制,它包含内部库。这些是从项目存储库“提升”到公司存储库的框架,因为它们对所有项目都有用。
项目存储库包含项目使用的工件。它可以包含子项目工件等。项目中的每个开发人员都应该能够在这里发布一些东西。
你把设置放在哪里是一个品味问题。我把这些东西放在settings.xml中。因为如果内部存储库的地址发生变化,您将不得不修改项目。