

Las traducciones son generadas a través de traducción automática. En caso de conflicto entre la traducción y la version original de inglés, prevalecerá la version en inglés.

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

El comando `mvn` se usa para ejecutar compilaciones de Maven. En esta sección se muestra cómo `mvn` configurar el uso de un CodeArtifact repositorio.

**Topics**
+ [Extraer dependencias](#fetching-dependencies)
+ [Publicar artefactos](#publishing-artifacts)
+ [Publicación de artefactos de terceros](#publishing-third-party-artifacts)
+ [Restrinja las descargas de dependencias de Maven a un repositorio CodeArtifact](#restrict-maven-downloads)
+ [Información del proyecto Apache Maven](#apache-maven-project-info)

## Extraer dependencias
<a name="fetching-dependencies"></a>

`mvn`Para configurar la búsqueda de dependencias de un CodeArtifact repositorio, debe editar el archivo de configuración de Maven y, si lo desea`settings.xml`, el POM de su proyecto.

1. Si no lo has hecho, crea y almacena un token de CodeArtifact autenticación en una variable de entorno como se describe en [Pasar un token de autenticación mediante una variable de entorno](tokens-authentication.md#env-var) para configurar la autenticación en tu repositorio. CodeArtifact 

1. En `settings.xml` (normalmente se encuentra en `~/.m2/settings.xml`), añada una sección `<servers>` con una referencia a la variable de entorno `CODEARTIFACT_AUTH_TOKEN` para que Maven pase el token en las solicitudes HTTP.

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

1. Añade el punto final de la URL de tu CodeArtifact repositorio en un `<repository>` elemento. Puede hacerlo en `settings.xml` o en el archivo POM de su proyecto.

   Puedes recuperar el punto final de tu repositorio mediante el `get-repository-endpoint` AWS CLI comando.

   Por ejemplo, si el nombre de un repositorio está {{my\_repo}} dentro de un nombre de dominio{{my\_domain}}, el comando es el siguiente:

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

   El comando `get-repository-endpoint` devolverá el punto de conexión del repositorio:

   ```
   url 'https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{us-west-2}}.amazonaws.com/maven/{{my_repo}}/'
   ```
**nota**  
Si quiere utilizar un punto de conexión de pila doble, use el punto de conexión `codeartifact.{{region}}.on.aws`.

   Añada el punto de conexión del repositorio a `settings.xml` de la siguiente manera.

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

   O bien, puede añadir la `<repositories>` sección a un archivo POM del proyecto CodeArtifact para utilizarla únicamente en ese proyecto.

   ```
   <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**  
Puede usar cualquier valor en el elemento `<id>`, pero debe ser el mismo en los elementos `<server>` y `<repository>`. Esto permite incluir las credenciales especificadas en las solicitudes para CodeArtifact.

Después de realizar estos cambios de configuración, puede crear el proyecto.

```
mvn compile
```

Maven registra la URL completa de todas las dependencias que descarga en la consola.

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

## Publicar artefactos
<a name="publishing-artifacts"></a>

Para publicar un artefacto de Maven en un CodeArtifact repositorio, también debes editar `~/.m2/settings.xml` y proyectar el POM. `mvn`

1. Si no lo has hecho, crea y almacena un token de CodeArtifact autenticación en una variable de entorno como se describe en [Pasar un token de autenticación mediante una variable de entorno](tokens-authentication.md#env-var) para configurar la autenticación en tu repositorio. CodeArtifact 

1. Agregue una sección `<servers>` a `settings.xml` con una referencia a la variable de entorno `CODEARTIFACT_AUTH_TOKEN` para que Maven pase el token en las solicitudes HTTP.

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

1. Agregue una sección `<distributionManagement>` al `pom.xml` de su proyecto.

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

Tras realizar estos cambios de configuración, puede crear el proyecto y publicarlo en el repositorio especificado.

```
mvn deploy
```

Utilice `list-package-versions` para comprobar que el paquete se ha publicado correctamente.

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

Código de salida de ejemplo:

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

## Publicación de artefactos de terceros
<a name="publishing-third-party-artifacts"></a>

Puedes publicar artefactos de Maven de terceros en un CodeArtifact repositorio con. `mvn deploy:deploy-file` Esto puede resultar útil para los usuarios que desean publicar artefactos y solo tienen archivos JAR y no tienen acceso al código fuente del paquete o a los archivos POM.

El comando `mvn deploy:deploy-file` generará un archivo POM en función de la información pasada en la línea de comandos.

**Publicación de artefactos Maven de terceros**

1. Si no lo has hecho, crea y almacena un token de CodeArtifact autenticación en una variable de entorno como se describe en [Pasar un token de autenticación mediante una variable de entorno](tokens-authentication.md#env-var) para configurar la autenticación en tu CodeArtifact repositorio.

1. Cree un archivo `~/.m2/settings.xml` con los siguientes contenidos:

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

1. Ejecute el 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**  
El ejemplo anterior publica `commons-cli 1.4`. Modifique los argumentos GroupID, ArtifactID, version y file para publicar un JAR diferente.

Estas instrucciones se basan en los ejemplos de la [guía para implementar un repositorio externo JARs en un repositorio remoto](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html) de la documentación de *Apache Maven*. 

## Restrinja las descargas de dependencias de Maven a un repositorio CodeArtifact
<a name="restrict-maven-downloads"></a>

 Si un paquete no se puede recuperar de un repositorio configurado, de forma predeterminada, el comando `mvn` lo obtiene del central de Maven. Añade el `mirrors` elemento a `settings.xml` para que `mvn` siempre utilices tu CodeArtifact repositorio.

```
<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 agrega un elemento `mirrors`, también debe tener un elemento `pluginRepository` en su `settings.xml` o `pom.xml`. El siguiente ejemplo busca las dependencias de la aplicación y los complementos de Maven de un repositorio. 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>
```

En el siguiente ejemplo, se obtienen las dependencias de las aplicaciones de un CodeArtifact repositorio y se obtienen los complementos de Maven de 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>
```

## Información del proyecto Apache Maven
<a name="apache-maven-project-info"></a>

Para obtener más información sobre Maven, consulte estos temas en el sitio web del Proyecto Apache Maven:
+  [Setting up Multiple Repositories](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [Settings Reference](https://maven.apache.org/settings.html) 
+  [Distribution Management](https://maven.apache.org/pom.html#Distribution_Management) 
+  [Profiles](https://maven.apache.org/pom.html#Profiles) 