

Amazon CodeCatalyst ist nicht mehr offen für Neukunden. Bestandskunden können den Service weiterhin wie gewohnt nutzen. Weitere Informationen finden Sie unter [Wie migriert man von CodeCatalyst](migration.md).

Die vorliegende Übersetzung wurde maschinell erstellt. Im Falle eines Konflikts oder eines Widerspruchs zwischen dieser übersetzten Fassung und der englischen Fassung (einschließlich infolge von Verzögerungen bei der Übersetzung) ist die englische Fassung maßgeblich.

# Veröffentlichen und teilen Sie Softwarepakete in CodeCatalyst
<a name="packages"></a>

Amazon bietet CodeCatalyst einen vollständig verwalteten Paket-Repository-Service, der es Ihrem Entwicklungsteam erleichtert, Softwarepakete, die für die Anwendungsentwicklung verwendet werden, sicher zu speichern und gemeinsam zu nutzen. Diese Pakete werden in Paket-Repositorys gespeichert, die innerhalb von Projekten in CodeCatalyst erstellt und organisiert werden.

Ein einzelnes Paket-Repository kann Pakete aller unterstützten Pakettypen speichern. CodeCatalyst unterstützt die folgenden Paketformate:
+ NPM
+ Maven
+ NuGet
+ Python

Pakete in einem Paket-Repository können entdeckt und von Mitgliedern des Projekts, das das Repository enthält, gemeinsam genutzt werden.

Um Pakete in einem Repository zu veröffentlichen und Pakete aus einem Repository zu konsumieren, konfigurieren Sie einen Paketmanager so, dass er den Repository-Endpunkt (URL) verwendet. Anschließend können Sie den Paketmanager verwenden, um Pakete im Repository zu veröffentlichen. Sie können Paketmanager wie Maven, Gradle, npm, yarn, nuget, dotnet, pip und twine verwenden.

Sie können Workflows auch für die Verwendung von Paket-Repositorys konfigurieren. CodeCatalyst CodeCatalyst Weitere Informationen zur Verwendung von Paketen in Workflows finden Sie unter[Paket-Repositorys mit Workflows verbinden](workflows-packages.md).

Sie können Pakete in einem Paket-Repository für ein anderes Repository im selben Projekt verfügbar machen, indem Sie es als Upstream-Repository hinzufügen. Alle Paketversionen, die für das Upstream-Repository verfügbar sind, sind auch für das Downstream-Repository verfügbar. Weitere Informationen finden Sie unter [Konfiguration und Verwendung von Upstream-Repositorys](packages-upstream-repositories.md).

Sie können Open-Source-Pakete für Ihr CodeCatalyst Repository verfügbar machen, indem Sie einen speziellen Repository-Typ, ein sogenanntes **Gateway**, erstellen. Durch Upstreaming in ein Gateway-Repository können Sie Pakete aus beliebten öffentlichen Repositorien wie npmjs.com und pypi.org nutzen und sie automatisch in Ihrem Repository zwischenspeichern. CodeCatalyst Weitere Informationen finden Sie unter [Verbindung mit öffentlichen externen Repositorys herstellen](packages-connect-external.md).

**Topics**
+ [Paketkonzepte](packages-concepts.md)
+ [Konfiguration und Verwendung von Paket-Repositorys](packages-repositories.md)
+ [Konfiguration und Verwendung von Upstream-Repositorys](packages-upstream-repositories.md)
+ [Verbindung mit öffentlichen externen Repositorys herstellen](packages-connect-external.md)
+ [Pakete veröffentlichen und ändern](working-with-packages.md)
+ [Verwenden von npm](packages-npm.md)
+ [Maven verwenden](packages-maven.md)
+ [Benutzen NuGet](packages-nuget.md)
+ [Verwenden von Python](packages-python.md)
+ [Kontingente für Pakete](packages-quotas.md)

# Paketkonzepte
<a name="packages-concepts"></a>

Im Folgenden finden Sie einige Konzepte und Begriffe, die Sie bei der Verwaltung, Veröffentlichung oder Nutzung von Paketen kennen sollten CodeCatalyst.

## Pakete
<a name="packages-concepts-packages"></a>

Ein *Paket* ist ein Paket, das sowohl Software als auch die Metadaten enthält, die für die Installation der Software und die Auflösung aller Abhängigkeiten erforderlich sind. CodeCatalyst unterstützt das npm-Paketformat.

