

Les traductions sont fournies par des outils de traduction automatique. En cas de conflit entre le contenu d'une traduction et celui de la version originale en anglais, la version anglaise prévaudra.

# Utiliser les checksums Maven
<a name="maven-checksums"></a>

 Lorsqu'un artefact Maven est publié dans un AWS CodeArtifact référentiel, la somme de contrôle associée à chaque *ressource* ou fichier du package est utilisée pour valider le téléchargement. Les fichiers *jar*, *pom* et *war* sont des exemples d'actifs. Pour chaque ressource, l'artefact Maven contient plusieurs fichiers de somme de contrôle qui utilisent le nom de la ressource avec une extension supplémentaire, telle que ou. `md5` `sha1` Par exemple, les fichiers de somme de contrôle d'un fichier nommé `my-maven-package.jar` peuvent être `my-maven-package.jar.md5` et`my-maven-package.jar.sha1`. 

**Note**  
 Maven utilise le terme`artifact`. Dans ce guide, un package Maven est identique à un artefact Maven. Pour plus d'informations, consultez le [AWS CodeArtifactpackage](https://docs.aws.amazon.com/codeartifact/latest/ug/welcome.html#welcome-concepts-package). 

## Stockage de Checksum
<a name="maven-checksum-storage"></a>

CodeArtifact ne stocke pas les sommes de contrôle Maven en tant qu'actifs. Cela signifie que les checksums n'apparaissent pas sous forme d'actifs individuels dans le résultat de l'[ListPackageVersionAssets API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_ListPackageVersionAssets.html). Au lieu de cela, les sommes de contrôle calculées par CodeArtifact sont disponibles pour chaque actif dans tous les types de somme de contrôle pris en charge. Par exemple, une partie de la réponse à l'appel de ListPackageVersionAssets la version du package Maven `commons-lang:commons-lang 2.1` est la suivante :

```
{
    "name": "commons-lang-2.1.jar",
    "size": 207723,
    "hashes": {
        "MD5": "51591549f1662a64543f08a1d4a0cf87",
        "SHA-1": "4763ecc9d78781c915c07eb03e90572c7ff04205",
        "SHA-256": "2ded7343dc8e57decd5e6302337139be020fdd885a2935925e8d575975e480b9",
        "SHA-512": "a312a5e33b17835f2e82e74ab52ab81f0dec01a7e72a2ba58bb76b6a197ffcd2bb410e341ef7b3720f3b595ce49fdd9994ea887ba08ff6fe21b2c714f8c405af"
    }
},
{
    "name": "commons-lang-2.1.pom",
    "size": 9928,
    "hashes": {
        "MD5": "8e41bacdd69de9373c20326d231c8a5d",
        "SHA-1": "a34d992202615804c534953aba402de55d8ee47c",
        "SHA-256": "f1a709cd489f23498a0b6b3dfbfc0d21d4f15904791446dec7f8a58a7da5bd6a",
        "SHA-512": "1631ce8fe4101b6cde857f5b1db9b29b937f98ba445a60e76cc2b8f2a732ff24d19b91821a052c1b56b73325104e9280382b2520edda4e7696698165c7e09161"
    }
},
        {
    "name": "maven-metadata.xml",
    "size": 121,
    "hashes": {
        "MD5": "11bb3d48d984f2f49cea1e150b6fa371",
        "SHA-1": "7ef872be17357751ce65cb907834b6c5769998db",
        "SHA-256": "d04d140362ea8989a824a518439246e7194e719557e8d701831b7f5a8228411c",
        "SHA-512": "001813a0333ce4b2a47cf44900470bc2265ae65123a8c6b5ac5f2859184608596baa4d8ee0696d0a497755dade0f6bf5e54667215a06ceae1effdfb7a8d30f88"
    }
}
```

 Même si les sommes de contrôle ne sont pas stockées en tant qu'actifs, les clients Maven peuvent toujours publier et télécharger les sommes de contrôle aux emplacements prévus. Par exemple, `commons-lang:commons-lang 2.1` s'il se trouve dans un référentiel appelé`maven-repo`, le chemin URL de la somme de contrôle SHA-256 du fichier JAR serait :

```
/maven/maven-repo/commons-lang/commons-lang/2.1/commons-lang-2.1.jar.sha256
```

