Maven最佳实践

时间:2009-06-14 22:49:38

标签: maven maven-2 repository

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

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

此外,我希望让用户都进入同一个公司存储库。这个存储库信息应该放在pom还是settings.xml中?如果它在pom中,maven将如何知道去存储库,因为它需要知道存储库在哪里获取pom?

2 个答案:

答案 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)

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

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

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

  3. 项目存储库包含项目使用的工件。它可以包含子项目工件等。项目中的每个开发人员都应该能够在此处发布内容。

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