不同的组织有不同的理由将构件部署至内部仓库。在有数百(或数千)开发人员的大型组织内,一个内部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
一起工作。
要部署一个发布版构件至Nexus,你需要配置你项目POM中distributionManagement
部分的repository
。Example 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可以支持多个宿主仓库;你不需要坚持在默认的releases
和snapshots
仓库上。你可以为不同的部门创建不同的宿主仓库,然后将多个仓库组合成一个单独的Nexus组。