Maven最佳实践

Jef*_*rey 11 maven-2 repository maven

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

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

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

mrm*_*mrm 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.你需要一个"父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>
Run Code Online (Sandbox Code Playgroud)

第四步:启用"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>
Run Code Online (Sandbox Code Playgroud)

通过运行"mvn deploy"检查它是否有效,您应该已将项目的工件安装到nexus中.

第五步:阅读maven的优秀文档:http://www.sonatype.com/products/maven/documentation/book-defguide

  • 对于"第四步",您不希望服务器的ID与第三步中的distributionManagement中的ID匹配吗? (3认同)

Bru*_*ert 6

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

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

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

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

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