Ein Paket besteht aus:
+ Ein Name (`webpack`ist zum Beispiel der Name eines beliebten npm-Pakets)
+ Ein optionaler [Namespace](#packages-concepts-package-namespaces) (zum Beispiel in) `@types` `@types/node`
+ Eine Reihe von [Versionen](#packages-concepts-package-versions) (zum Beispiel, `1.0.0``1.0.1`,`1.0.2`)
+ Metadaten auf Paketebene (z. B. npm dist-Tags)

## Paket-Namespaces
<a name="packages-concepts-package-namespaces"></a>

Einige Paketformate unterstützen hierarchische Paketnamen, um Pakete in logische Gruppen zu organisieren und Namenskollisionen zu vermeiden. Pakete mit demselben Namen können in verschiedenen Namespaces gespeichert werden. Beispielsweise unterstützt npm Bereiche, und das npm-Paket `@types/node` hat den Bereich und den Namen. `@types` `node` Es gibt viele andere Paketnamen im Gültigkeitsbereich. `@types` CodeCatalystIn wird der Bereich („Typen“) als Paket-Namespace und der Name („Knoten“) als Paketname bezeichnet. Bei Maven-Paketen entspricht der Paket-Namespace der Maven-GroupID. Das Maven-Paket `org.apache.logging.log4j:log4j` hat eine GroupID (Paket-Namespace) von `org.apache.logging.log4j` und die ArtifactID (Paketname). `log4j` Einige Paketformate wie Python unterstützen keine hierarchischen Namen mit einem ähnlichen Konzept wie npm scope oder Maven GroupID. Wenn Sie keine Möglichkeit haben, Paketnamen zu gruppieren, kann es schwieriger sein, Namenskollisionen zu vermeiden.

## Paketversionen
<a name="packages-concepts-package-versions"></a>

Eine *Paketversion* identifiziert die spezifische Version eines Pakets, z. B. `@types/node@12.6.9` Das Format und die Semantik der Versionsnummer variieren je nach Paketformat. Beispielsweise müssen npm-Paketversionen der [Semantic](https://semver.org/) Versioning-Spezifikation entsprechen. In CodeCatalyst besteht eine Paketversion aus der Versionskennung, package-version-level Metadaten und einer Reihe von Assets.

## Objekte
<a name="packages-concepts-assets"></a>

Ein *Asset* ist eine einzelne Datei CodeCatalyst , die in einer Paketversion gespeichert ist, z. B. eine `.tgz` NPM-Datei oder eine Maven-POM- oder JAR-Datei.

## Paket-Repositorys
<a name="packages-concepts-repository"></a>

Ein CodeCatalyst *Paket-Repository* enthält eine Reihe von [Paketen](#packages-concepts-packages), die [Paketversionen](#packages-concepts-package-versions) enthalten, von denen jede einer Reihe von [Assets](#packages-concepts-assets) zugeordnet ist. Paket-Repositorys sind polyglot, was bedeutet, dass ein einzelnes Repository Pakete aller unterstützten Typen enthalten kann. Jedes Paket-Repository stellt Endpunkte zum Abrufen und Veröffentlichen von Paketen mithilfe von Tools wie NuGet CLIs (`nuget`,`dotnet`), der `npm` CLI, der Maven-CLI (`mvn`) und Python CLIs (und) zur Verfügung. `pip` `twine` Informationen zu Paketkontingenten in CodeCatalyst, einschließlich der Anzahl der Paket-Repositorys, die in jedem Bereich erstellt werden können, finden Sie unter. [Kontingente für Pakete](packages-quotas.md)

Sie können ein Paket-Repository mit einem anderen verknüpfen, indem Sie es als Upstream-Repository einrichten. Wenn ein Repository als Upstream-Repository festgelegt ist, können Sie jedes Paket aus dem Upstream-Repository sowie alle zusätzlichen Upstream-Repositorys in der Kette verwenden. Weitere Informationen finden Sie unter [Upstream-Repositorien](#packages-concepts-upstream-repositories).

Gateway-Repositorien sind eine spezielle Art von Paket-Repositorys, die Pakete von offiziellen externen Paketbehörden abrufen und speichern. Weitere Informationen finden Sie unter [Gateway-Repositorys](#packages-concepts-gateway-repositories).

## Upstream-Repositorien
<a name="packages-concepts-upstream-repositories"></a>

Sie können CodeCatalyst es verwenden, um eine Upstream-Beziehung zwischen zwei Paket-Repositorys herzustellen. Ein Paket-Repository ist ein *Upstream-Repository* eines anderen, wenn auf die darin enthaltenen Paketversionen vom Paket-Repository-Endpunkt des Downstream-Repositorys aus zugegriffen werden kann. Bei einer Upstream-Beziehung werden die Inhalte der beiden Paket-Repositorien aus Sicht eines Kunden effektiv zusammengeführt.

Wenn ein Paketmanager beispielsweise eine Paketversion anfordert, die in einem Repository nicht existiert, durchsucht er CodeCatalyst dann konfigurierte Upstream-Repositorys nach der Paketversion. Upstream-Repositorys werden in der Reihenfolge durchsucht, in der sie konfiguriert wurden. Sobald ein Paket gefunden wurde, CodeCatalyst wird die Suche beendet. 

## Gateway-Repositorys
<a name="packages-concepts-gateway-repositories"></a>

Ein *Gateway-Repository* ist eine spezielle Art von Paket-Repository, das mit einer unterstützten externen, offiziellen Paketautorität verbunden ist. Wenn Sie ein Gateway-Repository als [Upstream-Repository](#packages-concepts-upstream-repositories) hinzufügen, können Sie Pakete von der entsprechenden offiziellen Paketbehörde verwenden. Ihr Downstream-Repository kommuniziert nicht mit dem öffentlichen Repository, sondern alles wird vom Gateway-Repository vermittelt. Auf diese Weise verbrauchte Pakete werden sowohl im Gateway-Repository als auch im Downstream-Repository gespeichert, das die ursprüngliche Anfrage erhalten hat.

Gateway-Repositorys sind vordefiniert, müssen aber in jedem Projekt erstellt werden, damit sie verwendet werden können. Die folgende Liste enthält alle Gateway-Repositorys, in denen sie erstellt werden können, CodeCatalyst sowie die Package Authority, mit der sie verbunden sind.
+ **npm-public-registry-gateway**stellt npm-Pakete von npmjs.com bereit.
+ **maven-central-gateway**stellt Maven-Pakete aus dem Maven Central-Repository bereit.
+ **google-android-gateway**bietet Maven-Pakete von Google Android.
+ **commonsware-gateway** bietet Maven-Pakete von. CommonsWare
+ **gradle-plugins-gateway**stellt Maven-Pakete von Gradle Plugins zur Verfügung.
+ **nuget-gallery-gateway**stellt NuGet Pakete aus der Galerie zur NuGet Verfügung.
+ **pypi-gateway** stellt Python-Pakete aus dem Python Package Index zur Verfügung.

# Konfiguration und Verwendung von Paket-Repositorys
<a name="packages-repositories"></a>

In CodeCatalyst werden Pakete in Paket-Repositorys gespeichert und verwaltet. Um Pakete in einem CodeCatalyst ( CodeCatalyst oder einem unterstützten öffentlichen Paket-Repositorium) zu veröffentlichen oder Pakete daraus zu konsumieren, müssen Sie ein Paket-Repository erstellen und Ihren Paketmanager damit verbinden.

**Topics**
+ [Ein Paket-Repository erstellen](packages-repositories-create.md)
+ [Verbinden mit einem Paket-Repository](packages-repositories-connect.md)
+ [Löschen eines Paket-Repositorys](packages-repositories-delete.md)

# Ein Paket-Repository erstellen
<a name="packages-repositories-create"></a>

Führen Sie die folgenden Schritte aus, um ein Paket-Repository in zu erstellen CodeCatalyst.

**Um ein Paket-Repository zu erstellen**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Navigieren Sie zu dem Projekt, in dem Sie ein Paket-Repository erstellen möchten.

1. Wählen Sie im Navigationsbereich **Pakete** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** die Option **Paket-Repository erstellen** aus.

1. Fügen Sie im Abschnitt **Paket-Repository-Details** Folgendes hinzu:

   1. **Name des Repositorys**. Erwägen Sie die Verwendung eines aussagekräftigen Namens mit Details wie Ihrem Projekt- oder Teamnamen oder der Art und Weise, wie das Repository verwendet werden soll.

   1. (Optional) **Beschreibung**. Eine Repository-Beschreibung ist besonders hilfreich, wenn Sie mehrere Repositorys für mehrere Teams in einem Projekt haben.

1. Wählen Sie im Abschnitt **Upstream-Repositorys** die **Option Upstream-Repositories auswählen aus**, um alle Paket-Repositorys hinzuzufügen, auf die Sie über Ihr Paket-Repository zugreifen möchten. CodeCatalyst **Sie können **Gateway-Repositorys hinzufügen, um eine Verbindung zu externen Paket-Repositorys** oder anderen Repositorys herzustellen. CodeCatalyst **

   1. Wenn ein Paket aus einem Paket-Repository angefordert wird, werden die Upstream-Repositorys in der Reihenfolge durchsucht, in der sie in dieser Liste erscheinen. Sobald ein Paket gefunden wurde, CodeCatalyst wird die Suche beendet. Um die Reihenfolge der Upstream-Repositorys zu ändern, können Sie die Repositorys per Drag-and-Drop in die Liste ziehen.

1. Wählen Sie **Erstellen**, um Ihr Paket-Repository zu erstellen.

# Verbinden mit einem Paket-Repository
<a name="packages-repositories-connect"></a>

Um Pakete zu veröffentlichen oder von dort aus zu konsumieren CodeCatalyst, müssen Sie Ihren Paketmanager mit den Endpunktinformationen und CodeCatalyst Anmeldeinformationen Ihres Paket-Repositorys konfigurieren. Wenn Sie noch kein Repository erstellt haben, können Sie dies tun, indem Sie den Anweisungen unter folgen[Ein Paket-Repository erstellen](packages-repositories-create.md).

Anweisungen dazu, wie Sie einen Paketmanager mit einem CodeCatalyst Paket-Repository verbinden, finden Sie in der folgenden Dokumentation.
+ [Konfiguration und Verwendung von Gradle Groovy](packages-maven-gradle.md)
+ [Konfiguration und Verwendung von mvn](packages-maven-mvn.md)
+ [Konfiguration und Verwendung der Nuget- oder Dotnet-CLI](packages-nuget-cli.md)
+ [Konfiguration und Verwendung von npm](packages-npm-use.md)
+ [Pip konfigurieren und Python-Pakete installieren](packages-python-pip.md)
+ [Twine konfigurieren und Python-Pakete veröffentlichen](packages-python-twine.md)

# Löschen eines Paket-Repositorys
<a name="packages-repositories-delete"></a>

Führen Sie die folgenden Schritte aus, um ein Paket-Repository in zu löschen CodeCatalyst.

**Um ein Paket-Repository zu löschen**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Navigieren Sie zu dem Projekt, das das Paket-Repository enthält, das Sie löschen möchten.

1. Wählen Sie im Navigationsbereich **Pakete** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Repository aus, das Sie löschen möchten.

1. Wählen Sie **Löschen** aus.

1. Lesen Sie die bereitgestellten Informationen zu den Auswirkungen des Löschens eines Paket-Repositorys.

1. Geben Sie es `delete` in das Eingabefeld ein und wählen Sie **Löschen**.

# Konfiguration und Verwendung von Upstream-Repositorys
<a name="packages-upstream-repositories"></a>

Sie können sowohl Gateway-Repositorys als auch andere CodeCatalyst Paket-Repositorys als Upstreams mit Ihren Paket-Repositorys verbinden. Dadurch kann ein Paketmanager-Client über einen einzigen Paket-Repository-Endpunkt auf die Pakete zugreifen, die in mehr als einem Paket-Repository enthalten sind. Im Folgenden sind die Hauptvorteile der Verwendung von Upstream-Repositorys aufgeführt:
+ Sie müssen Ihren Paketmanager nur mit einem einzigen Repository-Endpunkt konfigurieren, um Daten aus mehreren Quellen abrufen zu können.
+ Pakete, die aus einem Upstream-Repository abgerufen werden, werden in Ihrem Downstream-Repository gespeichert. Dadurch wird sichergestellt, dass Ihre Pakete auch dann verfügbar sind, wenn es im Upstream-Repository zu unerwarteten Ausfällen kommt oder Pakete im Upstream-Repository gelöscht werden.

Sie können Upstream-Repositorys hinzufügen, wenn Sie ein Paket-Repository erstellen. Sie können in der Konsole auch Upstream-Repositorys zu vorhandenen Paket-Repositorys hinzufügen oder daraus entfernen. CodeCatalyst 

Wenn Sie ein Gateway-Repository als Upstream-Repository hinzufügen, wird das Paket-Repository mit dem entsprechenden öffentlichen Paket-Repository des Gateway-Repositorys verbunden. Eine Liste der unterstützten öffentlichen Paket-Repositorys finden Sie unter[Unterstützte externe Paket-Repositorys und ihre Gateway-Repositorys](packages-connect-external.md#packages-upstream-repositories-supported-external).

Sie können mehrere Repositorys als Upstream-Repositorys miteinander verknüpfen. Nehmen wir zum Beispiel an, dass Ihr Team ein Repository mit dem Namen erstellt `project-repo` und bereits ein anderes Repository mit dem Namen verwendet`team-repo`, dem das als Upstream-Repository **npm-public-registry-gateway**hinzugefügt wurde, das mit dem öffentlichen NPM-Repository verbunden ist. `npmjs.com` Sie können es `team-repo` als Upstream-Repository zu `project-repo` hinzufügen. In diesem Fall müssen Sie nur Ihren Paketmanager so konfigurieren, dass er Pakete aus`project-repo`, `team-repo``npm-public-registry-gateway`, und abrufen kann`npmjs.com`. `project-repo`

**Topics**
+ [Ein Upstream-Repository hinzufügen](packages-upstream-repositories-add.md)
+ [Die Suchreihenfolge von Upstream-Repositorys bearbeiten](packages-upstream-repositories-search-order.md)
+ [Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md)
+ [Entfernen eines Upstream-Repositorys](packages-upstream-repositories-remove.md)

# Ein Upstream-Repository hinzufügen
<a name="packages-upstream-repositories-add"></a>

Wenn Sie Ihrem Downstream-Repository ein öffentliches CodeCatalyst Paket-Repository oder ein anderes Paket-Repository als Upstream-Repository hinzufügen, werden alle Pakete im Upstream-Repository für Paketmanager verfügbar, die mit dem Downstream-Repository verbunden sind.

**Um ein Upstream-Repository hinzuzufügen**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Paket-Repository aus, dem Sie ein Upstream-Repository hinzufügen möchten.

1. Wählen Sie unter dem Namen des Paket-Repositorys **Upstreams** und **dann Select Upstream** Repositories aus.

1. **Wählen Sie unter Upstream-Typ** auswählen eine der folgenden Optionen aus:
   + **Gateway-Repositorys**

     Sie können aus einer Liste verfügbarer Gateway-Repositorys wählen.
**Anmerkung**  
Um eine Verbindung zu öffentlichen externen Paketbehörden wie Maven Central, npmjs.com oder Nuget Gallery herzustellen, CodeCatalyst verwendet Gateway-Repositorys als Zwischenrepositorys, die Pakete suchen und speichern, die aus externen Repositorys abgerufen wurden. Dies spart Zeit und Datenübertragung, da alle Paket-Repositorys in einem Projekt Pakete aus dem Gateway-Zwischenrepository verwenden. Weitere Informationen finden Sie unter [Verbindung mit öffentlichen externen Repositorys herstellen](packages-connect-external.md).
   + **CodeCatalyst Repositorien**

     Sie können aus einer Liste verfügbarer CodeCatalyst Paket-Repositorys in Ihrem Projekt wählen.

1. **Wenn Sie alle Repositorys ausgewählt haben, die Sie als Upstream-Repositorys hinzufügen möchten, wählen **Sie Auswählen** und dann Speichern.**

   Weitere Informationen zum Ändern der Suchreihenfolge von Upstream-Repositorys finden Sie unter. [Die Suchreihenfolge von Upstream-Repositorys bearbeiten](packages-upstream-repositories-search-order.md)

Wenn Sie ein Upstream-Repository hinzugefügt haben, können Sie einen Paketmanager verwenden, der mit Ihrem lokalen Repository verbunden ist, um Pakete aus dem Upstream-Repository abzurufen. Sie müssen Ihre Paketmanager-Konfiguration nicht aktualisieren. Weitere Hinweise zum Anfordern von Paketversionen aus einem Upstream-Repository finden Sie unter[Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md).

# Die Suchreihenfolge von Upstream-Repositorys bearbeiten
<a name="packages-upstream-repositories-search-order"></a>

CodeCatalyst durchsucht Upstream-Repositorys in ihrer konfigurierten Suchreihenfolge. Wenn ein Paket gefunden wird, wird die Suche CodeCatalyst beendet. Sie können die Reihenfolge ändern, in der die Upstream-Repositorys nach Paketen durchsucht werden.

**Um die Suchreihenfolge der Upstream-Repositorys zu bearbeiten**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Paket-Repository aus, dessen Upstream-Repository-Suchreihenfolge Sie bearbeiten möchten.

1. Wählen Sie unter dem Namen des Paket-Repositorys die Option **Upstreams** aus.

1. Im Abschnitt **Upstream-Repositorys** können Sie die Upstream-Repositorys und ihre Suchreihenfolge einsehen. Um die Suchreihenfolge zu ändern, ziehen Sie die Repositorys per Drag-and-Drop in die Liste.

1. **Wenn Sie mit der Bearbeitung der Suchreihenfolge der Upstream-Repositorys fertig sind, wählen Sie Speichern.**

# Eine Paketversion mit Upstream-Repositorys anfordern
<a name="packages-upstream-repositories-request"></a>

Das folgende Beispiel zeigt die möglichen Szenarien, wenn ein Paketmanager ein Paket aus einem CodeCatalyst Paket-Repository anfordert, das über Upstream-Repositorys verfügt.

In diesem Beispiel fordert ein Paketmanager beispielsweise eine Paketversion von einem Paket-Repository mit dem Namen an`npm`, `downstream` das mehrere Upstream-Repositorys hat. Wenn das Paket angefordert wird, kann Folgendes passieren:
+  Wenn es die angeforderte Paketversion `downstream` enthält, wird es an den Client zurückgegeben. 
+  Wenn `downstream` es die angeforderte Paketversion nicht enthält, CodeCatalyst wird in `downstream` den Upstream-Repositorys in der konfigurierten Suchreihenfolge danach gesucht. Wenn die Paketversion gefunden wird, wird ein Verweis darauf `downstream` kopiert und die Paketversion wird an den Client zurückgegeben. 
+  Wenn keines `downstream` der Upstream-Repositorys die Paketversion enthält, wird eine `Not Found` HTTP-404-Antwort an den Client zurückgegeben.

 Die maximale Anzahl von direkten Upstream-Repositorys, die für ein Repository zulässig sind, ist 10. Die maximale Anzahl von Repositorys, in denen CodeCatalyst gesucht wird, wenn eine Paketversion angefordert wird, ist 25. 

## Aufbewahrung von Paketen aus Upstream-Repositorys
<a name="package-retention-upstream-repos"></a>

Wenn eine angeforderte Paketversion in einem Upstream-Repository gefunden wird, wird ein Verweis darauf beibehalten und ist immer in dem Repository verfügbar, das sie angefordert hat. Dadurch wird sichergestellt, dass Sie Zugriff auf Ihre Pakete haben, falls es zu einem unerwarteten Ausfall des Upstream-Repositorys kommt. Die beibehaltene Paketversion ist von keinem der folgenden Faktoren betroffen: 
+  Das Upstream-Repository wird gelöscht. 
+  Trennen des Upstream-Repositorys vom Downstream-Repository. 
+  Löschen der Paketversion aus dem Upstream-Repository. 
+  Bearbeiten der Paketversion im Upstream-Repository (z. B. durch Hinzufügen eines neuen Assets). 

## Pakete über eine Upstream-Beziehung abrufen
<a name="fetching-packages-through-an-upstream-relationship"></a>

CodeCatalyst kann Pakete über mehrere verknüpfte Repositorys abrufen, die als Upstream-Repositorys bezeichnet werden. Wenn ein CodeCatalyst Paket-Repository eine Upstream-Verbindung zu einem anderen CodeCatalyst Paket-Repository hat, das eine Upstream-Verbindung zu einem Gateway-Repository hat, werden Anfragen für Pakete, die sich nicht im Upstream-Repository befinden, aus dem externen Repository kopiert. Stellen Sie sich zum Beispiel die folgende Konfiguration vor: Ein Repository mit dem Namen `repo-A` hat eine Upstream-Verbindung zum Gateway-Repository,`npm-public-registry-gateway`. `npm-public-registry-gateway`hat eine Upstream-Verbindung zum öffentlichen Paket-Repository, [https://npmjs.com](https://npmjs.com).

![\[Einfaches Upstream-Repository-Diagramm, das drei miteinander verkettete Repositorys zeigt.\]](http://docs.aws.amazon.com/de_de/codecatalyst/latest/userguide/images/packages/upstream-with-external.png)


Wenn `npm` es für die Verwendung des `repo-A` Repositorys konfiguriert ist, `npm install` initiiert das Ausführen das Kopieren von Paketen aus dem [https://npmjs.com](https://npmjs.com)`npm-public-registry-gateway` Die installierten Versionen werden ebenfalls abgerufen. `repo-A` Das folgende Beispiel wird installiert`lodash`.

```
$ npm config get registry
https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/
$ npm install lodash
+ lodash@4.17.20
added 1 package from 2 contributors in 6.933s
```

`repo-A`Enthält nach der Ausführung `npm install` nur die neueste Version (`lodash 4.17.20`), da dies die Version ist, die `npm` von `repo-A` abgerufen wurde.

 Da `npm-public-registry-gateway` über eine externe Upstream-Verbindung verfügt [https://npmjs.com](https://npmjs.com), werden alle Paketversionen, aus [https://npmjs.com](https://npmjs.com)denen importiert wurde, in `npm-public-registry-gateway` gespeichert. Diese Paketversionen könnten von jedem Downstream-Repository abgerufen worden sein, zu `npm-public-registry-gateway` dem eine Upstream-Verbindung führt. 

Der Inhalt von `npm-public-registry-gateway` bietet Ihnen die Möglichkeit, alle Pakete und Paketversionen zu sehen, aus denen [https://npmjs.com](https://npmjs.com)im Laufe der Zeit importiert wurde.

## Aufbewahrung von Paketen in Zwischenrepositorien
<a name="package-retention-intermediate-repositories"></a>

 CodeCatalyst ermöglicht es Ihnen, Upstream-Repositorys zu verketten. `repo-A`Kann beispielsweise `repo-B` als Upstream-Repository und `repo-B` als Upstream-Repository verwendet werden. `repo-C` Diese Konfiguration macht die Paketversionen in `repo-B` und `repo-C` verfügbar von`repo-A`. 

![\[Einfaches Upstream-Repository-Diagramm, das drei miteinander verkettete Repositorys zeigt.\]](http://docs.aws.amazon.com/de_de/codecatalyst/latest/userguide/images/packages/upstream-chaining.png)


 Wenn ein Paketmanager eine Verbindung zum Repository herstellt `repo-A` und eine Paketversion aus dem Repository abruft`repo-C`, wird die Paketversion nicht im Repository gespeichert. `repo-B` Die Paketversion wird nur im Repository gespeichert, das sich am weitesten unten befindet, was in diesem Beispiel der Fall ist. `repo-A` Sie wird in keinen Zwischenrepositorien aufbewahrt. Dies gilt auch für längere Ketten. Wenn es beispielsweise vier Repositorien gäbe:`repo-A`,, und`repo-B`, `repo-C` und ein Paketmanager`repo-D`, der verbunden ist, um eine Paketversion `repo-A` abzurufen`repo-D`, würde die Paketversion in oder gespeichert, `repo-A` aber nicht in oder. `repo-B` `repo-C` 

Das Verhalten bei der Paketaufbewahrung ist ähnlich, wenn eine Paketversion aus einem öffentlichen Paket-Repository abgerufen wird, mit der Ausnahme, dass die Paketversion immer im Gateway-Repository aufbewahrt wird, das die direkte Upstream-Verbindung zum öffentlichen Repository hat. `repo-A`Hat `repo-B` zum Beispiel ein Upstream-Repository. `repo-B`hat `npm-public-registry-gateway` als Upstream-Repository, das über eine Upstream-Verbindung zum öffentlichen Repository **npmjs.com** verfügt; siehe Abbildung unten.

![\[Das Upstream-Repository-Diagramm zeigt drei miteinander verkettete Repositorys mit einer externen Upstream-Verbindung zu npmjs.com.\]](http://docs.aws.amazon.com/de_de/codecatalyst/latest/userguide/images/packages/upstream-chaining-external.png)


 **Wenn ein Paketmanager, der eine Verbindung herstellt, eine bestimmte Paketversion `repo-A` anfordert, zum Beispiel *Lodash 4.17.20*, und die Paketversion in keinem der drei Repositorys vorhanden ist, wird sie von npmjs.com abgerufen.** **Wenn *Lodash 4.17.20* abgerufen wird, wird es beibehalten, da es das am weitesten nachgeschaltete Repository ist und `repo-A` `npm-public-registry-gateway` da es die Upstream-Verbindung zum öffentlichen externen Repository npmjs.com hat.** *lodash 4.17.20* wird nicht beibehalten, da es sich um ein Zwischenarchiv handelt. `repo-B` 

# Entfernen eines Upstream-Repositorys
<a name="packages-upstream-repositories-remove"></a>

Wenn Sie nicht mehr auf die Pakete in einem Upstream-Repository zugreifen möchten, können Sie das Upstream-Repository aus einem Paket-Repository entfernen.

**Warnung**  
Wenn Sie ein Upstream-Repository entfernen, könnten Sie Upstream-Beziehungsketten unterbrechen, was wiederum Ihre Projekte oder Builds zerstören könnte.

**Um ein Upstream-Repository zu entfernen**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Paket-Repository aus, aus dem Sie ein Upstream-Repository entfernen möchten.

1. Wählen Sie unter dem Namen des Paket-Repositorys die Option **Upstreams** aus.

1. Suchen **Sie im Abschnitt Upstream-Repositorys bearbeiten** das Upstream-Repository, das Sie entfernen möchten, und wählen Sie es aus. ![\[Remove\]](http://docs.aws.amazon.com/de_de/codecatalyst/latest/userguide/images/packages/remove.png)

1. **Wenn Sie mit dem Entfernen der Upstream-Repositorys fertig sind, wählen Sie Speichern.**

# Verbindung mit öffentlichen externen Repositorys herstellen
<a name="packages-connect-external"></a>

Sie können CodeCatalyst Paket-Repositorys mit unterstützten öffentlichen, externen Repositorys verbinden, indem Sie das entsprechende Gateway-Repository als Upstream-Repository hinzufügen. Gateway-Repositorys fungieren als Zwischenrepositorien, die Pakete suchen und speichern, die aus externen Repositorys abgerufen wurden. Dies spart Zeit und Datenübertragung, da alle Paket-Repositorys in einem Projekt gespeicherte Pakete aus dem Gateway-Repository verwenden können.

**Um mithilfe von Gateway-Repositorys eine Verbindung zu einem öffentlichen Repository herzustellen**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie unter **Pakete** die Seite **Gateway-Repositorys** aus. Sie können eine Liste der unterstützten Gateway-Repositorys und deren Beschreibungen einsehen. 

1. Um ein Gateway-Repository verwenden zu können, müssen Sie es zunächst erstellen. Wenn das Gateway-Repository erstellt wurde, werden Datum und Uhrzeit der Erstellung angezeigt. Ist dies nicht der Fall, wählen Sie **Create**, um es zu erstellen.

1. Um Pakete aus dem Gateway-Repository zu verwenden, müssen Sie von einem Repository aus eine Upstream-Verbindung zu dem CodeCatalyst Repository einrichten. Wählen Sie **Package Repositories** und wählen Sie das Paket-Repository aus, zu dem Sie eine Verbindung herstellen möchten.

1. Um eine Verbindung zum öffentlichen Repository herzustellen, wählen Sie **Upstreams und **dann Select Upstream-Repositories**** aus.

1. Wählen Sie **Gateway-Repositories** aus. Wählen Sie das Gateway-Repository aus, das dem öffentlichen Repository entspricht, zu dem Sie sich als Upstream-Repository verbinden möchten.

1. **Wenn Sie alle Gateway-Repositorys ausgewählt haben, die Sie als Upstream-Repositorys hinzufügen möchten, wählen Sie Select.**

1. **Wenn Sie mit der Bestellung der Upstream-Repositorys fertig sind, wählen Sie Speichern.**

Weitere Informationen zu Upstream-Repositorys finden Sie unter. [Konfiguration und Verwendung von Upstream-Repositorys](packages-upstream-repositories.md)

Wenn Sie ein Gateway-Repository als Upstream-Repository hinzugefügt haben, können Sie einen Paketmanager verwenden, der mit Ihrem lokalen Repository verbunden ist, um Pakete aus dem entsprechenden öffentlichen, externen Paket-Repository abzurufen. Sie müssen Ihre Paketmanager-Konfiguration nicht aktualisieren. Auf diese Weise verbrauchte Pakete werden sowohl im Gateway-Repository als auch in Ihrem lokalen Paket-Repository gespeichert. Weitere Hinweise zum Anfordern von Paketversionen aus einem Upstream-Repository finden Sie unter[Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md).

## Unterstützte externe Paket-Repositorys und ihre Gateway-Repositorys
<a name="packages-upstream-repositories-supported-external"></a>

CodeCatalyst unterstützt das Hinzufügen einer Upstream-Verbindung zu den folgenden offiziellen Paketautoritäten mit Gateway-Repositorys.


| Repository-Pakettyp | Description | Name des Gateway-Repository | 
| --- | --- | --- | 
| NPM | öffentliches NPM-Register | npm-public-registry-gateway | 
| Python | Python-Paketindex | pypi-gateway | 
| Maven | Maven Central | maven-central-gateway | 
| Maven | Google Android-Repositorium | google-android-gateway | 
| Maven | CommonsWare | commonsware-gateway | 
| Maven | Repository für Gradle-Plugins | gradle-plugins-gateway | 
| NuGet | NuGet Bildergalerie | nuget-gallery-gateway | 

# Pakete veröffentlichen und ändern
<a name="working-with-packages"></a>

Ein *Paket* in CodeCatalyst ist ein Paket aus Software und Metadaten, das zur Auflösung von Abhängigkeiten und zur Installation der Software erforderlich ist. Eine Liste der unterstützten Paketformate in CodeCatalyst finden Sie unter[Veröffentlichen und teilen Sie Softwarepakete in CodeCatalyst](packages.md). Dieser Abschnitt enthält Informationen zum Veröffentlichen, Anzeigen und Löschen von Paketen und zum Aktualisieren des Status einer Paketversion.

**Topics**
+ [Pakete in einem CodeCatalyst Paket-Repository veröffentlichen](package-publishing.md)
+ [Details zur Paketversion anzeigen](working-with-packages-view.md)
+ [Löschen einer Paketversion](working-with-packages-delete.md)
+ [Den Status einer Paketversion aktualisieren](working-with-packages-update-version-status.md)
+ [Steuerelemente für den Paketursprung bearbeiten](package-origin-controls.md)

# Pakete in einem CodeCatalyst Paket-Repository veröffentlichen
<a name="package-publishing"></a>

 Sie können Versionen aller unterstützten Pakettypen mithilfe von Paketmanager-Tools in einem CodeCatalyst Paket-Repository veröffentlichen. Die Schritte zum Veröffentlichen einer Paketversion lauten wie folgt:

**Um eine Paketversion in einem CodeCatalyst Paket-Repository zu veröffentlichen**

1. Falls nicht, [erstellen Sie ein Paket-Repository](packages-repositories-create.md).

1. Connect Sie Ihren Paketmanager mit Ihrem Paket-Repository. Anweisungen, wie Sie den npm-Paketmanager mit einem CodeCatalyst Paket-Repository verbinden, finden Sie unter[Konfiguration und Verwendung von npm](packages-npm-use.md).

1. Verwenden Sie Ihren verbundenen Paketmanager, um Ihre Paketversionen zu veröffentlichen.

**Contents**
+ [Veröffentlichungs- und Upstream-Repositorys](#package-publishing-upstreams)
+ [Private Pakete und öffentliche Repositorien](#package-publishing-upstreams-direct)
+ [Paket-Assets überschreiben](#package-publishing-overwrite-assets)

## Veröffentlichungs- und Upstream-Repositorys
<a name="package-publishing-upstreams"></a>

In können Sie keine Paketversionen veröffentlichen CodeCatalyst, die in erreichbaren Upstream-Repositorys oder öffentlichen Repositorys vorhanden sind. Nehmen wir zum Beispiel an, Sie möchten ein npm-Paket in einem Paket-Repository veröffentlichen und es ist über ein Gateway-Repository`myrepo`, das als Upstream-Repository konfiguriert `myrepo` ist, mit npmjs.com verbunden. `lodash@1.0` Wenn im Upstream-Repository oder auf npmjs.com vorhanden `lodash@1.0` ist, CodeCatalyst lehnt es jeden Versuch ab, es in npmjs.com zu veröffentlichen, indem es einen 409-Konfliktfehler ausgibt. `myrepo` Dadurch wird verhindert, dass Sie versehentlich ein Paket mit demselben Namen und derselben Version wie ein Paket in einem Upstream-Repository veröffentlichen, was zu unerwartetem Verhalten führen kann. 

Sie können immer noch verschiedene Versionen eines Paketnamens veröffentlichen, die in einem Upstream-Repository existieren. Wenn `lodash@1.0` es beispielsweise in einem Upstream-Repository vorhanden `lodash@1.1` ist, aber nicht, können Sie im Downstream-Repository veröffentlichen`lodash@1.1`.

## Private Pakete und öffentliche Repositorien
<a name="package-publishing-upstreams-direct"></a>

 CodeCatalyst veröffentlicht keine in Repositorys gespeicherten Pakete in öffentlichen CodeCatalyst Repositorys wie npmjs.com oder Maven Central. CodeCatalyst importiert Pakete aus öffentlichen Repositorys in ein CodeCatalyst Repository, verschiebt Pakete jedoch nicht in die entgegengesetzte Richtung. Pakete, die Sie in CodeCatalyst Repositorys veröffentlichen, bleiben privat und sind nur für das CodeCatalyst Projekt verfügbar, zu dem das Repository gehört.

## Paket-Assets überschreiben
<a name="package-publishing-overwrite-assets"></a>

 Sie können ein bereits vorhandenes Paket-Asset mit einem anderen Inhalt nicht erneut veröffentlichen. Nehmen wir beispielsweise an, Sie haben bereits ein Maven-Paket mit einem JAR-Asset veröffentlicht. `mypackage-1.0.jar` Sie können dieses Asset nur dann erneut veröffentlichen, wenn die Prüfsumme der alten und neuen Assets identisch ist. Um dasselbe Asset mit neuem Inhalt erneut zu veröffentlichen, löschen Sie zuerst die Paketversion. Der Versuch, denselben Asset-Namen mit anderem Inhalt erneut zu veröffentlichen, führt zu einem HTTP 409-Konfliktfehler. 

Bei Paketformaten, die mehrere Assets unterstützen (Python und Maven), können Sie einer vorhandenen Paketversion jederzeit neue Assets mit unterschiedlichen Namen hinzufügen, vorausgesetzt, Sie verfügen über die erforderlichen Berechtigungen. Da npm und NuGet nur ein einzelnes Asset pro Paketversion unterstützen, müssen Sie eine veröffentlichte Paketversion zuerst löschen, um sie zu ändern. 

 Wenn Sie versuchen, ein bereits vorhandenes Objekt erneut zu veröffentlichen (z. B.`mypackage-1.0.jar`) und der Inhalt des veröffentlichten Elements und des neuen Elements identisch sind, ist der Vorgang erfolgreich, da der Vorgang idempotent ist. 

# Details zur Paketversion anzeigen
<a name="working-with-packages-view"></a>

Sie können die CodeCatalyst Konsole verwenden, um Details zu einer bestimmten Paketversion anzuzeigen.

**Um Details zur Paketversion anzuzeigen**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Repository aus, das die Paketversion enthält, deren Details Sie anzeigen möchten.

1. Suchen Sie in der Tabelle **Pakete** nach der Paketversion. Sie können die Suchleiste verwenden, um Pakete nach Paketnamen und Format zu filtern. Wählen Sie das Paket aus der Liste aus.

1. Wählen Sie auf der Seite mit den **Paketdetails** die Option **Versionen** und dann die Version aus, die Sie anzeigen möchten.

# Löschen einer Paketversion
<a name="working-with-packages-delete"></a>

Sie können eine Paketversion auf der Seite mit den **Paketversionsdetails** in der CodeCatalyst Konsole löschen.

**Um eine Paketversion zu löschen**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Repository aus, das die Paketversion enthält, die Sie löschen möchten.

1. Suchen Sie das Paket und wählen Sie es aus der Tabelle aus.

1. Wählen Sie auf der Seite mit den **Paketdetails** **Versionen** und wählen Sie die Version aus, die Sie löschen möchten.

1. Wählen Sie auf der Seite mit den **Paketversionsdetails** die Option **Versionsaktionen** und dann **Löschen** aus.

1. Geben Sie *Löschen* in das Textfeld ein und wählen Sie **Löschen**.

# Den Status einer Paketversion aktualisieren
<a name="working-with-packages-update-version-status"></a>

Jede Paketversion in CodeCatalyst hat einen Status, der den aktuellen Status und die Verfügbarkeit der Paketversion beschreibt. Sie können den Status der Paketversion in der CodeCatalyst Konsole ändern. Weitere Hinweise zu den möglichen Statuswerten von Paketversionen und deren Bedeutung finden Sie unter[Status der Paketversion](#package-version-status).

**So aktualisieren Sie den Status einer Paketversion**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie auf der Seite **Paket-Repositorys** das Repository aus, das die Paketversion enthält, deren Status Sie aktualisieren möchten.

1. Suchen Sie das Paket und wählen Sie es aus der Tabelle aus.

1. Wählen Sie auf der Seite mit den **Paketdetails** die Option **Versionen** und dann die Version aus, die Sie anzeigen möchten.

1. Wählen Sie auf der Seite mit den **Paketversionsdetails** die Option **Aktionen** und dann **Liste aufheben**, **Archivieren** oder Löschen aus**.** Informationen zum Status der einzelnen Paketversionen finden Sie unter. [Status der Paketversion](#package-version-status)

1. Geben Sie den Bestätigungstext in das Textfeld ein und wählen Sie **dann Je nachdem, auf welchen Status Sie **aktualisieren,** die Liste** entfernen, **Archivieren** oder Löschen aus.

## Status der Paketversion
<a name="package-version-status"></a>

Die folgenden Werte sind für den Status der Paketversion möglich. Sie können den Status der Paketversion in der Konsole ändern. Weitere Informationen finden Sie unter [Den Status einer Paketversion aktualisieren](#working-with-packages-update-version-status).
+  **Veröffentlicht**: Die Paketversion wurde erfolgreich veröffentlicht und kann von einem Paketmanager angefordert werden. Die Paketversion wird in die Paketversionslisten aufgenommen, die an die Paketmanager zurückgegeben werden, z. B. in der Ausgabe von`npm view <package-name> versions`. Alle Ressourcen der Paketversion sind im Repository verfügbar. 
+  **Nicht fertiggestellt**: Der letzte Veröffentlichungsversuch wurde nicht abgeschlossen. Derzeit können nur Maven-Paketversionen den Status **Unfertig** haben. Dies kann der Fall sein, wenn der Client ein oder mehrere Elemente für eine Paketversion hochlädt, aber keine `maven-metadata.xml` Datei für das Paket veröffentlicht, die diese Version enthält. 
+  **Nicht aufgeführt**: Die Paketversions-Assets können aus dem Repository heruntergeladen werden, aber die Paketversion ist nicht in der Liste der Versionen enthalten, die an die Paketmanager zurückgegeben werden. Bei einem npm-Paket enthält die Ausgabe von beispielsweise `npm view <package-name> versions` nicht die Paketversion. Das bedeutet, dass die NPM-Abhängigkeitsauflösungslogik die Paketversion nicht auswählt, da die Version nicht in der Liste der verfügbaren Versionen erscheint. Wenn die Paketversion „**Nicht gelistet**“ jedoch bereits in einer `npm package-lock.json` Datei referenziert wird, kann sie trotzdem heruntergeladen und installiert werden, z. B. wenn sie ausgeführt wird. `npm ci` 
+  **Archiviert**: Die Ressourcen der Paketversion können nicht heruntergeladen werden. Die Paketversion wird nicht in die Liste der Versionen aufgenommen, die an die Paketmanager zurückgegeben werden. Da die Ressourcen nicht verfügbar sind, wird die Nutzung der Paketversion durch Clients blockiert. Wenn der Build Ihrer Anwendung von einer Version abhängt, die auf **Archiviert** aktualisiert wurde, schlägt der Build fehl, es sei denn, die Paketversion wurde lokal zwischengespeichert. Sie können einen Paketmanager oder ein Build-Tool nicht verwenden, um eine **archivierte** Paketversion erneut zu veröffentlichen, da sie immer noch im Repository vorhanden ist. Sie können den Status der Paketversion jedoch in der Konsole wieder auf **Nicht gelistet** oder **Veröffentlicht** ändern. 
+  **Verworfen**: Die Paketversion erscheint nicht in den Auflistungen, und die Inhalte können nicht aus dem Repository heruntergeladen werden. **Der Hauptunterschied zwischen „**Verworfen“** und „**Archiviert**“ besteht darin, dass bei einem Status von „Verworfen“ die Inhalte der Paketversion dauerhaft von gelöscht werden CodeCatalyst.** **Aus diesem Grund können Sie eine Paketversion nicht von „Verworfen“ in „**Archiviert**“, „**Nicht gelistet**“ oder „**Veröffentlicht**“ verschieben.** Die Paketversion kann nicht verwendet werden, da die Assets gelöscht wurden. Wenn eine Paketversion als **entsorgt** markiert wurde, wird Ihnen die Aufbewahrung der Paketressourcen nicht in Rechnung gestellt. 

 Zusätzlich zu den Status in der obigen Liste kann eine Paketversion auch gelöscht werden. Nach dem Löschen befindet sich eine Paketversion nicht mehr im Repository und Sie können diese Paketversion mit einem Paketmanager oder einem Build-Tool nach Belieben erneut veröffentlichen. 

## Normalisierung von Paketnamen, Paketversion und Assetnamen
<a name="package-name-normalization"></a>

CodeCatalyst normalisiert Paketnamen, Paketversionen und Assetnamen, bevor sie gespeichert werden, was bedeutet, dass sich die Namen oder Versionen in denen CodeCatalyst möglicherweise von dem Namen oder der Version unterscheiden, die bei der Veröffentlichung des Pakets angegeben wurden. Weitere Informationen darüber, wie Namen und Versionen CodeCatalyst für jeden Pakettyp normalisiert werden, finden Sie in der folgenden Dokumentation.
+ [Normalisierung von Python-Paketnamen](python-name-normalization.md)
+ [NuGet Normalisierung von Paketnamen, Version und Assetnamen](nuget-name-normalization.md)

CodeCatalyst führt keine Normalisierung für andere Paketformate durch.

# Steuerelemente für den Paketursprung bearbeiten
<a name="package-origin-controls"></a>

In Amazon können Paketversionen zu einem Paket-Repository hinzugefügt werden CodeCatalyst, indem sie direkt veröffentlicht, aus einem Upstream-Repository heruntergeladen oder über ein Gateway aus einem externen, öffentlichen Repository aufgenommen werden. Wenn Sie zulassen, dass Versionen eines Pakets sowohl durch direkte Veröffentlichung als auch durch Aufnahme aus öffentlichen Repositorys hinzugefügt werden, sind Sie anfällig für Angriffe, die Abhängigkeiten ersetzen. Weitere Informationen finden Sie unter [Angriffe durch Substitution von Abhängigkeiten](#dependency-substitution-attacks). Um sich vor einem Angriff durch die Substitution von Abhängigkeiten zu schützen, konfigurieren Sie die Kontrolle über den Paketursprung für ein Paket in einem Repository, um einzuschränken, wie Versionen dieses Pakets dem Repository hinzugefügt werden können.

Sie sollten in Erwägung ziehen, die Kontrolle über die Herkunft von Paketen so zu konfigurieren, dass neue Versionen verschiedener Pakete sowohl aus internen Quellen wie Direktveröffentlichungen als auch aus externen Quellen wie öffentlichen Repositorien stammen. Standardmäßig werden die Kontrollen für den Paketursprung darauf konfiguriert, wie die erste Version eines Pakets zum Repository hinzugefügt wird.

## Einstellungen für die Kontrolle des Paketursprungs
<a name="package-origin-control-settings"></a>

Mit den Steuerelementen für den Paketursprung können Sie konfigurieren, wie Paketversionen zu einem Repository hinzugefügt werden können. Die folgenden Listen enthalten die verfügbaren Einstellungen und Werte für die Steuerung des Paketursprungs.

**Veröffentlichen**

Diese Einstellung konfiguriert, ob Paketversionen mithilfe von Paketmanagern oder ähnlichen Tools direkt im Repository veröffentlicht werden können.
+ **ZULASSEN**: Paketversionen können direkt veröffentlicht werden.
+ **BLOCK**: Paketversionen können nicht direkt veröffentlicht werden.

**Upstream**

Diese Einstellung konfiguriert, ob Paketversionen aus externen, öffentlichen Repositorys aufgenommen oder von Upstream-Repositorys beibehalten werden können, wenn dies von einem Paketmanager angefordert wird.
+ **ALLOW**: Jede Paketversion kann aus anderen CodeCatalyst Repositorys beibehalten werden, die als Upstream-Repositorys konfiguriert sind, oder aus einer öffentlichen Quelle mit einer externen Verbindung aufgenommen werden.
+ **BLOCKIEREN**: Paketversionen können nicht aus anderen CodeCatalyst Repositorys aufbewahrt werden, die als Upstream-Repositorys konfiguriert sind, oder von einer öffentlichen Quelle mit einer externen Verbindung aufgenommen werden.

### Standardeinstellungen für die Kontrolle des Paketursprungs
<a name="default-package-origin-control-settings"></a>

Die Standardkontrollen für den Paketursprung für ein Paket basieren darauf, wie die erste Version dieses Pakets dem Paket-Repository hinzugefügt wird.
+ Wenn die erste Paketversion direkt von einem Paketmanager veröffentlicht wird, lauten die Einstellungen **Publish: ALLOW und Upstream****: BLOCK**.
+ Wenn die erste Paketversion aus einer öffentlichen Quelle aufgenommen wurde, lauten die Einstellungen **Publish: BLOCK und **Upstream: ALLOW****.

## Allgemeine Szenarien zur Paketzugriffskontrolle
<a name="package-origin-control-scenarios"></a>

In diesem Abschnitt werden einige gängige Szenarien beschrieben, in denen eine Paketversion zu einem CodeCatalyst Paket-Repository hinzugefügt wird. Die Einstellungen zur Kontrolle des Paketursprungs werden für neue Pakete festgelegt, je nachdem, wie die erste Paketversion hinzugefügt wurde.

In den folgenden Szenarien wird ein *internes Paket* direkt von einem Paketmanager in Ihrem Repository veröffentlicht, z. B. ein Paket, das Sie verwalten. Ein *externes Paket* ist ein Paket, das in einem öffentlichen Repository vorhanden ist und über ein vorgelagertes Gateway-Repository in Ihr Repository aufgenommen werden kann.

**Eine externe Paketversion wird für ein vorhandenes internes Paket veröffentlicht**

Stellen Sie sich in diesem Szenario ein internes Paket, *PackageA*, vor. Ihr Team veröffentlicht die erste Paketversion für *PackageA in einem* Paket-Repository. CodeCatalyst Da dies die erste Paketversion für dieses Paket ist, werden die Einstellungen für die Kontrolle des Paketursprungs automatisch auf **Veröffentlichen: Zulassen und **Upstream:**** Blockieren gesetzt. Nachdem das Paket in Ihrem Repository veröffentlicht wurde, wird ein Paket mit demselben Namen in einem öffentlichen Repository veröffentlicht, das mit Ihrem CodeCatalyst Paket-Repository verbunden ist. Dies könnte ein versuchter Angriff zur Substitution von Abhängigkeiten auf das interne Paket sein, oder es könnte ein Zufall sein. Unabhängig davon sind die Kontrollen zur Paketherkunft so konfiguriert, dass sie die Aufnahme der neuen externen Version blockieren, um sich vor einem möglichen Angriff zu schützen.

In der folgenden Abbildung ist *RepoA* Ihr CodeCatalyst Paket-Repository mit einer Upstream-Verbindung zum Repository. `npm-public-registry-gateway` Ihr Repository enthält die Versionen 1.1 und 2.1 von *PackageA*, aber Version 3.0 ist im öffentlichen Repository veröffentlicht. Normalerweise würde *RepoA* Version 3.0 aufnehmen, nachdem das Paket von einem Paketmanager angefordert wurde. Da die Paketaufnahme auf **Blockieren** gesetzt ist, wird Version 3.0 nicht in Ihr CodeCatalyst Paket-Repository aufgenommen und steht den damit verbundenen Paketmanagern nicht zur Verfügung.

![\[Einfache Grafik, die zeigt, dass eine neue externe Paketversion aus einem öffentlichen Repository blockiert wird.\]](http://docs.aws.amazon.com/de_de/codecatalyst/latest/userguide/images/packages/package-origin-controls-one.png)


**Eine interne Paketversion wird für ein vorhandenes externes Paket veröffentlicht**

In diesem Szenario existiert ein Paket, *PackageB*, extern in einem öffentlichen Repository, das Sie mit Ihrem Repository verbunden haben. Wenn ein mit Ihrem Repository verbundener Paketmanager *PackageB* anfordert, wird die Paketversion aus dem öffentlichen Repository in Ihr Repository aufgenommen. **Da dies die erste Paketversion von *PackageB* ist, die zu Ihrem Repository hinzugefügt wurde, sind die Einstellungen für den Paketursprung auf **Publish: BLOCK und Upstream:** ALLOW konfiguriert.** Später versuchen Sie, eine Version mit demselben Paketnamen im Repository zu veröffentlichen. Möglicherweise kennen Sie das öffentliche Paket nicht und versuchen, ein nicht verwandtes Paket mit demselben Namen zu veröffentlichen, oder Sie versuchen möglicherweise, eine gepatchte Version zu veröffentlichen, oder Sie versuchen möglicherweise, genau die Paketversion, die bereits extern existiert, direkt zu veröffentlichen. CodeCatalyst lehnt die Version ab, die Sie zu veröffentlichen versuchen, aber Sie können die Ablehnung explizit außer Kraft setzen und die Version bei Bedarf veröffentlichen.

In der folgenden Abbildung ist *RepoA* Ihr CodeCatalyst Paket-Repository mit einer Upstream-Verbindung zum Repository. `npm-public-registry-gateway` Ihr Paket-Repository enthält Version 3.0, die es aus dem öffentlichen Repository aufgenommen hat. Sie möchten Version 1.2 in Ihrem Paket-Repository veröffentlichen. Normalerweise könnten Sie Version 1.2 in *RepoA* veröffentlichen, aber da die Veröffentlichung auf **Blockieren** eingestellt ist, kann Version 1.2 nicht veröffentlicht werden.

![\[Einfache Grafik, die zeigt, dass die Paketveröffentlichung blockiert ist.\]](http://docs.aws.amazon.com/de_de/codecatalyst/latest/userguide/images/packages/package-origin-controls-two.png)


**Veröffentlichen einer gepatchten Paketversion eines vorhandenen externen Pakets**

In diesem Szenario existiert ein Paket, *PackageB*, extern in einem öffentlichen Repository, das Sie mit Ihrem Paket-Repository verbunden haben. Wenn ein mit Ihrem Repository verbundener Paketmanager *PackageB* anfordert, wird die Paketversion aus dem öffentlichen Repository in Ihr Repository aufgenommen. **Da dies die erste Paketversion von *PackageB* ist, die zu Ihrem Repository hinzugefügt wurde, sind die Einstellungen für den Paketursprung auf **Publish: BLOCK und Upstream:** ALLOW konfiguriert.** Ihr Team beschließt, gepatchte Paketversionen dieses Pakets im Repository zu veröffentlichen. Um Paketversionen direkt veröffentlichen zu können, ändert Ihr Team die Einstellungen zur Kontrolle des Paketursprungs in **Publish: ALLOW** und **Upstream: BLOCK**. Versionen dieses Pakets können jetzt direkt in Ihrem Repository veröffentlicht und aus öffentlichen Repositorys aufgenommen werden. **Nachdem Ihr Team die gepatchten Paketversionen veröffentlicht hat, setzt Ihr Team die Einstellungen für den Paketursprung auf **Publish: BLOCK und Upstream: ALLOW** zurück.**

## Die Einstellungen für den Paketursprung werden bearbeitet
<a name="edit-package-origin-controls"></a>

Die Kontrollen zur Paketherkunft werden automatisch konfiguriert, je nachdem, wie die erste Paketversion eines Pakets zum Paket-Repository hinzugefügt wird. Weitere Informationen finden Sie unter [Standardeinstellungen für die Kontrolle des Paketursprungs](#default-package-origin-control-settings). Gehen Sie wie folgt vor, um Steuerungen für den Paketursprung für ein CodeCatalyst Paket in einem Paket-Repository hinzuzufügen oder zu bearbeiten.

**Um Steuerelemente für den Paketursprung hinzuzufügen oder zu bearbeiten**

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie das Paket-Repository aus, das das Paket enthält, das Sie bearbeiten möchten. 

1. Suchen Sie in der Tabelle **Pakete** nach dem Paket, das Sie bearbeiten möchten, und wählen Sie es aus.

1. Wähle auf der Seite mit der Paketübersicht **Origin Controls** aus.

1. Wähle unter **Origin Controls** die Kontrollen für den Paketursprung aus, die du für dieses Paket einrichten möchtest. Beide Einstellungen zur Kontrolle des Paketursprungs, **Publish** und **Upstream**, müssen gleichzeitig festgelegt werden.
   + Um das direkte Veröffentlichen von Paketversionen zuzulassen, wählen Sie unter **Veröffentlichen** die Option **Zulassen** aus. Um die Veröffentlichung von Paketversionen zu blockieren, wählen Sie **Blockieren** aus.
   + **Um die Aufnahme von Paketen aus externen Repositorys und das Abrufen von Paketen aus Upstream-Repositorys zuzulassen, wählen Sie unter **Upstream-Quellen** die Option Zulassen aus.** **Um die gesamte Aufnahme und das Abrufen von Paketversionen aus externen und Upstream-Repositorys zu blockieren, wählen Sie Blockieren.**

1. Wählen Sie **Speichern**.

## Veröffentlichung und Upstream-Repositorys
<a name="package-publishing-upstreams"></a>

In können Sie keine Paketversionen veröffentlichen CodeCatalyst, die in erreichbaren Upstream-Repositorys oder öffentlichen Repositorys vorhanden sind. Nehmen wir zum Beispiel an, Sie möchten ein npm-Paket in einem Repository veröffentlichen und `myrepo` haben ein Upstream-Repository mit einer externen Verbindung `lodash@1.0` zu npmjs.com. `myrepo` Stellen Sie sich die folgenden Szenarien vor.

1. Die Einstellungen für die Kontrolle des Paketursprungs `lodash` lauten **Publish: ALLOW** und **Upstream: ALLOW**. Wenn im Upstream-Repository oder auf npmjs.com vorhanden `lodash@1.0` ist, CodeCatalyst lehnt es jeden Versuch ab, in diesem Verzeichnis zu veröffentlichen, `myrepo` indem es einen 409-Konfliktfehler ausgibt. Sie könnten immer noch eine andere Version veröffentlichen, z. B. `lodash@1.1`

1. Die Einstellungen für die Kontrolle des Paketursprungs `lodash` lauten **Publish: ALLOW** und **Upstream: BLOCK**. Sie können jede Version von `lodash` in Ihrem Repository veröffentlichen, die noch nicht existiert, da Paketversionen nicht erreichbar sind.

1. Die Einstellungen zur Kontrolle des Paketursprungs `lodash` lauten **Publish: BLOCK** und **Upstream: ALLOW**. Sie können keine Paketversionen direkt in Ihrem Repository veröffentlichen.

## Angriffe durch Substitution von Abhängigkeiten
<a name="dependency-substitution-attacks"></a>

Paketmanager vereinfachen das Verpacken und Teilen von wiederverwendbarem Code. Bei diesen Paketen kann es sich um private Pakete handeln, die von einer Organisation zur Verwendung in ihren Anwendungen entwickelt wurden, oder es kann sich um öffentliche Pakete handeln, in der Regel Open-Source-Pakete, die außerhalb einer Organisation entwickelt und über öffentliche Paket-Repositorys verteilt werden. Bei der Anforderung von Paketen verlassen sich Entwickler auf ihren Paketmanager, um neue Versionen ihrer Abhängigkeiten abzurufen. Angriffe zur Substitution von Abhängigkeiten, auch bekannt als Dependency Confusion Attacks, nutzen die Tatsache aus, dass ein Paketmanager normalerweise keine Möglichkeit hat, legitime Versionen eines Pakets von bösartigen Versionen zu unterscheiden. 

Angriffe zur Substitution von Abhängigkeiten gehören zu einer Untergruppe von Angriffen, die als Software-Supply-Chain-Angriffe bezeichnet werden. Ein Angriff auf die Software-Lieferkette ist ein Angriff, bei dem Sicherheitslücken überall in der Software-Lieferkette ausgenutzt werden.

Ein Angriff zur Substitution von Abhängigkeiten kann sich gegen jeden richten, der sowohl intern entwickelte Pakete als auch Pakete verwendet, die aus öffentlichen Repositorien abgerufen wurden. Die Angreifer identifizieren interne Paketnamen und platzieren dann strategisch bösartigen Code mit demselben Namen in öffentlichen Paket-Repositorys. In der Regel wird der bösartige Code in einem Paket mit einer hohen Versionsnummer veröffentlicht. Paketmanager rufen den bösartigen Code aus diesen öffentlichen Feeds ab, weil sie glauben, dass es sich bei den bösartigen Paketen um die neuesten Versionen des Pakets handelt. Dies führt zu einer „Verwechselung“ oder einer „Ersetzung“ zwischen dem gewünschten Paket und dem bösartigen Paket, was dazu führt, dass der Code kompromittiert wird.

Um Angriffe durch die Substitution von Abhängigkeiten zu verhindern, CodeCatalyst bietet Amazon Kontrollen zur Herkunft von Paketen. Kontrollen zur Paketherkunft sind Einstellungen, die steuern, wie Pakete zu Ihren Repositorys hinzugefügt werden können. Die Steuerelemente werden automatisch konfiguriert, wenn die erste Paketversion eines neuen Pakets zu einem CodeCatalyst Repository hinzugefügt wird. Sie können sicherstellen, dass Paketversionen nicht sowohl direkt in Ihrem Repository veröffentlicht als auch aus öffentlichen Quellen aufgenommen werden können, wodurch Sie vor Angriffen durch die Substitution von Abhängigkeiten geschützt sind. Weitere Informationen zu den Kontrollen zur Paketherkunft und zu deren Änderung finden Sie unter. [Steuerelemente für den Paketursprung bearbeiten](#package-origin-controls)

# Verwenden von npm
<a name="packages-npm"></a>

In diesen Themen wird beschrieben`npm`, wie Sie den Paketmanager Node.js mit CodeCatalyst verwenden können.

**Anmerkung**  
CodeCatalyst unterstützt `node v4.9.1` und später `npm v5.0.0` und später.

**Topics**
+ [Konfiguration und Verwendung von npm](packages-npm-use.md)
+ [Handhabung von NPM-Tags](packages-npm-tags.md)

# Konfiguration und Verwendung von npm
<a name="packages-npm-use"></a>

Um `npm` mit zu verwenden CodeCatalyst, müssen Sie eine Verbindung `npm` zu Ihrem Paket-Repository herstellen und ein Personal Access Token (PAT) für die Authentifizierung bereitstellen. Anweisungen zum Herstellen einer Verbindung `npm` zu Ihrem Paket-Repository finden Sie in der CodeCatalyst Konsole.

**Contents**
+ [Konfiguration von npm mit CodeCatalyst](#npm-configure)
+ [NPM-Pakete aus einem Paket-Repository installieren CodeCatalyst](#npm-install)
+ [Installation von NPM-Paketen von npmjs bis CodeCatalyst](#npm-install-npmjs)
+ [Veröffentlichen Sie npm-Pakete in Ihrem CodeCatalyst Paket-Repository](#npm-publish)
+ [Unterstützung für npm-Befehle](#npm-commands)
  + [Unterstützte Befehle, die mit einem Paket-Repository interagieren](#supported-commands-that-interact-with-a-repository)
  + [Unterstützte clientseitige Befehle](#supported-client-side-commands)
  + [Nicht unterstützte Befehle](#unsupported-commands)

## Konfiguration von npm mit CodeCatalyst
<a name="npm-configure"></a>

In den folgenden Anweisungen wird erklärt, wie Sie sich authentifizieren und eine Verbindung `npm` zu Ihrem CodeCatalyst Paket-Repository herstellen. Weitere Informationen zu npm finden Sie in der [offiziellen npm-Dokumentation](https://docs.npmjs.com/).

**Um eine Verbindung `npm` zu Ihrem Paket-Repository CodeCatalyst herzustellen**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Navigieren Sie zu Ihrem Projekt.

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen Sie in den **Konfigurationsdetails** im **Package Manager Client** die Option **npm client** aus.

1. Wählen Sie Ihr Betriebssystem aus, um die entsprechenden Konfigurationsschritte anzuzeigen.

1. Für die Authentifizierung von npm ist ein Personal Access Token (PAT) erforderlich. CodeCatalyst Wenn Sie bereits ein Token haben, können Sie es verwenden. Wenn nicht, können Sie eines mit den folgenden Schritten erstellen.

   1. **(Optional):** Aktualisieren Sie den **PAT-Namen** und **das Ablaufdatum**.

   1. Wählen Sie „**Token erstellen**“.

   1. Kopieren Sie Ihr PAT und bewahren Sie es an einem sicheren Ort auf.
**Warnung**  
Sie können Ihr PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben. Anmeldeinformationen sollten kurzlebig sein, um die Zeit zu minimieren, für die ein Angreifer die Anmeldeinformationen verwenden kann, nachdem sie missbraucht wurden.

1. Führen Sie die folgenden Befehle im Stammverzeichnis Ihres Projekts aus, um npm mit Ihrem Paket-Repository zu konfigurieren. Die Befehle bewirken Folgendes:
   + Erstellen Sie eine `.npmrc` Datei auf Projektebene, falls Ihr Projekt noch keine hat.
   + Fügen Sie die Endpunktinformationen des Paket-Repositorys zu Ihrer Datei auf `.npmrc` Projektebene hinzu.
   + Fügen Sie Ihre Anmeldeinformationen (PAT) zu Ihrer Datei auf `.npmrc` Benutzerebene hinzu.

   Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, werden die Werte in den folgenden Befehlen für Sie aktualisiert und müssen nicht geändert werden.
   + *username*Ersetzen Sie es durch Ihren CodeCatalyst Benutzernamen.
   + Ersetzen Sie es *PAT* durch Ihr CodeCatalyst PAT.
   + *space\$1name*Ersetzen Sie es durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   npm set registry=https://packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/ --location project
   npm set //packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/:_authToken=username:PAT
   ```

   **Für npm 6 oder niedriger:** Damit npm das Auth-Token auch bei `GET` Anfragen immer weitergibt CodeCatalyst, setzen Sie die Konfigurationsvariable always-auth wie folgt. `npm config set`

   ```
   npm set //packages.region.codecatalyst.aws/npm/space-name/proj-name/repo-name/:always-auth=true --location project
   ```

## NPM-Pakete aus einem Paket-Repository installieren CodeCatalyst
<a name="npm-install"></a>

Nachdem Sie npm mit Ihrem Repository verbunden haben, indem Sie die Schritte unter ausgeführt haben[Konfiguration von npm mit CodeCatalyst](#npm-configure), können Sie `npm` Befehle in Ihrem Repository ausführen.

Sie können ein npm-Paket, das sich in Ihrem CodeCatalyst Paket-Repository oder einem seiner Upstream-Repositorys befindet, mit dem Befehl installieren. `npm install`

```
npm install lodash
```

## Installation von NPM-Paketen von npmjs bis CodeCatalyst
<a name="npm-install-npmjs"></a>

Sie können npm-Pakete von [npmjs.com](https://www.npmjs.com/) über ein CodeCatalyst Repository installieren, indem Sie das Repository mit einer Upstream-Verbindung zum Gateway-Repository konfigurieren, das mit npmjs.com verbunden ist,. **npm-public-registry-gateway** Pakete, die über npmjs installiert wurden, werden im Gateway-Repository und im Paket-Repository am weitesten unten aufgenommen und gespeichert.

**Um Pakete von npmjs zu installieren**

1. Falls Sie dies noch nicht getan haben, konfigurieren Sie es `npm` mit Ihrem CodeCatalyst Paket-Repository, indem Sie die Schritte unter befolgen. [Konfiguration von npm mit CodeCatalyst](#npm-configure) 

1. Vergewissern Sie sich, dass Ihr Repository das Gateway-Repository, **npm-public-registry-gateway**, als Upstream-Verbindung hinzugefügt hat. Sie können überprüfen, welche Upstream-Quellen hinzugefügt oder **npm-public-registry-gateway**als Upstream-Quelle hinzugefügt wurden, indem Sie den Anweisungen unter folgen [Ein Upstream-Repository hinzufügen](packages-upstream-repositories-add.md) und das **npm-public-registry-gateway**Repository auswählen.

1. Installieren Sie Pakete mit dem `npm install` Befehl.

   ```
   npm install package_name
   ```

Weitere Hinweise zum Anfordern von Paketen aus Upstream-Repositorys finden Sie unter[Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md).

## Veröffentlichen Sie npm-Pakete in Ihrem CodeCatalyst Paket-Repository
<a name="npm-publish"></a>

Nachdem Sie den Vorgang abgeschlossen haben[Konfiguration von npm mit CodeCatalyst](#npm-configure), können Sie `npm` Befehle ausführen.

Mit dem `npm publish` Befehl können Sie ein npm-Paket in einem CodeCatalyst Paket-Repository veröffentlichen.

```
npm publish
```

Informationen zum Erstellen von npm-Paketen finden Sie unter [Creating Node.js Modules](https://docs.npmjs.com/getting-started/creating-node-modules) in *npm* Docs.

## Unterstützung für npm-Befehle
<a name="npm-commands"></a>

In den folgenden Abschnitten werden die `npm` Befehle zusammengefasst, die von CodeCatalyst Paket-Repositorys unterstützt werden, sowie spezifische Befehle aufgeführt, die nicht unterstützt werden.

**Topics**
+ [Unterstützte Befehle, die mit einem Paket-Repository interagieren](#supported-commands-that-interact-with-a-repository)
+ [Unterstützte clientseitige Befehle](#supported-client-side-commands)
+ [Nicht unterstützte Befehle](#unsupported-commands)

### Unterstützte Befehle, die mit einem Paket-Repository interagieren
<a name="supported-commands-that-interact-with-a-repository"></a>

In diesem Abschnitt sind `npm` Befehle aufgeführt, bei denen der `npm` Client eine oder mehrere Anfragen an die Registry stellt, für die er konfiguriert ist (z. B.`npm config set registry`). Es wurde überprüft, ob diese Befehle korrekt funktionieren, wenn sie in einem CodeCatalyst Paket-Repository aufgerufen werden.


****  

| Befehl | Description | 
| --- | --- | 
|   [Bugs](https://docs.npmjs.com/cli/bugs)   |  Errät die Adresse der Bugtracker-URL eines Pakets und versucht dann, es zu öffnen.  | 
|   [Ci](https://docs.npmjs.com/cli/ci)   |  Installiert ein Projekt mit einem Neuanfang.  | 
|   [verwerfen](https://docs.npmjs.com/cli/deprecate)   |  Weist eine Version eines Pakets ab.  | 
|   [dist-tag](https://docs.npmjs.com/cli/dist-tag)   |  Ändert die Tags für die Paketverteilung.  | 
|   [Dokumente](https://docs.npmjs.com/cli/docs)   |  Errät den Speicherort der Dokumentations-URL eines Pakets und versucht dann, es mithilfe des `--browser` Konfigurationsparameters zu öffnen.  | 
|   [Arzt](https://docs.npmjs.com/cli/doctor)   |  Führt eine Reihe von Prüfungen durch, um zu überprüfen, ob Ihre npm-Installation Ihre JavaScript Pakete verwalten kann.  | 
|   [install](https://docs.npmjs.com/cli/install)   |  Installiert ein Paket.  | 
|   [install-ci-test](https://docs.npmjs.com/cli/install-ci-test)   |  Installiert ein Projekt mit einem Neuanfang und führt Tests durch. Alias:`npm cit`. Dieser Befehl führt einen aus`npm ci`, unmittelbar gefolgt von einem`npm test`.  | 
|   [installieren/testen](https://docs.npmjs.com/cli/install-test)   |  Installiert das Paket und führt Tests aus. Führt einen aus`npm install`, unmittelbar gefolgt von einem`npm test`.  | 
|   [veraltet](https://docs.npmjs.com/cli/outdated)   |  Überprüft die konfigurierte Registrierung, um festzustellen, ob installierte Pakete veraltet sind.  | 
|   [pingen](https://docs.npmjs.com/cli/ping)   |  Pingt die konfigurierte oder angegebene npm-Registrierung an und überprüft die Authentifizierung.  | 
|   [veröffentlichen](https://docs.npmjs.com/cli/publish)   |  Veröffentlicht eine Paketversion in der Registrierung.  | 
|   [update](https://docs.npmjs.com/cli/update)   |  Errät den Speicherort der Repository-URL eines Pakets und versucht dann, es mithilfe des `--browser` Konfigurationsparameters zu öffnen.  | 
|   [anzeigen](https://docs.npmjs.com/cli/view)   |  Zeigt Paket-Metadaten an. Kann auch zum Drucken von Metadateneigenschaften verwendet werden.  | 

### Unterstützte clientseitige Befehle
<a name="supported-client-side-commands"></a>

Diese Befehle erfordern keine direkte Interaktion mit einem Paket-Repository und benötigen daher CodeCatalyst nichts, um sie zu unterstützen.


****  

| Befehl | Description | 
| --- | --- | 
|   [bin (veraltet)](https://docs.npmjs.com/cli/v8/commands/npm-bin)   |  Zeigt das `bin` NPM-Verzeichnis an.  | 
|   [Build](https://docs.npmjs.com/cli/v6/commands/npm-build)   |  Baut ein Paket.  | 
|   [Cache](https://docs.npmjs.com/cli/cache)   |  Manipuliert den Paket-Cache.  | 
|   [Vervollständigung](https://docs.npmjs.com/cli/completion)   |  Aktiviert die Tabulatorvervollständigung in allen npm-Befehlen.  | 
|   [Konfiguration](https://docs.npmjs.com/cli/config)   |  Aktualisiert den Inhalt der Benutzer- und `npmrc` Globaldateien.  | 
|   [deduplizieren](https://docs.npmjs.com/cli/dedupe)   |  Durchsucht den lokalen Paketbaum und versucht, die Struktur zu vereinfachen, indem Abhängigkeiten im Baum weiter nach oben verschoben werden, wo sie effektiver von mehreren abhängigen Paketen gemeinsam genutzt werden können.  | 
|   [bearbeiten](https://docs.npmjs.com/cli/edit)   |  Bearbeitet ein installiertes Paket. Wählt eine Abhängigkeit im aktuellen Arbeitsverzeichnis aus und öffnet das Paketverzeichnis im Standardeditor.  | 
|   [erkunden](https://docs.npmjs.com/cli/explore)   |  Durchsucht ein installiertes Paket. Erzeugt eine Subshell im Verzeichnis des angegebenen installierten Pakets. Wenn ein Befehl angegeben ist, wird er in der Subshell ausgeführt, die dann sofort heruntergefahren wird.  | 
|   [help](https://docs.npmjs.com/cli/help)   |  Ruft Hilfe zu npm ab.  | 
|   [Hilfesuche](https://docs.npmjs.com/cli/help-search)   |  Durchsucht die NPM-Hilfedokumentation.  | 
|   [init](https://docs.npmjs.com/cli/init)   |  Erzeugt eine `package.json` Datei.  | 
|   [Link](https://docs.npmjs.com/cli/link)   |  Verweist symbolisch auf ein Paketverzeichnis.  | 
|   [ls](https://docs.npmjs.com/cli/ls)   |  Listet die installierten Pakete auf.  | 
|   [packen](https://docs.npmjs.com/cli/pack)   |  Erzeugt einen Tarball aus einem Paket.  | 
|   [prefix](https://docs.npmjs.com/cli/prefix)   |  Zeigt ein Präfix an. Dies ist das nächstgelegene übergeordnete Verzeichnis, das eine `package.json` Datei enthält, sofern nicht `-g` zusätzlich angegeben.  | 
|   [pflaumen](https://docs.npmjs.com/cli/prune)   |  Entfernt Pakete, die nicht in der Abhängigkeitsliste des übergeordneten Pakets aufgeführt sind.  | 
|   [neu aufbauen](https://docs.npmjs.com/cli/rebuild)   |  Führt den `npm build` Befehl für die entsprechenden Ordner aus.  | 
|   [neu starten](https://docs.npmjs.com/cli/restart)   |  Führt die Stopp-, Restart- und Start-Skripte eines Pakets sowie die zugehörigen Vor- und Nachskripte aus.  | 
|   [Root](https://docs.npmjs.com/cli/root)   |  Druckt das aktuelle `node_modules` Verzeichnis auf die Standardausgabe aus.  | 
|   [Run-Skript](https://docs.npmjs.com/cli/run-script)   |  Führt beliebige Paketskripten aus.  | 
|   [shrinkwrap](https://docs.npmjs.com/cli/shrinkwrap)   |  Sperrt abhängige Versionen für die Veröffentlichung.  | 
|   [deinstallieren](https://docs.npmjs.com/cli/uninstall)   |  Deinstalliert ein Paket.  | 

### Nicht unterstützte Befehle
<a name="unsupported-commands"></a>

Diese `npm` Befehle werden von CodeCatalyst Paket-Repositorys nicht unterstützt.


****  

| Befehl | Description | Hinweise | 
| --- | --- | --- | 
|   [Zugriff](https://docs.npmjs.com/cli/access)   |  Legt die Zugriffsebene für veröffentlichte Pakete fest.  |  CodeCatalyst verwendet ein Berechtigungsmodell, das sich vom öffentlichen npmjs-Repository unterscheidet.  | 
|   [Benutzer hinzufügen](https://docs.npmjs.com/cli/adduser)   |  Fügt ein Registrierungsbenutzerkonto hinzu  |  CodeCatalyst verwendet ein Benutzermodell, das sich vom öffentlichen npmjs-Repository unterscheidet.  | 
|   [Prüfung](https://docs.npmjs.com/cli/audit)   |  Führt ein Sicherheitsaudit durch.  |  CodeCatalyst verkauft derzeit keine Daten zu Sicherheitslücken.  | 
|   [Haken](https://docs.npmjs.com/cli/v9/commands/npm-hook)   |  Verwaltet NPM-Hooks, einschließlich Hinzufügen, Entfernen, Auflisten und Aktualisieren.  |  CodeCatalyst unterstützt derzeit keinen Mechanismus zur Benachrichtigung über Änderungen.  | 
|   [login](https://docs.npmjs.com/cli-commands/adduser.html)   |  Authentifiziert einen Benutzer. Dies ist ein Alias für `npm adduser`.   |  CodeCatalyst verwendet ein Authentifizierungsmodell, das sich vom öffentlichen npmjs-Repository unterscheidet. Weitere Informationen finden Sie unter [Konfiguration von npm mit CodeCatalyst](#npm-configure).  | 
|   [logout](https://docs.npmjs.com/cli/logout)   |  Meldet sich von der Registrierung ab.  |  CodeCatalyst verwendet ein Authentifizierungsmodell, das sich vom öffentlichen npmjs-Repository unterscheidet. Es gibt keine Möglichkeit, sich von einem CodeCatalyst Repository abzumelden, aber Authentifizierungstoken laufen nach ihrer konfigurierbaren Ablaufzeit ab. Die Standarddauer des Tokens beträgt 12 Stunden.   | 
|   [Besitzer](https://docs.npmjs.com/cli/owner)   |  Verwaltet die Besitzer von Paketen.  |  CodeCatalyst verwendet ein Berechtigungsmodell, das sich vom öffentlichen npmjs-Repository unterscheidet.  | 
|   [profile](https://docs.npmjs.com/cli/profile)   |  Ändert die Einstellungen in Ihrem Registrierungsprofil.  |  CodeCatalyst verwendet ein Benutzermodell, das sich vom öffentlichen npmjs-Repository unterscheidet.  | 
|   [search](https://docs.npmjs.com/cli/search)   |  Durchsucht die Registrierung nach Paketen, die den Suchbegriffen entsprechen.  |  CodeCatalyst unterstützt den `search` Befehl nicht.  | 
|   [Stern](https://docs.npmjs.com/cli/star)   |  Markiert deine Lieblingspakete.  |  CodeCatalyst unterstützt derzeit keinen Favoriten-Mechanismus.  | 
|   [Sterne](https://docs.npmjs.com/cli/stars)   |  Zeigt Pakete an, die als Favoriten markiert sind.  |  CodeCatalyst unterstützt derzeit keinen Favoriten-Mechanismus.  | 
|   [Team](https://docs.npmjs.com/cli/team)   |  Verwaltet Teams und Teammitgliedschaften.  |  CodeCatalyst verwendet ein Benutzer- und Gruppenmitgliedschaftsmodell, das sich vom öffentlichen npmjs-Repository unterscheidet.  | 
|   [T](https://docs.npmjs.com/cli/token)oken   |  Verwaltet Ihre Authentifizierungstoken.  |  CodeCatalyst verwendet ein anderes Modell zum Abrufen von Authentifizierungstoken. Weitere Informationen finden Sie unter [Konfiguration von npm mit CodeCatalyst](#npm-configure).  | 
|   [Veröffentlichung rückgängig machen](https://docs.npmjs.com/cli/unpublish)   |  Entfernt ein Paket aus der Registrierung.  |  CodeCatalyst unterstützt nicht das Entfernen einer Paketversion aus einem Repository mithilfe des npm-Clients. Sie können ein Paket in der Konsole löschen.  | 
|   [Whoami](https://docs.npmjs.com/cli/whoami)   |  Zeigt den NPM-Benutzernamen an.  |  CodeCatalyst verwendet ein Benutzermodell, das sich vom öffentlichen npmjs-Repository unterscheidet.  | 

# Handhabung von NPM-Tags
<a name="packages-npm-tags"></a>

npm-Registries unterstützen *Tags*, bei denen es sich um Zeichenkettenaliase für Paketversionen handelt. Sie können Tags verwenden, um einen Alias bereitzustellen, anstatt Versionsnummern zu verwenden. Sie haben beispielsweise ein Projekt mit mehreren Entwicklungsströmen und verwenden für jeden Stream ein anderes Tag (z. B., `stable``beta`,`dev`,`canary`). Weitere Informationen finden Sie unter [dist-tag in *npm*](https://docs.npmjs.com/cli/dist-tag) Docs. 

Standardmäßig verwendet npm das `latest` Tag, um die aktuelle Version eines Pakets zu identifizieren. `npm install pkg`(ohne `@version` oder `@tag` Spezifizierer) installiert das neueste Tag. In der Regel verwenden Projekte nur das neueste Tag für stabile Release-Versionen. Andere Tags werden für instabile Versionen oder Vorabversionen verwendet. 

## Bearbeiten von Tags mit dem NPM-Client
<a name="editing-tags-with-the-npm-client"></a>

 Die drei `npm dist-tag` Befehle (`add``rm`, und`ls`) funktionieren in CodeCatalyst Paket-Repositorys genauso wie in der [NPM-Standardregistrierung](https://registry.npmjs.com/).

## npm-Tags und Upstream-Repositorys
<a name="packages-tags-and-upstreams"></a>

Wenn `npm` Anfragen die Tags für ein Paket enthalten und Versionen dieses Pakets auch in einem Upstream-Repository vorhanden sind, werden die Tags CodeCatalyst zusammengeführt, bevor sie an den Client zurückgegeben werden. Ein Projektarchiv mit dem Namen `R` hat beispielsweise ein Upstream-Repository mit dem Namen`U`. Die folgende Tabelle zeigt die Tags für ein Paket mit dem Namen`web-helper`, das in beiden Repositorys vorhanden ist.


****  

| Repository | Package name | Paket-Tags | 
| --- | --- | --- | 
|  R  |  `web-helper`  |   *aktuell* (Alias für Version 1.0.0)  | 
|  U  |  `web-helper`  |   *alpha* (Alias für Version 1.0.1)  | 

*In diesem Fall empfängt der npm-Client, wenn er die Tags für das `web-helper` Paket aus dem Repository abruft`R`, sowohl die *neuesten* als auch die Alpha-Tags.* Die Versionen, auf die die Tags verweisen, werden sich nicht ändern.

Wenn dasselbe Tag für dasselbe Paket sowohl im Upstream-Repository als auch im lokalen Repository vorhanden ist, CodeCatalyst wird das Tag verwendet, das *zuletzt aktualisiert* wurde. Nehmen wir zum Beispiel an, dass die Tags auf *Webhelper* so geändert wurden, dass sie wie folgt aussehen.


****  

| Repository | Package name | Paket-Tags | Letzte Aktualisierung | 
| --- | --- | --- | --- | 
|  R  |  `web-helper`  |   *aktuell* (Alias für Version 1.0.0)  |  1. Januar 2023  | 
|  U  |  `web-helper`  |   *aktuell* (Alias für Version 1.0.1)  |  01. Juni 2023  | 

Wenn in diesem Fall der npm-Client die Tags für das Paket *web-helper* aus dem Repository abruft`R`, verwendet das *neueste* Tag einen Alias für die Version *1.0.1*, da es zuletzt aktualisiert wurde. Dies macht es einfach, neue Paketversionen in einem Upstream-Repository, die noch nicht in einem lokalen Repository vorhanden sind, durch Ausführen zu nutzen. `npm update`

# Maven verwenden
<a name="packages-maven"></a>

Das Maven-Repository-Format wird von vielen verschiedenen Sprachen verwendet, darunter Java, Kotlin, Scala und Clojure. Es wird von vielen verschiedenen Build-Tools unterstützt, darunter Maven, Gradle, Scala SBT, Apache Ivy und Leiningen. 

Wir haben die Kompatibilität mit den folgenden Versionen getestet und bestätigt: CodeCatalyst 
+ Letzte **Maven-Version**: 3.6.3.
+ Letzte **Gradle-Version**: 6.4.1. Version 5.5.1 wurde ebenfalls getestet.

**Topics**
+ [Konfiguration und Verwendung von Gradle Groovy](packages-maven-gradle.md)
+ [Konfiguration und Verwendung von mvn](packages-maven-mvn.md)
+ [Pakete mit curl veröffentlichen](packages-maven-curl.md)
+ [Maven-Prüfsummen und Snapshots verwenden](packages-maven-checksums-snapshots.md)

# Konfiguration und Verwendung von Gradle Groovy
<a name="packages-maven-gradle"></a>

Um Gradle Groovy mit verwenden zu können CodeCatalyst, müssen Sie Gradle Groovy mit Ihrem Paket-Repository verbinden und ein Personal Access Token (PAT) für die Authentifizierung bereitstellen. Anweisungen zum Verbinden von Gradle Groovy mit Ihrem Paket-Repository finden Sie in der Konsole. CodeCatalyst 

**Contents**
+ [Abhängigkeiten werden abgerufen von CodeCatalyst](#gradle-fetch-dependencies)
+ [Plugins werden abgerufen von CodeCatalyst](#gradle-fetch-plugins)
+ [Pakete aus externen Paket-Repositorys abrufen über CodeCatalyst](#gradle-install-public)
+ [Veröffentlichen von Paketen auf CodeCatalyst](#gradle-publish-packages)
+ [Einen Gradle-Build in IntelliJ IDEA ausführen](#gradle-intellij)
  + [Methode 1: Geben Sie das PAT ein `gradle.properties`](#gradle-intellij-gradle-properties)
  + [Methode 2: Fügen Sie das PAT in eine separate Datei ein](#gradle-intellij-file)

## Abhängigkeiten werden abgerufen von CodeCatalyst
<a name="gradle-fetch-dependencies"></a>

Die folgenden Anweisungen erklären, wie Sie Gradle Groovy so konfigurieren, dass Abhängigkeiten aus Ihrem Paket-Repository abgerufen werden. CodeCatalyst 

**Um Gradle Groovy zu verwenden, um Abhängigkeiten aus Ihrem Paket-Repository abzurufen CodeCatalyst**

1. [Öffnen Sie die Konsole unter https://codecatalyst.aws/ CodeCatalyst .](https://codecatalyst.aws/)

1. Navigieren Sie zu Ihrem Projekt.

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **Gradle Groovy** aus der Liste der Paketmanager-Clients aus.

1. Sie benötigen ein persönliches Zugriffstoken (PAT), mit dem Sie Gradle Groovy authentifizieren können. CodeCatalyst Wenn Sie bereits einen haben, können Sie diesen verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Aktualisieren Sie Ihre Gradle-Eigenschaftendatei mit Ihren Zugangsdaten. *username*Ersetzen Sie es durch Ihren CodeCatalyst Benutzernamen und *PAT* ersetzen Sie es durch Ihr CodeCatalyst persönliches Zugriffstoken. Sie können einen beliebigen Wert für *spaceUsername* und *spacePassword* solange Sie in den folgenden Schritten dieselben Werte verwenden.

   ```
   spaceUsername=username
   spacePassword=PAT
   ```

1. Um Abhängigkeiten aus CodeCatalyst einem Gradle-Build abzurufen, kopieren Sie den `maven` Codeausschnitt und fügen Sie ihn dem `repositories` Abschnitt in der Datei Ihres Projekts hinzu. `build.gradle` Ersetzen Sie die folgenden Werte. Sie können einen beliebigen Wert verwenden, *spaceName* solange Sie in den folgenden Schritten dieselben Werte verwenden.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *space\$1name*Ersetzen Sie sie durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   maven {
     name = 'spaceName'
     url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
     credentials(PasswordCredentials)
   }
   ```

1. (Optional) Um das CodeCatalyst Paket-Repository als einzige Quelle für Ihre Projektabhängigkeiten zu verwenden, entfernen Sie alle anderen Abschnitte in den Repositorys aus der `build.gradle` Datei. Wenn Sie mehr als ein Repository haben, durchsucht Gradle jedes Repository nach Abhängigkeiten in der Reihenfolge, in der sie aufgelistet sind.

## Plugins werden abgerufen von CodeCatalyst
<a name="gradle-fetch-plugins"></a>

Standardmäßig löst Gradle Plugins aus dem öffentlichen [Gradle](https://plugins.gradle.org/) Plugin Portal auf. Die folgenden Schritte konfigurieren Ihr Gradle-Projekt so, dass Plugins aus Ihrem CodeCatalyst Paket-Repository aufgelöst werden.

**Um Gradle zu verwenden, um Plugins aus Ihrem Paket-Repository abzurufen CodeCatalyst**

1. [Öffnen Sie die CodeCatalyst Konsole unter https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Navigieren Sie zu Ihrem Projekt.

1. Wählen Sie im Navigationsbereich **Packages (Pakete)** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **Gradle** aus der Liste der Paketmanager-Clients aus.

1. Sie benötigen ein persönliches Zugriffstoken (PAT), mit dem Sie Gradle authentifizieren können. CodeCatalyst Wenn Sie bereits einen haben, können Sie diesen verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Aktualisieren Sie Ihre Gradle-Eigenschaftendatei mit Ihren Zugangsdaten. *username*Ersetzen Sie es durch Ihren CodeCatalyst Benutzernamen und *PAT* ersetzen Sie es durch Ihr CodeCatalyst persönliches Zugriffstoken. Sie können einen beliebigen Wert für *spaceUsername* und *spacePassword* solange Sie in den folgenden Schritten dieselben Werte verwenden.

   ```
   spaceUsername=username
   spacePassword=PAT
   ```

1. Fügen Sie Ihrer `settings.gradle` Datei einen `pluginManagement` Block hinzu. Der `pluginManagement` Block muss vor allen anderen Anweisungen in erscheinen`settings.gradle`. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *spaceName*Ersetzen Sie sie durch den im vorherigen Schritt verwendeten Namenswert.
   + *space\$1name*Ersetzen Sie es durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   pluginManagement {
       repositories {
           maven {
               name = 'spaceName'
               url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
               credentials(PasswordCredentials)
           }
       }
   }
   ```

   Dadurch wird sichergestellt, dass Gradle Plugins aus dem angegebenen Repository auflöst. Für das Repository muss eine Upstream-Verbindung zum Gradle Plugin Portal (`gradle-plugins-store`) konfiguriert sein, damit häufig benötigte Gradle-Plugins für den Build verfügbar sind. Weitere Informationen finden Sie in der [Gradle-Dokumentation](https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories).

## Pakete aus externen Paket-Repositorys abrufen über CodeCatalyst
<a name="gradle-install-public"></a>

Sie können Maven-Pakete aus öffentlichen Repositorys über ein CodeCatalyst Repository installieren, indem Sie es mit einer Upstream-Verbindung zum Gateway konfigurieren, das das Gateway-Repository darstellt. Aus dem Gateway-Repository installierte Pakete werden aufgenommen und in Ihrem Repository gespeichert. CodeCatalyst

CodeCatalyst unterstützt die folgenden öffentlichen Maven-Paket-Repositorys.
+ maven-central-gateway
+ google-android-gateway
+ gradle-plugins-gateway
+ Commonsware-Gateway

**Um Pakete aus öffentlichen Maven-Paket-Repositorys zu installieren**

1. Falls Sie es noch nicht getan haben, konfigurieren Sie Gradle mit Ihrem CodeCatalyst Paket-Repository, indem Sie die Schritte unter oder befolgen. [Abhängigkeiten werden abgerufen von CodeCatalyst](#gradle-fetch-dependencies) [Plugins werden abgerufen von CodeCatalyst](#gradle-fetch-plugins) 

1. Stellen Sie sicher, dass Ihr Repository das Gateway-Repository, von dem aus Sie installieren möchten, als Upstream-Verbindung hinzugefügt hat. Sie können dies tun, indem Sie den Anweisungen unter folgen [Ein Upstream-Repository hinzufügen](packages-upstream-repositories-add.md) und das öffentliche Paket-Repository auswählen, das Sie als Upstream-Repository hinzufügen möchten.

Weitere Hinweise zum Anfordern von Paketen aus Upstream-Repositorys finden Sie unter[Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md).

## Veröffentlichen von Paketen auf CodeCatalyst
<a name="gradle-publish-packages"></a>

In diesem Abschnitt wird beschrieben, wie Sie eine mit Gradle Groovy erstellte Java-Bibliothek in einem Repository veröffentlichen. CodeCatalyst

**Um Gradle Groovy zu verwenden, um Pakete in einem Paket-Repository zu veröffentlichen CodeCatalyst**

1. [Öffnen Sie die CodeCatalyst Konsole unter https://codecatalyst.aws/.](https://codecatalyst.aws/)

1. Wählen Sie auf der Übersichtsseite für Ihr Projekt die Option **Pakete** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **Gradle Groovy** aus der Liste der Paketmanager-Clients aus.

1. Sie benötigen ein persönliches Zugriffstoken (PAT), mit dem Sie Gradle authentifizieren können. CodeCatalyst Wenn Sie bereits einen haben, können Sie diesen verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Aktualisieren Sie Ihre Gradle-Eigenschaftendatei mit Ihren Zugangsdaten. *username*Ersetzen Sie es durch Ihren CodeCatalyst Benutzernamen und *PAT* ersetzen Sie es durch Ihr CodeCatalyst persönliches Zugriffstoken. Sie können einen beliebigen Wert für *spaceUsername* und *spacePassword* solange Sie in den folgenden Schritten dieselben Werte verwenden.

   ```
   spaceUsername=username
   spacePassword=PAT
   ```

1. Fügen Sie das `maven-publish` Plugin dem `plugins` Abschnitt der `build.gradle` Projektdatei hinzu.

   ```
   plugins {
       id 'java-library'
       id 'maven-publish'
   }
   ```

1. Als Nächstes fügen Sie der `build.gradle` Projektdatei einen `publishing` Abschnitt hinzu. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *space\$1name*Ersetzen Sie sie durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   publishing {
       publications {
           mavenJava(MavenPublication) {
               groupId = 'group-id'
               artifactId = 'artifact-id'
               version = 'version'
               from components.java
           }
       }
       repositories {
           maven {
               name = 'spaceName'
               url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
               credentials(PasswordCredentials)
           }
       }
   }
   ```

   Das `maven-publish` Plug-in generiert eine POM-Datei auf der Grundlage von `groupId``artifactId`, und, die im `publishing` Abschnitt `version` angegeben sind.

1. Wenn diese Änderungen abgeschlossen `build.gradle` sind, führen Sie den folgenden Befehl aus, um das Projekt zu erstellen und es in das Repository hochzuladen.

   ```
   ./gradlew publish
   ```

1. Navigieren Sie in der CodeCatalyst Konsole zu Ihrem Paket-Repository, um zu überprüfen, ob das Paket erfolgreich veröffentlicht wurde. Sie sollten das Paket in der Paketliste Ihres **Paket-Repositorys** sehen.

Weitere Informationen finden Sie in diesen Themen auf der Gradle-Website:
+  [Java-Bibliotheken erstellen](https://guides.gradle.org/building-java-libraries/) 
+  [Ein Projekt als Modul veröffentlichen](https://docs.gradle.org/current/userguide/publishing_setup.html) 

## Einen Gradle-Build in IntelliJ IDEA ausführen
<a name="gradle-intellij"></a>

Sie können einen Gradle-Build in IntelliJ IDEA ausführen, der Abhängigkeiten abruft. CodeCatalyst Um Gradle zu authentifizieren CodeCatalyst, müssen Sie ein Personal Access Token (PAT) verwenden. Sie können Ihre CodeCatalyst PAT in `gradle.properties` oder einer separaten Datei Ihrer Wahl speichern.

### Methode 1: Geben Sie das PAT ein `gradle.properties`
<a name="gradle-intellij-gradle-properties"></a>

Verwenden Sie diese Methode, wenn Sie die `gradle.properties` Datei nicht verwenden und ihren Inhalt mit Ihrer PAT überschreiben können. Wenn Sie diese Methode verwenden`gradle.properties`, können Sie diese Methode ändern, um die PAT hinzuzufügen, anstatt den Inhalt der Datei zu überschreiben.

**Anmerkung**  
Das Beispiel zeigt die `gradle.properties` Datei in`GRADLE_USER_HOME`.

Erstellen Sie zunächst eine PAT, falls Sie noch keine haben.

**Um ein persönliches Zugriffstoken (PAT) zu erstellen**

1. Wählen Sie in der oberen Menüleiste Ihr Profil-Badge und dann **Meine Einstellungen** aus. 
**Tipp**  
Du kannst dein Benutzerprofil auch finden, indem du die Mitgliederseite für ein Projekt oder einen Bereich aufrufst und deinen Namen aus der Mitgliederliste auswählst.

1. Geben Sie im Feld **PAT-Name** einen aussagekräftigen Namen für Ihr PAT ein.

1. Behalten Sie im Feld **Ablaufdatum** das Standarddatum bei oder wählen Sie das Kalendersymbol, um ein benutzerdefiniertes Datum auszuwählen. Das Ablaufdatum liegt standardmäßig auf einem Jahr ab dem aktuellen Datum.

1. Wählen Sie **Erstellen** aus.

   Sie können dieses Token auch erstellen, wenn Sie **Repository klonen** für ein Quell-Repository wählen.

1. Speichern Sie das PAT-Geheimnis an einem sicheren Ort. 
**Wichtig**  
Das PAT-Geheimnis wird nur einmal angezeigt. Sie können es nicht abrufen, nachdem Sie das Fenster geschlossen haben. 

Als Nächstes aktualisieren Sie Ihre `build.gradle` Datei mit dem folgenden Codeausschnitt:

```
repositories {
    maven {
        name = 'spaceName'
        url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
        credentials(PasswordCredentials)
    }
}
```

### Methode 2: Fügen Sie das PAT in eine separate Datei ein
<a name="gradle-intellij-file"></a>

Verwenden Sie diese Methode, wenn Sie Ihre `gradle.properties` Datei nicht ändern möchten.

Erstellen Sie zunächst eine PAT, falls Sie noch keine haben.

**Um ein persönliches Zugriffstoken (PAT) zu erstellen**

1. Wählen Sie in der oberen Menüleiste Ihr Profil-Badge und dann **Meine Einstellungen** aus. 
**Tipp**  
Du kannst dein Benutzerprofil auch finden, indem du die Mitgliederseite für ein Projekt oder einen Bereich aufrufst und deinen Namen aus der Mitgliederliste auswählst.

1. Geben Sie im Feld **PAT-Name** einen aussagekräftigen Namen für Ihr PAT ein.

1. Behalten Sie im Feld **Ablaufdatum** das Standarddatum bei oder wählen Sie das Kalendersymbol, um ein benutzerdefiniertes Datum auszuwählen. Das Ablaufdatum liegt standardmäßig auf einem Jahr ab dem aktuellen Datum.

1. Wählen Sie **Erstellen** aus.

   Sie können dieses Token auch erstellen, wenn Sie **Repository klonen** für ein Quell-Repository wählen.

1. Speichern Sie das PAT-Geheimnis an einem sicheren Ort. 
**Wichtig**  
Das PAT-Geheimnis wird nur einmal angezeigt. Sie können es nicht abrufen, nachdem Sie das Fenster geschlossen haben. 

**Um Ihr PAT in einer separaten Datei abzulegen**

1. Aktualisieren Sie Ihre `build.gradle` Datei mit dem folgenden Codeausschnitt. Ersetzen Sie *space\$1name**proj\$1name*, und *repo\$1name* durch Ihren CodeCatalyst Benutzernamen, Bereichsnamen, Projektnamen und Paket-Repository-Namen.

   ```
   def props = new Properties()
   file("fileName").withInputStream { props.load(it) }
                     
   repositories {
           maven {
               name = 'spaceName'
               url = uri('https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/')
               credentials(PasswordCredentials)
           }
       }
   }
   ```

1. Schreiben Sie Ihre PAT in die Datei, die in Ihrer `build.gradle` Datei angegeben wurde:

   ```
   echo "codecatalystArtifactsToken=PAT" > fileName
   ```

# Konfiguration und Verwendung von mvn
<a name="packages-maven-mvn"></a>

Sie verwenden den `mvn` Befehl, um Maven-Builds auszuführen. Sie müssen `mvn` für die Verwendung Ihres Paket-Repositorys konfigurieren und ein Personal Access Token (PAT) für die Authentifizierung bereitstellen.

**Contents**
+ [Abhängigkeiten werden abgerufen von CodeCatalyst](#mvn-fetch-dependencies)
+ [Pakete aus externen Paket-Repositorys abrufen über CodeCatalyst](#mvn-install-public)
+ [Veröffentlichen von Paketen auf CodeCatalyst](#mvn-publish-packages)
+ [Pakete von Drittanbietern veröffentlichen](#publishing-third-party-packages)

## Abhängigkeiten werden abgerufen von CodeCatalyst
<a name="mvn-fetch-dependencies"></a>

Um das Abrufen von Abhängigkeiten aus einem CodeCatalyst Repository `mvn` zu konfigurieren, müssen Sie die Maven-Konfigurationsdatei `settings.xml` und optional die POM-Datei (Project Model Object) Ihres Projekts bearbeiten. Die POM-Datei enthält Informationen über das Projekt und Konfigurationsinformationen für Maven, um das Projekt zu erstellen, wie Abhängigkeiten, Build-Verzeichnis, Quellverzeichnis, Testquellverzeichnis, Plugin und Ziele.

**Wird verwendet, `mvn` um Abhängigkeiten aus Ihrem CodeCatalyst Paket-Repository abzurufen**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie auf der Übersichtsseite für Ihr Projekt die Option **Pakete** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **mvn** aus der Liste der Package Manager-Clients aus.

1. Sie benötigen ein persönliches Zugriffstoken (PAT), mit dem Sie sich authentifizieren können. `mvn` CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Fügen Sie Ihrer `settings.xml` Datei ein Profil hinzu, das Ihr Repository enthält. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *space\$1name*Ersetzen Sie sie durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   <profiles>
     <profile>
       <id>repo_name</id>
       <activation>
           <activeByDefault>true</activeByDefault>
       </activation>
       <repositories>
           <repository>
             <id>repo_name</id>
             <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
           </repository>
       </repositories>
     </profile>
   </profiles>
   ```

1. Fügen Sie Ihren Server zur Liste der Server in Ihrer `settings.xml` Datei hinzu. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.
   + *username*Ersetze es durch deinen CodeCatalyst Benutzernamen.
   + Ersetzen Sie es *PAT* durch Ihr CodeCatalyst PAT.

   ```
   <servers>
     <server>
       <id>repo_name</id>
       <username>username</username>
       <password>PAT</password>
     </server>
   </servers>
   ```

1. (Optional) Richten Sie in Ihrer `settings.xml` Datei einen Mirror ein, der alle Verbindungen erfasst und sie an Ihr Repository statt an ein Gateway-Repository weiterleitet.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *space\$1name*Ersetzen Sie sie durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   <mirrors>
     <mirror>
       <id>repo_name</id>
       <name>repo_name</name>
       <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
       <mirrorOf>*</mirrorOf>
     </mirror>
   </mirrors>
   ```

**Wichtig**  
Sie können einen beliebigen Wert im `<id>` Element verwenden, dieser muss jedoch in den `<repository>` Elementen `<server>` und identisch sein. Dadurch können die angegebenen Anmeldeinformationen in Anfragen an aufgenommen werden CodeCatalyst.

Nachdem Sie diese Konfigurationsänderungen vorgenommen haben, können Sie das Projekt erstellen.

```
mvn compile
```

## Pakete aus externen Paket-Repositorys abrufen über CodeCatalyst
<a name="mvn-install-public"></a>

Sie können Maven-Pakete aus öffentlichen Repositorys über ein CodeCatalyst Repository installieren, indem Sie es mit einer Upstream-Verbindung zum Gateway konfigurieren, das das Gateway-Repository darstellt. Aus dem Gateway-Repository installierte Pakete werden aufgenommen und in Ihrem Repository gespeichert. CodeCatalyst

 CodeCatalyst Unterstützt derzeit die folgenden öffentlichen Maven-Paket-Repositorys.
+ maven-central-gateway
+ google-android-gateway
+ gradle-plugins-gateway
+ Commonsware-Gateway

**Um Pakete aus öffentlichen Maven-Paket-Repositorys zu installieren**

1. Falls Sie es noch nicht getan haben, konfigurieren Sie es `mvn` mit Ihrem CodeCatalyst Paket-Repository, indem Sie die Schritte unter befolgen. [Abhängigkeiten werden abgerufen von CodeCatalyst](#mvn-fetch-dependencies)

1. Stellen Sie sicher, dass Ihr Repository das Gateway-Repository, von dem aus Sie installieren möchten, als Upstream-Verbindung hinzugefügt hat. Um zu überprüfen, welche Upstream-Quellen hinzugefügt wurden, oder um ein Gateway-Repository als Upstream-Quelle hinzuzufügen, folgen Sie den Anweisungen unter[Ein Upstream-Repository hinzufügen](packages-upstream-repositories-add.md).

Weitere Hinweise zum Anfordern von Paketen aus Upstream-Repositorys finden Sie unter. [Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md)

## Veröffentlichen von Paketen auf CodeCatalyst
<a name="mvn-publish-packages"></a>

Um ein Maven-Paket mit in einem CodeCatalyst Repository `mvn` zu veröffentlichen, müssen Sie auch das Projekt POM bearbeiten`~/.m2/settings.xml`.

**`mvn`Um Pakete in Ihrem CodeCatalyst Paket-Repository zu veröffentlichen**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie auf der Übersichtsseite für Ihr Projekt die Option **Pakete** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **mvn** aus der Liste der Package Manager-Clients aus.

1. Sie benötigen ein persönliches Zugriffstoken (PAT), mit dem Sie sich authentifizieren können. `mvn` CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Konfigurieren Sie mit Ihrem PAT eine Umgebungsvariable auf Ihrem lokalen Computer. Sie werden diese Umgebungsvariable in Ihrer `setting.xml` Datei verwenden.

   ```
   export CODECATALYST_ARTIFACTS_TOKEN=your_PAT
   ```

1. Fügen Sie einen `<servers>` Abschnitt `settings.xml` mit einem Verweis auf die `CodeCatalyst_ARTIFACTS_TOKEN` Umgebungsvariable hinzu, sodass Maven das Token in HTTP-Anfragen weitergibt.

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>repo-name</id>
               <username>username</username>
               <password>${env.CodeCatalyst_ARTIFACTS_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. Fügen Sie Ihrem Projekt einen `<distributionManagement>` Abschnitt hinzu. `pom.xml`

   ```
   <project>
   ...
        <distributionManagement>
            <repository>
                <id>repo_name</id>
                <name>repo_name</name>
                <url>https://packages.region.codecatalyst.aws/maven/space_name/proj_name/repo_name/</url>
            </repository>
        </distributionManagement>
   ...
   </project>
   ```

Nachdem Sie diese Konfigurationsänderungen vorgenommen haben, können Sie das Projekt erstellen und im angegebenen Repository veröffentlichen.

```
mvn deploy
```

Sie können in der CodeCatalyst Konsole zu Ihrem Paket-Repository navigieren, um zu überprüfen, ob das Paket erfolgreich veröffentlicht wurde.

## Pakete von Drittanbietern veröffentlichen
<a name="publishing-third-party-packages"></a>

Sie können Maven-Pakete von Drittanbietern in einem CodeCatalyst Repository mit `mvn deploy:deploy-file` veröffentlichen. Dies kann für Benutzer hilfreich sein, die Pakete veröffentlichen möchten und nur über JAR-Dateien verfügen und keinen Zugriff auf den Paketquellcode oder POM-Dateien haben.

Der `mvn deploy:deploy-file` Befehl generiert eine POM-Datei auf der Grundlage der in der Befehlszeile übergebenen Informationen.

Erstellen Sie zunächst eine PAT, falls Sie noch keine haben.

**Um ein persönliches Zugriffstoken (PAT) zu erstellen**

1. Wählen Sie in der oberen Menüleiste Ihr Profil-Badge und dann **Meine Einstellungen** aus. 
**Tipp**  
Du kannst dein Benutzerprofil auch finden, indem du die Mitgliederseite für ein Projekt oder einen Bereich aufrufst und deinen Namen aus der Mitgliederliste auswählst.

1. Geben Sie im Feld **PAT-Name** einen aussagekräftigen Namen für Ihr PAT ein.

1. Behalten Sie im Feld **Ablaufdatum** das Standarddatum bei oder wählen Sie das Kalendersymbol, um ein benutzerdefiniertes Datum auszuwählen. Das Ablaufdatum liegt standardmäßig auf einem Jahr ab dem aktuellen Datum.

1. Wählen Sie **Erstellen** aus.

   Sie können dieses Token auch erstellen, wenn Sie **Repository klonen** für ein Quell-Repository wählen.

1. Speichern Sie das PAT-Geheimnis an einem sicheren Ort. 
**Wichtig**  
Das PAT-Geheimnis wird nur einmal angezeigt. Sie können es nicht abrufen, nachdem Sie das Fenster geschlossen haben. 

**Um Maven-Pakete von Drittanbietern zu veröffentlichen**

1. Erstellen Sie eine `~/.m2/settings.xml` Datei mit dem folgenden Inhalt:

   ```
   <settings>
       <servers>
           <server>
               <id>repo_name</id>
               <username>username</username>
               <password>PAT}</password>
           </server>
       </servers>
   </settings>
   ```

1. Führen Sie den Befehl `mvn deploy:deploy-file` aus:

   ```
   mvn deploy:deploy-file -DgroupId=commons-cli          \
   -DartifactId=commons-cli       \
   -Dversion=1.4                  \
   -Dfile=./commons-cli-1.4.jar   \
   -Dpackaging=jar                \
   -DrepositoryId=repo-name      \
   -Durl=https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/
   ```
**Anmerkung**  
Das vorherige Beispiel veröffentlicht`commons-cli 1.4`. Ändern Sie die Argumente groupId, artifactID, version und file, um eine andere JAR zu veröffentlichen.

Diese Anweisungen basieren auf Beispielen im [Leitfaden zur Bereitstellung eines JARs Drittanbieter-Repositorys](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html) in der *Apache* Maven-Dokumentation. 

 Weitere Informationen finden Sie in den folgenden Themen auf der Apache Maven Project-Website:
+  [Einrichtung mehrerer Repositorys](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [Referenz für Einstellungen](https://maven.apache.org/settings.html) 
+  [Vertriebsmanagement](https://maven.apache.org/pom.html#Distribution_Management) 
+  [Profile](https://maven.apache.org/pom.html#Profiles) 

# Pakete mit curl veröffentlichen
<a name="packages-maven-curl"></a>

Dieser Abschnitt zeigt, wie Sie den HTTP-Client verwenden`curl`, um Maven-Pakete in einem CodeCatalyst Paket-Repository zu veröffentlichen. Das Veröffentlichen von Paketen mit `curl` kann nützlich sein, wenn Sie den Maven-Client nicht in Ihren Umgebungen haben oder installieren möchten.

**Um ein Maven-Paket zu veröffentlichen mit `curl`**

1. Sie müssen ein Personal Access Token (PAT) in einer Umgebungsvariablen speichern, mit der Sie sich authentifizieren `curl` können. CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, können Sie eine erstellen und die Umgebungsvariable konfigurieren.

   1. Erstellen Sie eine PAT, indem Sie die Schritte unter befolgen[Gewähren Sie Benutzern Repository-Zugriff mit persönlichen Zugriffstoken](ipa-tokens-keys.md). Kopieren Sie die PAT, um sie in einer Umgebungsvariablen zu speichern.

   1. Konfigurieren Sie in der Befehlszeile Ihres lokalen Computers eine Umgebungsvariable mit Ihrer PAT.

      ```
      export CodeCatalyst_ARTIFACTS_TOKEN=your_PAT
      ```

1. Verwenden Sie den folgenden `curl` Befehl, um die JAR in einem CodeCatalyst Repository zu veröffentlichen. Ersetzen Sie *username**space\$1name*,*proj\$1name*, und *repo\$1name* durch Ihren CodeCatalyst Benutzernamen, Bereichsnamen, Projektnamen und Paket-Repository-Namen.

   ```
   curl --request PUT https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/com/mycompany/app/my-app/1.0/my-app-1.0.jar \
        --user "username:CodeCatalyst_ARTIFACTS_TOKEN" --header "Content-Type: application/octet-stream" \
        --data-binary @target/path/to/my-app-1.0.jar
   ```

1. Verwenden Sie den folgenden `curl` Befehl, um das POM in einem CodeCatalyst Repository zu veröffentlichen. Ersetzen Sie *username**space\$1name*,*proj\$1name*, und *repo\$1name* durch Ihren CodeCatalyst Benutzernamen, Bereichsnamen, Projektnamen und Paket-Repository-Namen.

   ```
   curl --request PUT https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/com/mycompany/app/my-app/1.0/my-app-1.0.pom \
        --user "username:CodeCatalyst_ARTIFACTS_TOKEN" --header "Content-Type: application/octet-stream" \
        --data-binary @target/my-app-1.0.pom
   ```

1. Zu diesem Zeitpunkt befindet sich das Maven-Paket in Ihrem CodeCatalyst Repository mit dem Status. `Unfinished` Um das Paket nutzen zu können, muss es sich im `Published` Status befinden. Sie können das Paket von `Unfinished` nach verschieben, `Published` indem Sie entweder eine `maven-metadata.xml` Datei in Ihr Paket hochladen oder den Status in der CodeCatalyst Konsole ändern.

   1.  Option 1: Verwenden Sie den folgenden `curl` Befehl, um Ihrem Paket eine `maven-metadata.xml` Datei hinzuzufügen. Ersetzen Sie *username**space\$1name*,*proj\$1name*, und *repo\$1name* durch Ihren CodeCatalyst Benutzernamen, Bereichsnamen, Projektnamen und Paket-Repository-Namen. 

      ```
      curl --request PUT https://packages.region.codecatalyst.aws/maven/space-name/proj-name/repo-name/com/mycompany/app/my-app/maven-metadata.xml \
           --user "username:CodeCatalyst_ARTIFACTS_TOKEN" --header "Content-Type: application/octet-stream" \
           --data-binary @target/maven-metadata.xml
      ```

      Es folgt ein Beispiel für den Inhalt einer `maven-metadata.xml` Datei:

      ```
      <metadata modelVersion="1.1.0">
          <groupId>com.mycompany.app</groupId>
          <artifactId>my-app</artifactId>
          <versioning>
              <latest>1.0</latest>
              <release>1.0</release>
              <versions>
                  <version>1.0</version>
              </versions>
              <lastUpdated>20200731090423</lastUpdated>
          </versioning>
      </metadata>
      ```

   1.  Option 2: Aktualisieren Sie den Paketstatus `Published` in der CodeCatalyst Konsole auf. Informationen zum Aktualisieren des Status einer Paketversion finden Sie unter[Den Status einer Paketversion aktualisieren](working-with-packages-update-version-status.md). 

Wenn Sie nur über die JAR-Datei eines Pakets verfügen, können Sie die Version eines verbrauchbaren Pakets in einem CodeCatalyst Repository veröffentlichen, indem `mvn` Sie. Dies kann nützlich sein, wenn Sie keinen Zugriff auf den Quellcode oder POM des Pakets haben. Details dazu finden Sie unter [Pakete von Drittanbietern veröffentlichen](packages-maven-mvn.md#publishing-third-party-packages).

# Maven-Prüfsummen und Snapshots verwenden
<a name="packages-maven-checksums-snapshots"></a>

In den folgenden Abschnitten wird beschrieben, wie Sie Maven-Prüfsummen und Maven-Snapshots in verwenden. CodeCatalyst

## Verwendung von Maven-Prüfsummen
<a name="maven-checksums"></a>

 Wenn ein Maven-Paket in einem Paket-Repository veröffentlicht wird, wird die mit jedem *Asset* oder jeder Datei im CodeCatalyst Paket verknüpfte Prüfsumme verwendet, um den Upload zu validieren. Beispiele für Assets sind *JAR* -, *POM* - und *WAR-Dateien*. Für jedes Asset enthält das Maven-Paket mehrere Prüfsummendateien, die den Asset-Namen mit einer zusätzlichen Erweiterung wie `md5` oder verwenden. `sha1` Beispielsweise `my-maven-package.jar` könnten die Prüfsummendateien für eine Datei mit dem Namen und lauten. `my-maven-package.jar.md5` `my-maven-package.jar.sha1` 

 Jedes Maven-Paket enthält auch eine `maven-metadata.xml` Datei. Diese Datei muss hochgeladen werden, damit eine Veröffentlichung erfolgreich ist. Wenn beim Upload einer Paketdatei eine nicht übereinstimmende Prüfsumme festgestellt wird, wird die Veröffentlichung beendet. Dies könnte verhindern, dass die `maven-metadata.xml` hochgeladen werden. In diesem Fall wird der Status des Maven-Pakets auf `Unfinished` gesetzt. Sie können keine Assets herunterladen, die Teil eines Pakets mit diesem Status sind. 

Beachten Sie Folgendes, falls die Prüfsummen nicht übereinstimmen, wenn Sie ein Maven-Paket veröffentlichen: 
+  Wenn die Prüfsummenabweichung vor dem Upload auftritt, `maven-metadata.xml` wird der Status des Pakets nicht auf gesetzt. `Unfinished` Das Paket ist nicht sichtbar und seine Ressourcen können nicht verwendet werden. Versuchen Sie in diesem Fall einen der folgenden Schritte, und versuchen Sie dann erneut, das Asset herunterzuladen. 
  + Führen Sie den Befehl, der das Maven-Paket veröffentlicht, erneut aus. Dies könnte funktionieren, wenn ein Netzwerkproblem die Prüfsummendatei beim Herunterladen beschädigt hat. Wenn das Netzwerkproblem für den erneuten Versuch behoben wurde, stimmt die Prüfsumme überein und der Download ist erfolgreich. 
  +  Wenn das erneute Veröffentlichen des Maven-Pakets nicht funktioniert, löschen Sie das Paket und veröffentlichen Sie es erneut. 
+  Wenn die Prüfsummenabweichung nach dem Upload auftritt, `maven-metadata.xml` wird der Status des Pakets auf gesetzt. `Published` Sie können alle Inhalte aus dem Paket verwenden, auch solche, bei denen die Prüfsummen nicht übereinstimmen. Wenn Sie ein Asset herunterladen, CodeCatalyst wird die von generierte Prüfsumme zusammen mit dem Asset heruntergeladen. Wenn die heruntergeladene Datei mit einer nicht übereinstimmenden Prüfsumme verknüpft ist, stimmt die heruntergeladene Prüfsummendatei möglicherweise nicht mit der Prüfsumme überein, die bei der Veröffentlichung des Pakets hochgeladen wurde. 

## Verwenden von Maven-Snapshots
<a name="maven-snapshots"></a>

 Ein *Maven-Snapshot* ist eine spezielle Version eines Maven-Pakets, das sich auf den neuesten Produktions-Branch-Code bezieht. Es ist eine Entwicklungsversion, die der endgültigen Release-Version vorausgeht. Sie können eine Snapshot-Version eines Maven-Pakets anhand des Suffix identifizieren, das an `SNAPSHOT` die Paketversion angehängt wird. Der Snapshot der Version lautet beispielsweise. `1.1` `1.1-SNAPSHOT` Weitere Informationen finden Sie unter [Was ist eine SNAPSHOT-Version?](https://maven.apache.org/guides/getting-started/index.html#What_is_a_SNAPSHOT_version) auf der Website des Apache Maven Project. 

 CodeCatalyst unterstützt das Veröffentlichen und Verwenden von Maven-Snapshots. Sie können einen Maven-Snapshot in einem CodeCatalyst Repository oder, wenn Sie direkt verbunden sind, in einem Upstream-Repository veröffentlichen. Eine Snapshot-Version sowohl in einem Paket-Repository als auch in einem seiner Upstream-Repositorys wird jedoch nicht unterstützt. Wenn Sie beispielsweise ein Maven-Paket mit Version `1.2-SNAPSHOT` in Ihr Paket-Repository hochladen, CodeCatalyst unterstützt das Hochladen eines Maven-Pakets mit derselben Snapshot-Version in eines seiner Upstream-Repositorys nicht. Dieses Szenario kann zu unvorhersehbaren Ergebnissen führen. 

 Wenn ein Maven-Snapshot veröffentlicht wird, wird seine vorherige Version in einer neuen Version, einem sogenannten *Build*, beibehalten. Jedes Mal, wenn ein Maven-Snapshot veröffentlicht wird, wird eine neue Build-Version erstellt. Alle vorherigen Versionen eines Snapshots werden in seinen Build-Versionen beibehalten. Wenn ein Maven-Snapshot veröffentlicht wird, wird sein Status auf gesetzt `Published` und der Status des Builds, der die vorherige Version enthält, wird auf `Unlisted` gesetzt. 

 Wenn Sie einen Snapshot anfordern, `Published` wird die Version mit dem Status zurückgegeben. Dies ist immer die neueste Version des Maven-Snapshots. Sie können auch einen bestimmten Build eines Snapshots anfordern. 

Verwenden Sie die CodeCatalyst Konsole, um alle Build-Versionen eines Maven-Snapshots zu löschen.

# Benutzen NuGet
<a name="packages-nuget"></a>

In diesen Themen wird beschrieben, wie Sie `NuGet` Pakete mit verwenden und veröffentlichen CodeCatalyst.

**Anmerkung**  
CodeCatalyst unterstützt [NuGetVersion 4.8](https://docs.microsoft.com/en-us/nuget/release-notes/nuget-4.8-rtm) und höher.

**Topics**
+ [Verwendung CodeCatalyst mit Visual Studio](packages-nuget-visual-studio.md)
+ [Konfiguration und Verwendung der Nuget- oder Dotnet-CLI](packages-nuget-cli.md)
+ [NuGet Normalisierung von Paketnamen, Version und Assetnamen](nuget-name-normalization.md)
+ [NuGet kompatibilität](packages-nuget-compatibility.md)

# Verwendung CodeCatalyst mit Visual Studio
<a name="packages-nuget-visual-studio"></a>

 Sie können Pakete CodeCatalyst direkt in Visual Studio verwenden. 

Informationen zur Konfiguration und Verwendung NuGet mit CLI-Tools wie `dotnet` oder `nuget` finden Sie unter[Konfiguration und Verwendung der Nuget- oder Dotnet-CLI](packages-nuget-cli.md).

**Contents**
+ [Konfiguration von Visual Studio mit CodeCatalyst](#packages-nuget-vs-configure)
  + [Windows](#packages-nuget-vs-configure-windows)
  + [macOS](#packages-nuget-vs-configure-mac)

## Konfiguration von Visual Studio mit CodeCatalyst
<a name="packages-nuget-vs-configure"></a>

### Windows
<a name="packages-nuget-vs-configure-windows"></a>

**Um Visual Studio zu konfigurieren mit CodeCatalyst**

1. Für die Authentifizierung ist ein Personal Access Token (PAT) erforderlich. CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, folgen Sie den Anweisungen unter[Gewähren Sie Benutzern Repository-Zugriff mit persönlichen Zugriffstoken](ipa-tokens-keys.md), um eine zu erstellen.

1. Verwenden Sie `nuget` oder`dotnet`, um Ihr Paket-Repository und Ihre Anmeldeinformationen zu konfigurieren.

------
#### [ dotnet ]

   **Linux- und macOS-Benutzer:** Da Verschlüsselung auf Nicht-Windows-Plattformen nicht unterstützt wird, müssen Sie dem folgenden Befehl das `--store-password-in-clear-text` Flag hinzufügen. Beachten Sie, dass dadurch Ihr Passwort als Klartext in Ihrer Konfigurationsdatei gespeichert wird.

   ```
   dotnet nuget add source https://packages.region.codecatalyst.aws/nuget/space-name/proj-name/repo-name/v3/index.json --name repo_name --password PAT --username user_name
   ```

------
#### [ nuget ]

   ```
   nuget sources add -name repo_name -Source https://packages.region.codecatalyst.aws/nuget/space-name/proj-name/repo-name/v3/index.json -password PAT --username user_name
   ```

------

   Beispielausgabe:

   ```
   Package source with Name: repo_name added successfully.
   ```

1. Konfigurieren Sie Visual Studio so, dass es Ihre neue Paketquelle verwendet. Wählen Sie in Visual Studio **Tools** und dann **Optionen** aus.

1. Erweitern Sie im **Optionsmenü** den Abschnitt **NuGet Package Manager** und wählen Sie **Package Sources** aus.

1. Stellen Sie in der Liste **Verfügbare Paketquellen** sicher, dass Ihre *repo\$1name* Quelle aktiviert ist. Wenn Sie Ihr Paket-Repository mit einer Upstream-Verbindung zur NuGet Gallery konfiguriert haben, deaktivieren Sie die **nuget.org-Quelle**.

### macOS
<a name="packages-nuget-vs-configure-mac"></a>

**Um Visual Studio zu konfigurieren mit CodeCatalyst**

1. Für die Authentifizierung ist ein Personal Access Token (PAT) erforderlich. CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, folgen Sie den Anweisungen unter[Gewähren Sie Benutzern Repository-Zugriff mit persönlichen Zugriffstoken](ipa-tokens-keys.md), um eine zu erstellen.

1. Wählen Sie in der Menüleiste **Einstellungen** aus.

1. Wählen Sie in dem **NuGet**Abschnitt **Quellen** aus.

1. Wählen Sie **Hinzufügen und fügen** Sie Ihre Repository-Informationen hinzu.

   1. Geben Sie unter **Name** den Namen Ihres CodeCatalyst Paket-Repositorys ein.

   1. Geben Sie als **Speicherort** den Endpunkt Ihres CodeCatalyst Paket-Repositorys ein. Der folgende Ausschnitt zeigt einen Beispielendpunkt. Ersetzen Sie *space-name**proj-name*, und *repo-name* durch Ihren CodeCatalyst Bereichsnamen, Projektnamen und Repository-Namen.

      ```
      https://packages.region.codecatalyst.aws/nuget/space-name/proj-name/repo-name/
      ```

   1. Geben Sie für **Username** einen beliebigen gültigen Wert ein.

   1. Geben Sie als **Passwort** Ihre PAT ein.

1. Wählen Sie **Add source (Quelle hinzufügen)** aus.

1. Wenn Sie Ihr Paket-Repository mit einer Upstream-Verbindung zur NuGet Gallery konfiguriert haben, deaktivieren Sie die **nuget.org-Quelle**.

Nach der Konfiguration kann Visual Studio Pakete aus Ihrem CodeCatalyst Repository, einem seiner Upstream-Repositorys oder [NuGetvon.org](https://www.nuget.org/) verwenden, wenn Sie es als Upstream-Quelle konfiguriert haben. Weitere Informationen zum Durchsuchen und Installieren von NuGet Paketen in Visual Studio finden [Sie in der *NuGet Dokumentation* unter Installieren und Verwalten von Paketen in Visual Studio mithilfe des NuGet Paket-Managers](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-visual-studio).

# Konfiguration und Verwendung der Nuget- oder Dotnet-CLI
<a name="packages-nuget-cli"></a>

Sie können CLI-Tools wie `NuGet` und verwenden`dotnet`, um Pakete zu veröffentlichen und zu konsumieren CodeCatalyst. Dieses Dokument enthält Informationen zur Konfiguration der CLI-Tools und deren Verwendung zum Veröffentlichen oder Verwenden von Paketen.

**Contents**
+ [Konfiguration NuGet mit CodeCatalyst](#nuget-configure-cli)
+ [NuGet Pakete aus einem CodeCatalyst Repository konsumieren](#nuget-consume-cli)
+ [NuGet Pakete von.org konsumieren bis NuGet CodeCatalyst](#nuget-consume-nuget-gallery)
+ [Pakete veröffentlichen NuGet auf CodeCatalyst](#nuget-publish-cli)

## Konfiguration NuGet mit CodeCatalyst
<a name="nuget-configure-cli"></a>

Um NuGet mit zu konfigurieren CodeCatalyst, fügen Sie Ihrer NuGet Konfigurationsdatei einen Repository-Endpunkt und ein persönliches Zugriffstoken hinzu, um Ihr CodeCatalyst Paket-Repository `dotnet` zu ermöglichen `nuget` oder eine Verbindung zu diesem herzustellen.

**Zur Konfiguration NuGet mit Ihrem CodeCatalyst Paket-Repository**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie auf der Übersichtsseite für Ihr Projekt die Option **Pakete** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **NuGet**oder **dotnet** aus der Liste der Package Manager-Clients aus. 

1. Sie benötigen ein persönliches Zugriffstoken (PAT), mit dem Sie sich authentifizieren können. NuGet CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Konfigurieren `nuget` oder verwenden Sie `dotnet` den NuGet Endpunkt und die CodeCatalyst PAT Ihres Repositorys. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *username*Ersetzen Sie sie durch Ihren CodeCatalyst Benutzernamen.
   + Ersetzen Sie es *PAT* durch Ihr CodeCatalyst PAT.
   + *space\$1name*Ersetzen Sie es durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   1. Verwenden Sie für `nuget` den Befehl `nuget sources add`.

      ```
      nuget sources add -name "repo_name" -Source "https://packages.region.codecatalyst.aws/nuget/space_name/proj_name/repo_name/v3/index.json" -username "username" -password "PAT"
      ```

   1. Verwenden Sie für `dotnet` den Befehl `dotnet nuget add source`.

      **Linux- und macOS-Benutzer**: Da Verschlüsselung auf Nicht-Windows-Plattformen nicht unterstützt wird, müssen Sie dem folgenden Befehl das `--store-password-in-clear-text` Flag hinzufügen. Beachten Sie, dass dadurch Ihr Passwort als Klartext in Ihrer Konfigurationsdatei gespeichert wird.

      ```
      dotnet nuget add source "https://packages.region.codecatalyst.aws/nuget/space_name/proj_name/repo_name/v3/index.json" -n "proj_name/repo_name" -u "username" -p "PAT" --store-password-in-clear-text
      ```

Sobald Sie NuGet mit konfiguriert haben CodeCatalyst, können Sie [ NuGet Pakete verwenden,](#nuget-consume-cli) die in Ihrem CodeCatalyst Repository oder einem seiner Upstream-Repositorys gespeichert sind, und [ NuGet Pakete in Ihrem CodeCatalyst Repository veröffentlichen](#nuget-publish-cli).

## NuGet Pakete aus einem CodeCatalyst Repository konsumieren
<a name="nuget-consume-cli"></a>

Sobald Sie [ NuGet mit konfiguriert](#nuget-configure-cli) haben CodeCatalyst, können Sie NuGet Pakete nutzen, die in Ihrem CodeCatalyst Repository oder einem seiner Upstream-Repositorys gespeichert sind.

Um eine Paketversion aus einem CodeCatalyst Repository oder einem seiner Upstream-Repositorys mit Nuget oder Dotnet zu nutzen, führen Sie den folgenden Befehl aus. *packageName*Ersetzen Sie es durch den Namen des Pakets, das Sie nutzen möchten, und *packageSourceName* durch den Quellnamen für Ihr CodeCatalyst Paket-Repository in Ihrer NuGet Konfigurationsdatei, der der Repository-Name sein sollte.

**Um ein Paket zu installieren mit `dotnet`**

```
dotnet add packageName --source packageSourceName
```

**Um ein Paket zu installieren mit `nuget`**

```
nuget install packageName --source packageSourceName
```

Weitere Informationen finden Sie unter [Pakete mit der Nuget-CLI verwalten](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-nuget-cli) oder [Pakete mit der Dotnet-CLI installieren und verwalten](https://docs.microsoft.com/en-us/nuget/consume-packages/install-use-packages-dotnet-cli) in der *Microsoft-Dokumentation*.

## NuGet Pakete von.org konsumieren bis NuGet CodeCatalyst
<a name="nuget-consume-nuget-gallery"></a>

Sie können NuGet Pakete von [NuGet.org](https://www.nuget.org/) über ein CodeCatalyst Repository konsumieren, indem Sie das Repository mit einer Upstream-Verbindung zu **NuGet.org** konfigurieren. Pakete, die von **NuGet.org** konsumiert werden, werden aufgenommen und in Ihrem CodeCatalyst Repository gespeichert.

**Um Pakete von NuGet .org zu konsumieren**

1. Falls Sie es noch nicht getan haben, konfigurieren Sie Ihren NuGet Paketmanager mit Ihrem CodeCatalyst Paket-Repository, indem Sie die Schritte unter befolgen[Konfiguration NuGet mit CodeCatalyst](#nuget-configure-cli). 

1. Stellen Sie sicher, dass Ihr Repository **NuGet.org** als Upstream-Verbindung hinzugefügt hat. Sie können überprüfen, welche Upstream-Quellen hinzugefügt wurden, oder **NuGet.org** als Upstream-Quelle hinzufügen, indem Sie den Anweisungen unter folgen [Ein Upstream-Repository hinzufügen](packages-upstream-repositories-add.md) und das **NuGet Store-Repository** auswählen.

## Pakete veröffentlichen NuGet auf CodeCatalyst
<a name="nuget-publish-cli"></a>

Sobald Sie [ NuGet mit konfiguriert](#nuget-configure-cli) haben, können Sie `nuget` oder verwenden CodeCatalyst, um Paketversionen in Repositorys `dotnet` zu CodeCatalyst veröffentlichen.

Um eine Paketversion in ein CodeCatalyst Repository zu übertragen, führen Sie den folgenden Befehl mit dem vollständigen Pfad zu Ihrer `.nupkg` Datei und dem Quellnamen für Ihr CodeCatalyst Repository in Ihrer NuGet Konfigurationsdatei aus.

**Um ein Paket zu veröffentlichen mit `dotnet`**

```
dotnet nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg --source packageSourceName
```

**Um ein Paket zu veröffentlichen mit `nuget`**

```
nuget push path/to/nupkg/SamplePackage.1.0.0.nupkg --source packageSourceName
```

# NuGet Normalisierung von Paketnamen, Version und Assetnamen
<a name="nuget-name-normalization"></a>

CodeCatalyst normalisiert Paket- und Assetnamen und Paketversionen, bevor sie gespeichert werden, was bedeutet, dass sich die Namen oder Versionen in denen unterscheiden CodeCatalyst können, die bei der Veröffentlichung des Pakets oder Assets angegeben wurden.

Normalisierung von **Paketnamen: CodeCatalyst Normalisiert** NuGet Paketnamen, indem alle Buchstaben in Kleinbuchstaben umgewandelt werden.

**Normalisierung der Paketversion:** CodeCatalyst normalisiert NuGet Paketversionen nach demselben Muster wie. NuGet Die folgenden Informationen stammen aus den [normalisierten Versionsnummern](https://docs.microsoft.com/en-us/nuget/concepts/package-versioning#normalized-version-numbers) aus der Dokumentation. NuGet 
+ Führende Nullen werden aus den Versionsnummern entfernt:
  + `1.00`wird behandelt als `1.0`
  + `1.01.1`wird behandelt als `1.1.1`
  + `1.00.0.1`wird behandelt als `1.0.0.1`
+ Eine Null im vierten Teil der Versionsnummer wird weggelassen:
  + `1.0.0.0`wird behandelt als `1.0.0`
  + `1.0.01.0`wird behandelt als `1.0.1`
+ SemVer Die Build-Metadaten von 2.0.0 wurden entfernt:
  + `1.0.7+r3456`wird behandelt als `1.0.7`

**Normalisierung von Paket-Assetnamen:** CodeCatalyst Konstruiert den NuGet Paket-Assetnamen aus dem normalisierten Paketnamen und der Paketversion.

# NuGet kompatibilität
<a name="packages-nuget-compatibility"></a>

 Dieses Handbuch enthält Informationen zur CodeCatalyst Kompatibilität mit verschiedenen NuGet Tools und Versionen. 

**Topics**
+ [Allgemeine NuGet Kompatibilität](#nuget-version-support)
+ [NuGet Unterstützung für die Befehlszeile](#nuget-command-line-support)

## Allgemeine NuGet Kompatibilität
<a name="nuget-version-support"></a>

CodeCatalyst unterstützt NuGet 4.8 und höher.

CodeCatalyst unterstützt nur Version 3 des NuGet HTTP-Protokolls. Dies bedeutet, dass einige CLI-Befehle, die Version V2 des Protokolls verwenden, nicht unterstützt werden. Weitere Informationen finden Sie [Unterstützung für Nuget-Befehle](#nuget-command-support) im folgenden Abschnitt.

CodeCatalyst unterstützt PowerShellGet 2.x nicht.

## NuGet Unterstützung für die Befehlszeile
<a name="nuget-command-line-support"></a>

CodeCatalyst unterstützt die CLI-Tools NuGet (`nuget`) und .NET Core (`dotnet`).

### Unterstützung für Nuget-Befehle
<a name="nuget-command-support"></a>

Da CodeCatalyst nur das HTTP-Protokoll V3 NuGet von unterstützt wird, funktionieren die folgenden Befehle nicht, wenn sie für CodeCatalyst Ressourcen verwendet werden:
+ `list`: Der `nuget list` Befehl zeigt eine Liste von Paketen aus einer bestimmten Quelle an. Um eine Liste der Pakete in einem CodeCatalyst Paket-Repository abzurufen, navigieren Sie in der CodeCatalyst Konsole zum Repository.

# Verwenden von Python
<a name="packages-python"></a>

In diesen Themen wird beschrieben`pip`, wie Sie den Python-Paketmanager und `twine` das Python-Hilfsprogramm zur Paketveröffentlichung mit verwenden CodeCatalyst.

**Topics**
+ [Pip konfigurieren und Python-Pakete installieren](packages-python-pip.md)
+ [Twine konfigurieren und Python-Pakete veröffentlichen](packages-python-twine.md)
+ [Normalisierung von Python-Paketnamen](python-name-normalization.md)
+ [Python-Kompatibilität](packages-python-compatibility.md)

# Pip konfigurieren und Python-Pakete installieren
<a name="packages-python-pip"></a>

Um `pip` mit zu verwenden CodeCatalyst, müssen Sie eine Verbindung `pip` zu Ihrem Paket-Repository herstellen und ein persönliches Zugriffstoken für die Authentifizierung bereitstellen. Anweisungen zum Herstellen einer Verbindung `pip` zu Ihrem Paket-Repository finden Sie in der CodeCatalyst Konsole. Nachdem Sie sich authentifiziert und eine `pip` Verbindung hergestellt haben CodeCatalyst, können Sie `pip` Befehle ausführen.

**Contents**
+ [Python-Pakete CodeCatalyst mit pip installieren](#pip-install)
+ [Python-Pakete von PyPI konsumieren bis CodeCatalyst](#pip-install-pypi)
+ [Unterstützung für Pip-Befehle](#pip-command-support)
  + [Unterstützte Befehle, die mit einem Repository interagieren](#supported-pip-commands-that-interact-with-a-repository)
  + [Unterstützte clientseitige Befehle](#supported-pip-client-side-commands)

## Python-Pakete CodeCatalyst mit pip installieren
<a name="pip-install"></a>

Die folgenden Anweisungen erklären, wie Sie die Installation von Python-Paketen aus Ihrem CodeCatalyst Paket-Repository oder einem seiner Upstream-Repositorys konfigurieren`pip`.

**Um Python-Pakete aus Ihrem CodeCatalyst Paket-Repository `pip` zu konfigurieren und zu installieren**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie auf der Übersichtsseite für Ihr Projekt die Option **Pakete** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **pip** aus der Liste der Paketmanager-Clients aus.

1. Sie benötigen ein Personal Access Token (PAT), mit dem Sie Pip authentifizieren können. CodeCatalyst Wenn Sie bereits eines haben, können Sie dieses verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Verwenden Sie den `pip config` Befehl, um die CodeCatalyst Registrierungs-URL und die Anmeldeinformationen festzulegen. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
   + *username*Ersetzen Sie sie durch Ihren CodeCatalyst Benutzernamen.
   + Ersetzen Sie es *PAT* durch Ihr CodeCatalyst PAT.
   + *space\$1name*Ersetzen Sie es durch Ihren CodeCatalyst Bereichsnamen.
   + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
   + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

   ```
   pip config set global.index-url https://username:PAT@https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/simple/
   ```

1. Unter der Annahme, dass ein Paket in Ihrem Repository oder einem seiner Upstream-Repositorys vorhanden ist, können Sie es mit `pip install` installieren. Verwenden Sie beispielsweise den folgenden Befehl, um das `requests` Paket zu installieren.

   ```
   pip install requests
   ```

   Verwenden Sie die `-i` Option, um vorübergehend zur Installation von Paketen von [https://pypi.org](https://pypi.org) statt von Ihrem CodeCatalyst Paket-Repository zurückzukehren.

   ```
   pip install -i https://pypi.org/simple requests
   ```

## Python-Pakete von PyPI konsumieren bis CodeCatalyst
<a name="pip-install-pypi"></a>

**Sie können Python-Pakete aus dem [Python Package Index (PyPI)](https://www.pypi.org/) über ein CodeCatalyst Repository konsumieren, indem Sie das Repository mit einer Upstream-Verbindung zu PyPI konfigurieren.** Von **PyPI** konsumierte Pakete werden aufgenommen und in Ihrem Repository gespeichert. CodeCatalyst 

**Um Pakete von PyPI zu konsumieren**

1. Falls Sie es noch nicht getan haben, konfigurieren Sie pip mit Ihrem CodeCatalyst Paket-Repository, indem Sie die Schritte unter befolgen. [Python-Pakete CodeCatalyst mit pip installieren](#pip-install) 

1. Stellen Sie sicher, dass Ihr Repository **PyPI** als Upstream-Quelle hinzugefügt hat. Sie können überprüfen, welche Upstream-Quellen hinzugefügt wurden, oder **PyPI** als Upstream-Quelle hinzufügen, indem Sie den Anweisungen unter folgen [Ein Upstream-Repository hinzufügen](packages-upstream-repositories-add.md) und das **PyPI-Speicher-Repository** auswählen.

Weitere Informationen zum Anfordern von Paketen aus Upstream-Repositorys finden Sie unter. [Eine Paketversion mit Upstream-Repositorys anfordern](packages-upstream-repositories-request.md)

## Unterstützung für Pip-Befehle
<a name="pip-command-support"></a>

In den folgenden Abschnitten werden die Pip-Befehle zusammengefasst, die von CodeCatalyst Repositorys unterstützt werden, zusätzlich zu bestimmten Befehlen, die nicht unterstützt werden.

**Topics**
+ [Unterstützte Befehle, die mit einem Repository interagieren](#supported-pip-commands-that-interact-with-a-repository)
+ [Unterstützte clientseitige Befehle](#supported-pip-client-side-commands)

### Unterstützte Befehle, die mit einem Repository interagieren
<a name="supported-pip-commands-that-interact-with-a-repository"></a>

In diesem Abschnitt sind `pip` Befehle aufgeführt, bei denen der `pip` Client eine oder mehrere Anfragen an die Registry stellt, mit der er konfiguriert wurde. Es wurde überprüft, ob diese Befehle korrekt funktionieren, wenn sie in einem CodeCatalyst Paket-Repository aufgerufen werden.


****  

| Befehl | Description | 
| --- | --- | 
|   [install](https://pip.pypa.io/en/stable/reference/pip_install/)   |  Pakete installieren.  | 
|   [herunterladen](https://pip.pypa.io/en/stable/reference/pip_download/)   |  Pakete herunterladen.  | 

CodeCatalyst implementiert nicht`pip search`. Wenn Sie `pip` mit einem CodeCatalyst Paket-Repository konfiguriert haben, `pip search` werden beim Ausführen Pakete von [PyPI](https://pypi.org/) gesucht und angezeigt.

### Unterstützte clientseitige Befehle
<a name="supported-pip-client-side-commands"></a>

Diese Befehle erfordern keine direkte Interaktion mit einem Repository und müssen daher auch CodeCatalyst nicht unterstützt werden.


****  

| Befehl | Description | 
| --- | --- | 
|   [deinstallieren](https://pip.pypa.io/en/stable/reference/pip_uninstall/)   |  Pakete deinstallieren.  | 
|   [einfrieren](https://pip.pypa.io/en/stable/reference/pip_freeze/)   |  Gibt installierte Pakete im Anforderungsformat aus.  | 
|   [Liste](https://pip.pypa.io/en/stable/reference/pip_list/)   |  Listet die installierten Pakete auf.  | 
|   [sh](https://pip.pypa.io/en/stable/reference/pip_show/)ow   |  Zeigt Informationen über installierte Pakete an.  | 
|   [überprüfen](https://pip.pypa.io/en/stable/reference/pip_check/)   |  Stellen Sie sicher, dass die installierten Pakete kompatible Abhängigkeiten haben.  | 
|   [config](https://pip.pypa.io/en/stable/reference/pip_config/)   |  Verwalten Sie die lokale und globale Konfiguration.  | 
|   [Rad](https://pip.pypa.io/en/stable/reference/pip_wheel/)   |  Baue Räder nach deinen Anforderungen.  | 
|   [Hash](https://pip.pypa.io/en/stable/reference/pip_hash/)   |  Berechnet die Hashes von Paketarchiven.  | 
|   [Fertigstellung](https://pip.pypa.io/en/stable/user_guide/#command-completion)   |  Hilft bei der Befehlsvervollständigung.  | 
|   [debug](https://pip.pypa.io/en/stable/reference/pip_debug/)   |  Zeigt Informationen an, die für das Debuggen nützlich sind.  | 
|  help  |  Zeigt Hilfe für Befehle an.  | 

# Twine konfigurieren und Python-Pakete veröffentlichen
<a name="packages-python-twine"></a>

Um `twine` mit zu verwenden CodeCatalyst, müssen Sie eine Verbindung `twine` zu Ihrem Paket-Repository herstellen und ein persönliches Zugriffstoken für die Authentifizierung bereitstellen. Anweisungen zum Herstellen einer Verbindung `twine` zu Ihrem Paket-Repository finden Sie in der CodeCatalyst Konsole. Nachdem Sie sich authentifiziert und eine `twine` Verbindung hergestellt haben CodeCatalyst, können Sie `twine` Befehle ausführen.

## Pakete CodeCatalyst mit Twine veröffentlichen
<a name="packages-twine-publish"></a>

Die folgenden Anweisungen erklären, wie Sie sich authentifizieren und eine Verbindung `twine` zu Ihrem CodeCatalyst Paket-Repository herstellen können.

**Zur Konfiguration und Verwendung `twine` zum Veröffentlichen von Paketen in Ihrem CodeCatalyst Paket-Repository**

1. Öffnen Sie die CodeCatalyst Konsole unter [https://codecatalyst.aws/](https://codecatalyst.aws/).

1. Wählen Sie auf der Übersichtsseite für Ihr Projekt die Option **Pakete** aus.

1. Wählen Sie Ihr Paket-Repository aus der Liste der Paket-Repositorys aus.

1. Wählen Sie **Mit Repository verbinden**.

1. Wählen **Sie im Dialogfeld Mit Repository verbinden** die Option **Twine** aus der Liste der Paketmanager-Clients aus.

1. Sie benötigen ein Personal Access Token (PAT), mit dem Sie Twine authentifizieren können. CodeCatalyst Wenn Sie bereits einen haben, können Sie diesen verwenden. Wenn nicht, können Sie hier eine erstellen.

   1. Wählen Sie **Token erstellen**.

   1. Wählen Sie **Kopieren**, um Ihre PAT zu kopieren.
**Warnung**  
Sie können Ihre PAT nicht mehr sehen oder kopieren, nachdem Sie das Dialogfeld geschlossen haben.

1. Sie können Twine mit einer `.pypirc` Datei oder mit Umgebungsvariablen konfigurieren.

   1. **Um mit einer `.pypirc` Datei zu konfigurieren.**

      Öffnen Sie `~/.pypirc` in einem Editor Ihrer Wahl.

      Fügen Sie einen Indexserver für hinzu CodeCatalyst, einschließlich des Repositorys, des Benutzernamens und der PAT, die Sie in einem vorherigen Schritt erstellt und kopiert haben. Ersetzen Sie die folgenden Werte.
**Anmerkung**  
Wenn Sie Anweisungen aus der Konsole kopieren, sollten die folgenden Werte für Sie aktualisiert und nicht geändert werden.
      + *username*Ersetzen Sie sie durch Ihren CodeCatalyst Benutzernamen.
      + Ersetzen Sie es *PAT* durch Ihr CodeCatalyst PAT.
      + *space\$1name*Ersetzen Sie es durch Ihren CodeCatalyst Bereichsnamen.
      + Ersetze es *proj\$1name* durch deinen CodeCatalyst Projektnamen.
      + Ersetzen Sie es durch *repo\$1name* den Namen Ihres CodeCatalyst Paket-Repositorys.

      ```
      [distutils]
      index-servers = proj-name/repo-name
      
      [proj-name/repo-name]
      repository = https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/
      password = PAT
      username = username
      ```

   1. **Zur Konfiguration mit Umgebungsvariablen.**

      Stellen Sie die folgenden Umgebungsvariablen ein. Geben Sie den `TWINE_REPOSITORY_URL` Wert update und die Namen Ihres CodeCatalyst Space- *space\$1name* *proj\$1name**repo\$1name*, Projekt- und Paket-Repositorys ein.

      ```
      export TWINE_USERNAME=username
      ```

      ```
      export TWINE_PASSWORD=PAT
      ```

      ```
      export TWINE_REPOSITORY_URL="https://packages.region.codecatalyst.aws/pypi/space_name/proj_name/repo_name/"
      ```

1. Veröffentlichen Sie eine Python-Distribution mit dem `twine upload` Befehl.

# Normalisierung von Python-Paketnamen
<a name="python-name-normalization"></a>

CodeCatalyst normalisiert Paketnamen, bevor sie gespeichert werden, was bedeutet, dass sich die Paketnamen in CodeCatalyst möglicherweise von dem Namen unterscheiden, der bei der Veröffentlichung des Pakets angegeben wurde.

Bei Python-Paketen wird der Paketname bei der Normalisierung in Kleinbuchstaben geschrieben und alle Instanzen der Zeichen`.`,`-`, und `_` werden durch ein einzelnes Zeichen ersetzt. `-` Die Paketnamen `pigeon_cli` und und `pigeon.cli` werden also normalisiert und gespeichert als. `pigeon-cli` Der nicht normalisierte Name kann von pip und twine verwendet werden. Weitere Informationen zur Normalisierung von Python-Paketnamen finden Sie unter [PEP 503](https://www.python.org/dev/peps/pep-0503/#normalized-names) in der Python-Dokumentation.

# Python-Kompatibilität
<a name="packages-python-compatibility"></a>

 Es CodeCatalyst unterstützt zwar nicht die `/simple/` API, aber die `Legacy` API-Operationen. CodeCatalyst unterstützt keine PyPI `XML-RPC` - oder `JSON` API-Operationen. 

Weitere Informationen finden Sie im Folgenden im GitHub Repository der Python Packaging Authority.
+ [Legacy-API](https://warehouse.pypa.io/api-reference/legacy.html)
+ [XML-RPC-API](https://github.com/pypi/warehouse/blob/main/docs/dev/api-reference/xml-rpc.rst)
+ [JSON-API](https://docs.pypi.org/api/json/)

# Kontingente für Pakete
<a name="packages-quotas"></a>

In der folgenden Tabelle werden Kontingente und Beschränkungen für Pakete bei Amazon beschrieben CodeCatalyst. Weitere Informationen zu Kontingenten bei Amazon CodeCatalyst finden Sie unter[Kontingente für CodeCatalyst](quotas.md).


| Ressource | Standardkontingent | 
| --- | --- | 
| Paket-Repositorys | Maximal 1000 pro Speicherplatz. | 
| Direkte Upstream-Repositorys |  Maximal 10 pro Paket-Repository.  | 
| Upstream-Paket-Repositorys wurden durchsucht |  Pro angeforderter Paketversion wurden maximal 25 Upstream-Repositorys durchsucht.  | 
| Größe der Paket-Asset-Datei |  Maximal 5 GB pro Paket-Asset.  | 
|  Paket-Assets  |  Maximal 150 pro Paketversion.  | 