16.7. 部署构件至Nexus

不同的组织有不同的理由将构件部署至内部仓库。在有数百(或数千)开发人员的大型组织内,一个内部Maven仓库可以是不同部门之间共享发布版和开发快照版本的有效手段。大部分使用Maven的组织最终都会开始将发布版本和构件部署到一个共享的内部仓库。使用Nexus,可以很容易的部署构件至一个宿主仓库。

要部署构件至Nexus,在distributionManagement中提供仓库URL,然后运行mvn deploy。Maven会通过一个简单的HTTP PUT将项目POM和构件推入至你的Nexus安装。最初版本的Nexus没有为宿主仓库提供任何的安全措施。如果你为宿主仓库开启了部署功能,任何人可以连接并部署构件至这个仓库。如果你的Nexus安装能够从公共Internet访问,你绝对会想要将这些仓库的部署功能关闭,或者将你的Nexus安装放到一个如Apache HTTPD的web服务器背后。

你项目的POM不再需要额外的wagon扩展。Nexus可以和Maven内置的wagon-http-lightweight一起工作。

16.7.1. 部署发布版

要部署一个发布版构件至Nexus,你需要配置你项目POMdistributionManagement部分的repositoryExample 16.4, “为部署配置发布版本仓库”显示了一个发布版部署仓库的样例,这个发布版本仓库的地址是http://localhost:8081/nexus/content/repositories/releases

Example 16.4. 为部署配置发布版本仓库

<project>
  ...
  <distributionManagement>
    ...
    <repository>
      <id>releases</id>
      <name>Internal Releases</name>
      <url>http://localhost:8081/nexus/content/repositories/releases</url>
    </repository>
    ...
  </distributionManagement>
  ...
</project>

你可以使用你Nexus安装的主机和端口来替换localhost:8081。你的项目有了这个配置之后,你就可以通过执行mvn deploy命令部署构件。

$ mvn deploy
[INFO] Scanning for projects...
[INFO] Reactor build order: 
[INFO]   Sample Project
[INFO] ------------------------------------------------------------------------
[INFO] Building Sample Project
[INFO]    task-segment: [deploy]
[INFO] ------------------------------------------------------------------------
[INFO] [site:attach-descriptor]
[INFO] [install:install]
[INFO] Installing ~/svnw/sample/pom.xml to ~/.m2/repository/sample/sample\
                                            /1.0/sample-1.0.pom
[INFO] [deploy:deploy]
altDeploymentRepository = null
[INFO] Retrieving previous build number from snapshots
Uploading: http://localhost:8081/nexus/content/repositories/releases/\
           sample/sample/1.0/sample-1.0.pom
24K uploaded

注意Nexus可以支持多个宿主仓库;你不需要坚持在默认的releasessnapshots仓库上。你可以为不同的部门创建不同的宿主仓库,然后将多个仓库组合成一个单独的Nexus组。