6.4.2 部署至远程仓库
在第6.3.4节中提到,私服的一大作用是部署第三方构件,包括组织内部生成的构件以及一些无法从外部仓库直接获取的构件。无论是日常开发中生成的构件,还是正式版本发布的构件,都需要部署到仓库中,供其他团队成员使用。
Maven除了能对项目进行编译、测试、打包之外,还能将项目生成的构建部署到仓库中。首先,需要编辑项目的pom.xml文件。配置distributionManagement元素见代码清单6-4。
代码清单6-4 在POM中配置构件部署地址
<project>
……
<distributionManagement>
<repository>
<id>proj-releases</id>
<name>Proj Release Repository</name>
<url>http://192.168.1.100/content/repositories/proj-releases</url>
</repository>
<snapshotRepository>
<id>proj-snapshots</id>
<name>Proj Snapshot Repository</name>
<url>http://192.168.1.100/content/repositories/proj-snapshots</url>
</snapshotRepository>
</distributionManagement>
……
</project>
distributionManagement包含repository和snapshotRepository子元素,前者表示发布版本构件的仓库,后者表示快照版本的仓库。关于发布版本和快照版本,第6.5节会详细解释。这两个元素下都需要配置id、name和url,id为该远程仓库的唯一标识,name是为了方便人阅读,关键的url表示该仓库的地址。
往远程仓库部署构件的时候,往往需要认证。配置认证的方式已在第6.4.1节中详细阐述,简而言之,就是需要在settings.xml中创建一个server元素,其id与仓库的id匹配,并配置正确的认证信息。不论从远程仓库下载构件,还是部署构件至远程仓库,当需要认证的时候,配置的方式是一样的。
配置正确后,在命令行运行mvn clean deploy,Maven就会将项目构建输出的构件部署到配置对应的远程仓库,如果项目当前的版本是快照版本,则部署到快照版本仓库地址,否则就部署到发布版本仓库地址。如下是部署一个快照版本的输出:
[INFO] Retrieving previous build number from proj-snapshots
Uploading:
http://192.168.1.100 /content/repositories/proj-snapshots/com/juven/mvnbook/
account/account-email/1.0.0-SNAPSHOT/account-email-1.0.0-2
0100103.150936-2.jar
6 KB uploaded at 727.8 KB/sec
[INFO] Retrieving previous metadata from proj-snapshots
[INFO] Uploading repository metadata for: 'artifact com.juven.mvnbook.account:account-
email '
[INFO] Uploading project information for account-email 1.0.0-20100103.150936-2
[INFO] Retrieving previous metadata from proj-snapshots
[INFO] Uploading repository metadata for: 'snapshot com.juven.mvnbook.account:account-
email:1.0.0-SNAPSHOT '
[INFO] ---------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ---------------------------------------------------------