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] ---------------------------------------------------------