Maven最佳实践

11

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

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

另外,我希望所有用户都访问同一个公司仓库。这个仓库信息应该放在pom文件中还是settings.xml文件中?如果它在pom中,因为maven需要知道仓库的位置才能获取pom,那么maven会如何知道去哪个仓库?

2个回答

11

第一步: 在您的局域网服务器上安装nexus。它非常出色--易于安装(实际上只需要几分钟!)且稳定。我们有约50名工程师和许多CI服务器一整天都在使用它,而且已经稳定运行了好几个月。假设您将其安装在名为“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 UI(类似于 http://nexus.local:8081/nexus ),点击用户,点击 "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


3
“第四步”中,您希望服务器的 ID 与第三步中 distributionManagement 中的 ID 匹配吗? - Nicholas

6
在一个大型项目中,最好有几个代码库。
  1. 公司代理/缓存将下载的JAR包存储在本地,以便公司不会依赖外部站点的可用性。它像普通的代码库一样被访问,但是它是公共代码库的网关。

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

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

设置的放置位置是一个品味问题。我将这些东西放在settings.xml文件中。因为如果内部代码库的地址发生变化,否则你必须修改项目。


这一切都是正确的 - 我建议你去了解一下 Nexus(http://nexus.sonatype.org/),它是解决上述问题的好方案。 - Dominic Mitchell
谢谢。我一直在使用Apache的Archiva因为它的简单易用,但我也会研究Nexus。我们现在只是在进行一个相当小的项目,只是想尽早把这些东西放置好。 - Jeff Storey
一个演示这个的小pom.xml会是什么样子? - Thorbjørn Ravn Andersen

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接