Si vous téléchargez des packages Maven existants (par exemple, des packages précédemment stockés dans Amazon S3) à CodeArtifact l'aide d'un client HTTP générique tel que`curl`, il n'est pas nécessaire de télécharger les checksums. CodeArtifact les générera automatiquement. Si vous souhaitez vérifier que les actifs ont été chargés correctement, vous pouvez utiliser l'opération ListPackageVersionAssets API pour comparer les sommes de contrôle de la réponse aux valeurs de contrôle d'origine de chaque ressource.

## Incompatibilité des checksum lors de la publication
<a name="maven-checksum-mismatch"></a>

Outre les actifs et les checksums, les artefacts Maven contiennent également un `maven-metadata.xml` fichier. La séquence de publication normale d'un package Maven consiste à télécharger d'abord tous les actifs et les sommes de contrôle, puis à. `maven-metadata.xml` Par exemple, la séquence de publication de la version du package Maven `commons-lang 2.1` décrite précédemment, en supposant que le client ait été configuré pour publier des fichiers de somme de contrôle SHA-256, serait la suivante :

```
PUT commons-lang-2.1.jar
PUT commons-lang-2.1.jar.sha256
PUT commons-lang-2.1.pom
PUT commons-lang-2.1.pom.sha256
PUT maven-metadata.xml
PUT maven-metadata.xml.sha256
```

Lors du téléchargement du fichier de somme de contrôle pour un actif, tel qu'un fichier JAR, la demande de téléchargement de somme de contrôle échouera avec une réponse de **400 (mauvaise demande)** en cas de non-correspondance entre la valeur de la somme de contrôle téléchargée et la valeur de la somme de contrôle calculée par. CodeArtifact Si l'actif correspondant n'existe pas, la demande échouera avec une réponse **404 (introuvable)**. Pour éviter cette erreur, vous devez d'abord télécharger la ressource, puis télécharger la somme de contrôle.

Lorsqu'il `maven-metadata.xml` est téléchargé, le statut de la version du package Maven passe CodeArtifact normalement de `Unfinished` à`Published`. Si une incompatibilité de somme de contrôle est détectée pour un actif, CodeArtifact renvoie un **400 (mauvaise demande)** en réponse à la demande de `maven-metadata.xml` publication. Cette erreur peut empêcher le client de télécharger les fichiers correspondant à cette version du package. Si cela se produit et que le `maven-metadata.xml` fichier n'est pas chargé, aucune ressource de la version du package déjà téléchargée ne peut être téléchargée. Cela est dû au fait que le statut de la version du package n'est pas défini sur `Published` et reste le même`Unfinished`.

CodeArtifact permet d'ajouter d'autres actifs à une version de package Maven même après `maven-metadata.xml` le téléchargement et le statut de la version du package défini sur. `Published` Dans ce statut, une demande de téléchargement d'un fichier de somme de contrôle non concordant échouera également avec une réponse **400 (mauvaise demande)**. Toutefois, comme le statut de version du package a déjà été défini sur`Published`, vous pouvez télécharger n'importe quelle ressource du package, y compris celles pour lesquelles le téléchargement du fichier de somme de contrôle a échoué. Lors du téléchargement d'une somme de contrôle pour une ressource dont le téléchargement du fichier de somme de contrôle a échoué, la valeur de la somme de contrôle que le client reçoit est la valeur de la somme de contrôle calculée sur la CodeArtifact base des données de l'actif téléchargées.

CodeArtifact les comparaisons de checksum font la distinction majuscules/minuscules, et les checksums calculés par CodeArtifact sont formatés en minuscules. Par conséquent, si la somme de contrôle `909FA780F76DA393E992A3D2D495F468` est téléchargée, elle échouera en raison d'une incompatibilité de somme de contrôle, car elle CodeArtifact n'est pas traitée comme égale à. `909fa780f76da393e992a3d2d495f468`

## Réparation après des incohérences entre les checksum
<a name="maven-checksum-mismatch-recovery"></a>

Si le téléchargement d'un checksum échoue en raison d'une incompatibilité de checksum, essayez l'une des méthodes suivantes pour le récupérer :
+ Exécutez à nouveau la commande qui publie l'artefact Maven. Cela peut fonctionner si un problème réseau a endommagé le fichier checksum. Si cela résout le problème réseau, la somme de contrôle correspond et le téléchargement est réussi.
+ Supprimez la version du package, puis republiez-la. Pour plus d'informations, consultez [DeletePackageVersions](https://docs.aws.amazon.com/dms/latest/APIReference/API_DeletePackageVersions.html)le manuel de *référence des CodeArtifact API AWS*.