

Le traduzioni sono generate tramite traduzione automatica. In caso di conflitto tra il contenuto di una traduzione e la versione originale in Inglese, quest'ultima prevarrà.

# Usare CodeArtifact con mvn
<a name="maven-mvn"></a>

Si usa il `mvn` comando per eseguire le build di Maven. Questa sezione mostra come configurare l'uso di un `mvn` repository. CodeArtifact 

**Topics**
+ [Recupera le dipendenze](#fetching-dependencies)
+ [Pubblica artefatti](#publishing-artifacts)
+ [Pubblica artefatti di terze parti](#publishing-third-party-artifacts)
+ [Limita i download delle dipendenze di Maven a un repository CodeArtifact](#restrict-maven-downloads)
+ [Informazioni sul progetto Apache Maven](#apache-maven-project-info)

## Recupera le dipendenze
<a name="fetching-dependencies"></a>

`mvn`Per configurare il recupero delle dipendenze da un CodeArtifact repository, devi modificare il file di configurazione di Maven e, facoltativamente`settings.xml`, il POM del tuo progetto.

1. Se non l'hai fatto, crea e archivia un token di CodeArtifact autenticazione in una variabile di ambiente come descritto in per configurare l'autenticazione nel [Passa un token di autenticazione utilizzando una variabile di ambiente](tokens-authentication.md#env-var) tuo repository. CodeArtifact 

1. In `settings.xml` (in genere si trova in`~/.m2/settings.xml`), aggiungi una `<servers>` sezione con un riferimento alla variabile di `CODEARTIFACT_AUTH_TOKEN` ambiente in modo che Maven passi il token nelle richieste HTTP.

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

1. Aggiungi l'endpoint URL per il tuo CodeArtifact repository in un elemento. `<repository>` Puoi farlo nel file `settings.xml` POM del tuo progetto.

   Puoi recuperare l'endpoint del tuo repository usando il comando. `get-repository-endpoint` AWS CLI 

   Ad esempio, con un repository denominato {{my\_repo}} all'interno di un dominio denominato{{my\_domain}}, il comando è il seguente:

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

   Il `get-repository-endpoint` comando restituirà l'endpoint del repository:

   ```
   url 'https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{us-west-2}}.amazonaws.com/maven/{{my_repo}}/'
   ```
**Nota**  
Per utilizzare un endpoint dualstack, usa l'endpoint. `codeartifact.{{region}}.on.aws`

   Aggiungi l'endpoint del repository come segue. `settings.xml`

   ```
   <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>
   ```

   In alternativa, è possibile aggiungere la `<repositories>` sezione a un file POM di progetto da utilizzare solo CodeArtifact per quel progetto.

   ```
   <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>
   ```

**Importante**  
È possibile utilizzare qualsiasi valore nell'`<id>`elemento, ma deve essere lo stesso in entrambi `<server>` gli `<repository>` elementi. Ciò consente di includere le credenziali specificate nelle richieste di CodeArtifact.

Dopo aver apportato queste modifiche alla configurazione, puoi creare il progetto.

```
mvn compile
```

Maven registra l'URL completo di tutte le dipendenze scaricate sulla 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)
```

## Pubblica artefatti
<a name="publishing-artifacts"></a>

Per pubblicare un artefatto Maven in un CodeArtifact repository, devi anche modificare e progettare POM. `mvn` `~/.m2/settings.xml`

1. Se non l'hai fatto, crea e archivia un token di CodeArtifact autenticazione in una variabile di ambiente come descritto in [Passa un token di autenticazione utilizzando una variabile di ambiente](tokens-authentication.md#env-var) per configurare l'autenticazione nel tuo repository. CodeArtifact 

1. Aggiungi una `<servers>` sezione a `settings.xml` con un riferimento alla variabile di `CODEARTIFACT_AUTH_TOKEN` ambiente in modo che Maven passi il token nelle richieste HTTP.

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

1. Aggiungi una `<distributionManagement>` sezione a quella del tuo progetto. `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>
   ```

Dopo aver apportato queste modifiche alla configurazione, puoi creare il progetto e pubblicarlo nel repository specificato.

```
mvn deploy
```

`list-package-versions`Utilizzatelo per verificare che il pacchetto sia stato pubblicato correttamente.

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

Output di esempio:

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

## Pubblica artefatti di terze parti
<a name="publishing-third-party-artifacts"></a>

Puoi pubblicare artefatti Maven di terze parti in un repository con. CodeArtifact `mvn deploy:deploy-file` Questo può essere utile per gli utenti che desiderano pubblicare artefatti e dispongono solo di file JAR e non hanno accesso al codice sorgente del pacchetto o ai file POM.

Il `mvn deploy:deploy-file` comando genererà un file POM basato sulle informazioni passate nella riga di comando.

**Pubblica artefatti Maven di terze parti**

1. In caso contrario, crea e archivia un token di CodeArtifact autenticazione in una variabile di ambiente come descritto in [Passa un token di autenticazione utilizzando una variabile di ambiente](tokens-authentication.md#env-var) Per configurare l'autenticazione nel tuo repository. CodeArtifact 

1. Crea un `~/.m2/settings.xml` file con i seguenti contenuti:

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

1. Eseguire il comando `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}}/
   ```
**Nota**  
L'esempio precedente pubblica`commons-cli 1.4`. Modifica gli argomenti GroupiD, artifactID, version e file per pubblicare un JAR diverso.

*Queste istruzioni si basano su esempi contenuti nella [Guida alla distribuzione di terze parti in un repository remoto tratti dalla documentazione di JARs Apache](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html) Maven.* 

## Limita i download delle dipendenze di Maven a un repository CodeArtifact
<a name="restrict-maven-downloads"></a>

 Se un pacchetto non può essere recuperato da un repository configurato, per impostazione predefinita, il `mvn` comando lo recupera da Maven Central. Aggiungi l'`mirrors`elemento a per utilizzare sempre il tuo `settings.xml` repository. `mvn` CodeArtifact 

```
<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>
```

Se aggiungi un `mirrors` elemento, devi avere anche un `pluginRepository` elemento nel tuo `settings.xml` or`pom.xml`. L'esempio seguente recupera le dipendenze delle applicazioni e i plugin Maven da un repository. CodeArtifact 

```
<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'esempio seguente recupera le dipendenze dell'applicazione da un CodeArtifact repository e recupera i plugin Maven da 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>
```

## Informazioni sul progetto Apache Maven
<a name="apache-maven-project-info"></a>

Per ulteriori informazioni su Maven, consulta questi argomenti sul sito Web del progetto Apache Maven:
+  [Configurazione di più repository](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [Riferimento alle impostazioni](https://maven.apache.org/settings.html) 
+  [Gestione della distribuzione](https://maven.apache.org/pom.html#Distribution_Management) 
+  [Profili](https://maven.apache.org/pom.html#Profiles) 