

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 CodeArtifact avec MVN
<a name="maven-mvn"></a>

Vous utilisez la `mvn` commande pour exécuter les builds de Maven. Cette section explique comment configurer l'utilisation `mvn` d'un CodeArtifact référentiel.

**Topics**
+ [Extraire les dépendances](#fetching-dependencies)
+ [Publier des artefacts](#publishing-artifacts)
+ [Publier des artefacts tiers](#publishing-third-party-artifacts)
+ [Restreindre les téléchargements de dépendances Maven à un référentiel CodeArtifact](#restrict-maven-downloads)
+ [Informations sur le projet Apache Maven](#apache-maven-project-info)

## Extraire les dépendances
<a name="fetching-dependencies"></a>

Pour configurer `mvn` afin d'extraire les dépendances d'un CodeArtifact référentiel, vous devez modifier le fichier de configuration Maven et, éventuellement`settings.xml`, le POM de votre projet.

1. Si ce n'est pas le cas, créez et stockez un jeton d' CodeArtifact authentification dans une variable d'environnement, comme décrit dans la section [Transmettre un jeton d'authentification à l'aide d'une variable d'environnement](tokens-authentication.md#env-var) pour configurer l'authentification auprès de votre CodeArtifact référentiel.

1. Dans `settings.xml` (généralement trouvé à`~/.m2/settings.xml`), ajoutez une `<servers>` section avec une référence à la variable d'`CODEARTIFACT_AUTH_TOKEN`environnement afin que Maven transmette le jeton dans les requêtes HTTP.

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. Ajoutez le point de terminaison URL de votre CodeArtifact référentiel dans un `<repository>` élément. Vous pouvez le faire dans le `settings.xml` fichier POM de votre projet.

   Vous pouvez récupérer le point de terminaison de votre dépôt à l'aide de la `get-repository-endpoint` AWS CLI commande.

   Par exemple, avec un dépôt nommé *my\$1repo* à l'intérieur d'un domaine nommé*my\$1domain*, la commande est la suivante :

   ```
   aws codeartifact get-repository-endpoint --domain my_domain --repository my_repo --format maven
   ```

   La `get-repository-endpoint` commande renverra le point de terminaison du référentiel :

   ```
   url 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/'
   ```
**Note**  
Pour utiliser un point de terminaison à double pile, utilisez le `codeartifact.region.on.aws` point de terminaison.

   Ajoutez le point de terminaison du référentiel `settings.xml` comme suit.

   ```
   <settings>
   ...
       <profiles>
           <profile>
               <id>default</id>
               <repositories>
                   <repository>
                       <id>codeartifact</id>
                       <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
                   </repository>
               </repositories>
           </profile>
       </profiles>
       <activeProfiles>
           <activeProfile>default</activeProfile>
       </activeProfiles>
       ...
   </settings>
   ```

   Vous pouvez également ajouter la `<repositories>` section à un fichier POM de projet CodeArtifact pour l'utiliser uniquement pour ce projet.

   ```
   <project>
   ...
       <repositories>
           <repository>
               <id>codeartifact</id>
               <name>codeartifact</name>
               <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
           </repository>
       </repositories>
   ...
   </project>
   ```

**Important**  
Vous pouvez utiliser n'importe quelle valeur dans l'`<id>`élément, mais elle doit être identique dans les `<repository>` éléments `<server>` et. Cela permet d'inclure les informations d'identification spécifiées dans les demandes adressées à CodeArtifact.

Après avoir apporté ces modifications de configuration, vous pouvez créer le projet.

```
mvn compile
```

Maven enregistre l'URL complète de toutes les dépendances qu'il télécharge sur la console.

```
[INFO] ------------------< com.example.example:myapp >-------------------
[INFO] Building myapp 1.0
[INFO] --------------------------------[ jar ]---------------------------------
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom
Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom (11 kB at 3.9 kB/s)
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom
Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom (68 kB at 123 kB/s)
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar (54 kB at 134 kB/s)
```

## Publier des artefacts
<a name="publishing-artifacts"></a>

Pour publier un artefact Maven dans un CodeArtifact dépôt, vous devez également modifier `~/.m2/settings.xml` le POM du projet. `mvn`

1. Si ce n'est pas le cas, créez et stockez un jeton d' CodeArtifact authentification dans une variable d'environnement, comme décrit dans la section [Transmettre un jeton d'authentification à l'aide d'une variable d'environnement](tokens-authentication.md#env-var) pour configurer l'authentification auprès de votre CodeArtifact référentiel.

1. Ajoutez une `<servers>` section à `settings.xml` avec une référence à la variable d'`CODEARTIFACT_AUTH_TOKEN`environnement afin que Maven transmette le jeton dans les requêtes HTTP.

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. Ajoutez une `<distributionManagement>` section à celle de votre projet`pom.xml`.

   ```
   <project>
   ...
        <distributionManagement>
            <repository>
                <id>codeartifact</id>
                <name>codeartifact</name>
                <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
            </repository>
        </distributionManagement>
   ...
   </project>
   ```

Après avoir apporté ces modifications de configuration, vous pouvez créer le projet et le publier dans le référentiel spécifié.

```
mvn deploy
```

`list-package-versions`À utiliser pour vérifier que le package a bien été publié.

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven \
  --namespace com.company.framework --package my-package-name
```

Exemple de sortie :

```
{
    "defaultDisplayVersion": null,
    "format": "maven",
    "namespace": "com.company.framework",
    "package": "my-package-name",
    "versions": [
        {
            "version": "1.0", 
            "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
            "status": "Published"
        }
    ]
}
```

## Publier des artefacts tiers
<a name="publishing-third-party-artifacts"></a>

Vous pouvez publier des artefacts Maven tiers dans un CodeArtifact référentiel avec`mvn deploy:deploy-file`. Cela peut être utile aux utilisateurs qui souhaitent publier des artefacts et qui ne disposent que de fichiers JAR et qui n'ont pas accès au code source du package ou aux fichiers POM.

La `mvn deploy:deploy-file` commande générera un fichier POM basé sur les informations transmises dans la ligne de commande.

**Publier des artefacts Maven tiers**

1. Si ce n'est pas le cas, créez et stockez un jeton d' CodeArtifact authentification dans une variable d'environnement, comme décrit dans la section [Transmettre un jeton d'authentification à l'aide d'une variable d'environnement](tokens-authentication.md#env-var) pour configurer l'authentification auprès de votre CodeArtifact référentiel.

1. Créez un `~/.m2/settings.xml` fichier avec le contenu suivant :

   ```
   <settings>
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   </settings>
   ```

1. Exécutez la commande `mvn deploy:deploy-file` :

   ```
   mvn deploy:deploy-file -DgroupId=commons-cli          \
   -DartifactId=commons-cli       \
   -Dversion=1.4                  \
   -Dfile=./commons-cli-1.4.jar   \
   -Dpackaging=jar                \
   -DrepositoryId=codeartifact    \
   -Durl=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/repo-name/
   ```
**Note**  
L'exemple ci-dessus publie`commons-cli 1.4`. Modifiez les arguments groupId, artifactID, version et fichier pour publier un JAR différent.

Ces instructions sont basées sur des exemples du [Guide de déploiement d'un tiers JARs sur un dépôt distant](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html), extrait de la *documentation d'Apache Maven*. 

## Restreindre les téléchargements de dépendances Maven à un référentiel CodeArtifact
<a name="restrict-maven-downloads"></a>

 Si un package ne peut pas être extrait d'un référentiel configuré, par défaut, la `mvn` commande le récupère depuis Maven Central. Ajoutez l'`mirrors`élément `settings.xml` to pour `mvn` toujours utiliser votre CodeArtifact dépôt.

```
<settings>
  ...
    <mirrors>
      <mirror>
        <id>central-mirror</id>
        <name>CodeArtifact Maven Central mirror</name>
        <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
    </mirrors>
  ...
</settings>
```

Si vous ajoutez un `mirrors` élément, vous devez également en avoir un `pluginRepository` dans votre `settings.xml` ou`pom.xml`. L'exemple suivant extrait les dépendances des applications et les plug-ins Maven depuis un CodeArtifact référentiel. 

```
<settings>
...
  <profiles>
    <profile>
      <pluginRepositories>
        <pluginRepository>
          <id>codeartifact</id>
          <name>CodeArtifact Plugins</name>
          <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
...
</settings>
```

L'exemple suivant extrait les dépendances des applications depuis un CodeArtifact référentiel et extrait les plug-ins Maven depuis Maven Central.

```
<profiles>
   <profile>
     <id>default</id>
     ...
     <pluginRepositories>
       <pluginRepository>
         <id>central-plugins</id>
         <name>Central Plugins</name>
         <url>https://repo.maven.apache.org/maven2/</url>
         <releases>
             <enabled>true</enabled>
         </releases>
         <snapshots>
             <enabled>true</enabled>
         </snapshots>
       </pluginRepository>
     </pluginRepositories>
   ....
   </profile>
 </profiles>
```

## Informations sur le projet Apache Maven
<a name="apache-maven-project-info"></a>

Pour plus d'informations sur Maven, consultez les rubriques suivantes sur le site Web du projet Apache Maven :
+  [Configuration de plusieurs référentiels](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [Référence des paramètres](https://maven.apache.org/settings.html) 
+  [Gestion de la distribution](https://maven.apache.org/pom.html#Distribution_Management) 
+  [Profilés](https://maven.apache.org/pom.html#Profiles) 