11

我有几个关于 Maven 最佳实践和管理存储库的问题。

在我的环境中,我不想去中央 maven 存储库,而是将所有内容存储在内部存储库中。我应该只要求每个用户将信息放入禁用使用来自 maven 存储库的快照或版本的 settings.xml 文件中,还是应该在 POM 文件中?

另外,我希望所有用户都访问同一个公司存储库。这个存储库信息应该放在 pom 中还是 settings.xml 中?如果它在 pom 中,maven 将如何知道去存储库,因为它需要已经知道存储库在哪里才能获取 pom?

4

2 回答 2

11

第一步:在 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

于 2009-12-11T22:27:05.273 回答
6

在大型项目中,最好有多个存储库。

  1. 公司代理/缓存将在本地存储下载的 jar,这样公司就不会依赖外部站点的可用性。它像普通存储库一样被访问,但它是公共存储库的网关。

  2. 已发布库的公司存储库受到限制,它包含内部库。这些是从项目存储库“提升”到公司存储库的框架,因为它们对所有项目都有用。

  3. 项目存储库包含项目使用的工件。它可以包含子项目工件等。项目中的每个开发人员都应该能够在这里发布一些东西。

你把设置放在哪里是一个品味问题。我把这些东西放在settings.xml中。因为如果内部存储库的地址发生变化,您将不得不修改项目。

于 2009-06-14T23:18:33.383 回答