

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

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

# 将包发布到 CodeCatalyst 包存储库
<a name="package-publishing"></a>

 您可以使用包管理器工具将任何支持的软件 CodeCatalyst 包类型的版本发布到包存储库。发布程序包版本的步骤如下：

**将软件包版本发布到 CodeCatalyst 包存储库**

1. 如果还没有程序包存储库，请[创建一个程序包存储库](packages-repositories-create.md)。

1. 将您的程序包管理器连接到您的程序包存储库。有关如何将 npm 包管理器连接到软件 CodeCatalyst 包存储库的说明，请参阅[配置并使用 npm](packages-npm-use.md)。

1. 使用连接的程序包管理器发布您的程序包版本。

**Contents**
+ [发布和上游存储库](#package-publishing-upstreams)
+ [私有程序包和公有存储库](#package-publishing-upstreams-direct)
+ [覆盖程序包资产](#package-publishing-overwrite-assets)

## 发布和上游存储库
<a name="package-publishing-upstreams"></a>

在中 CodeCatalyst，您无法发布存在于可访问的上游存储库或公共存储库中的软件包版本。例如，假设您要将 npm 程序包 `lodash@1.0` 发布到程序包存储库 `myrepo`，并且 `myrepo` 通过配置为上游存储库的网关存储库连接到 npmjs.com。如果存在`lodash@1.0`于上游存储库或 npmjs.com 中，则`myrepo`通过发出 CodeCatalyst 409 冲突错误来拒绝任何向其发布的尝试。这有助于防止您意外发布与上游存储库中的程序包的名称和版本相同的程序包，这可能会导致意外行为。

您仍可以发布具有上游存储库中存在的程序包名称的其他版本。例如，如果 `lodash@1.0` 存在于上游存储库中，但 `lodash@1.1` 不存在该存储库中，则可以将 `lodash@1.1` 发布到下游存储库。

## 私有程序包和公有存储库
<a name="package-publishing-upstreams-direct"></a>

 CodeCatalyst 不会将存储在存储 CodeCatalyst 库中的软件包发布到公共存储库，例如 npmjs.com 或 Maven Central。 CodeCatalyst 将软件包从公共存储库导入 CodeCatalyst 存储库，但它不会将软件包朝相反的方向移动。您发布到 CodeCatalyst 存储库的包将保持私有状态，并且仅适用于存储库所属的 CodeCatalyst 项目。

## 覆盖程序包资产
<a name="package-publishing-overwrite-assets"></a>

 您无法重新发布已存在且包含不同内容的程序包资产。例如，假定您已经发布了一个具有 JAR 资产 `mypackage-1.0.jar` 的 Maven 程序包。仅当新旧资产的校验和完全相同时，您才能再次发布该资产。要重新发布包含新内容的相同资产，请先删除该程序包版本。尝试重新发布具有不同内容但名称相同的资产会导致出现 HTTP 409 冲突错误。

对于支持多种资产（Python 和 Maven）的程序包格式，您可以向现有程序包版本添加使用不同名称的新资产，前提是您拥有所需的权限。由于 npm 和每个软件包版本 NuGet 仅支持一个资产，因此要修改已发布的软件包版本，必须先将其删除。

 如果您尝试重新发布已存在的资产（例如 `mypackage-1.0.jar`），并且已发布资产和新资产的内容相同，则因为该操作具有幂等性，所以操作会成功。