

亚马逊 CodeCatalyst 不再向新买家开放。现有客户可以继续正常使用该服务。有关更多信息，请参阅 [如何从中迁移 CodeCatalyst](migration.md)。

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 使用 Maven 校验和与快照
<a name="packages-maven-checksums-snapshots"></a>

以下各节介绍如何在中使用 Maven 校验和和 Maven 快照。 CodeCatalyst

## 使用 Maven 校验和
<a name="maven-checksums"></a>

 将 Maven 包发布到 CodeCatalyst 包存储库时，将使用与包中每个*资产*或文件关联的校验和来验证上传。资产的例子包括 *jar*、*pom* 和 *war* 文件。对于每个资产，Maven 程序包都包含多个校验和文件，这些文件使用带有附加扩展名（例如 `md5` 或 `sha1`）的资产名称。例如，名为 `my-maven-package.jar` 的文件的校验和文件可能是 `my-maven-package.jar.md5` 和 `my-maven-package.jar.sha1`。

 每个 Maven 程序包还包含一个 `maven-metadata.xml` 文件。必须上传此文件才能成功发布。如果在上传任何程序包文件期间检测到校验和不匹配，则发布将停止。这可能会阻止上传 `maven-metadata.xml`。在发生此情况时，Maven 程序包的状态将设置为 `Unfinished`。您无法下载具有此状态的程序包中的资产。

如果在发布 Maven 程序包时出现校验和不匹配的情况，请记住以下几点：
+  如果在上传 `maven-metadata.xml` 之前出现校验和不匹配的情况，则程序包的状态不会设置为 `Unfinished`。程序包不可见，也无法使用其资产。在发生此情况时，请尝试以下方法之一，然后尝试再次下载资产。
  + 再次运行发布 Maven 程序包的命令。如果因网络问题导致校验和文件在下载期间损坏，此方法可能会起作用。如果已解决网络问题以进行重试，则校验和匹配且下载成功。
  +  如果重新发布 Maven 程序包不起作用，请删除该程序包，然后重新发布它。
+  如果在上传 `maven-metadata.xml` 之后出现校验和不匹配的情况，则程序包的状态会设置为 `Published`。您可以使用程序包中的任何资产，包括校验和不匹配的资产。下载资源时，生成的校验和会随 CodeCatalyst 之下载。如果下载的文件与校验和不匹配关联，则其下载的校验和文件可能与发布程序包时上传的校验和不匹配。

## 使用 Maven 快照
<a name="maven-snapshots"></a>

 Maven *快照*是 Maven 程序包的特殊版本，该版本引用了最新的生产分支代码。它是先于最终发布版本的开发版本。您可以通过附加到程序包版本的后缀 `SNAPSHOT` 来识别 Maven 程序包的快照版本。例如，版本 `1.1` 的快照是 `1.1-SNAPSHOT`。有关更多信息，请参阅 Apache Maven Project 网站上的 [What is a SNAPSHOT version?](https://maven.apache.org/guides/getting-started/index.html#What_is_a_SNAPSHOT_version)。

 CodeCatalyst 支持发布和使用 Maven 快照。您可以将 Maven 快照发布到 CodeCatalyst 存储库，或者（如果您直接连接）发布到上游存储库。但是，不支持程序包存储库及其某个上游存储库中的快照版本。例如，如果您将带有版本的 Maven 包上传`1.2-SNAPSHOT`到包存储库，则 CodeCatalyst 不支持将具有相同快照版本的 Maven 包上传到其上游存储库之一。在此场景中，可能会返回不可预测的结果。

 在发布 Maven 快照时，其先前版本将保留在名为*构建*的新版本中。每次发布 Maven 快照时，都会创建一个新的构建版本。快照的所有先前版本都保留在其构建版本中。发布 Maven 快照时，其状态将设置为 `Published`，包含先前版本的构建的状态设置为 `Unlisted`。

 如果您请求快照，则会返回状态为 `Published` 的版本。这始终是 Maven 快照的最新版本。您也可以请求快照的特定构建。

要删除 Maven 快照的所有构建版本，请使用 CodeCatalyst 控制台。