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.
Usar CodeArtifact con mvn
El comando mvn
se usa para ejecutar compilaciones de Maven. En esta sección se muestra cómo configurar mvn
para usar un repositorio de CodeArtifact.
Temas
Extraer dependencias
Para configurar mvn
para recuperar dependencias de un repositorio de CodeArtifact, debe editar el archivo de configuración de Maven, settings.xml
y, opcionalmente, el POM de su proyecto.
Si no lo ha hecho, cree y almacene un token de autenticación de CodeArtifact en una variable de entorno como se describe en Pasar un token de autenticación mediante una variable de entorno para configurar la autenticación en su repositorio de CodeArtifact.
-
En
settings.xml
(normalmente se encuentra en~/.m2/settings.xml
), añada una sección<servers>
con una referencia a la variable de entornoCODEARTIFACT_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>
-
Añada el punto de conexión de la URL de su repositorio de CodeArtifact en un elemento
<repository>
. Puede hacerlo ensettings.xml
o en el archivo POM de su proyecto.Puede recuperar el punto de conexión de su repositorio mediante el comando
get-repository-endpoint
AWS CLI.Por ejemplo, con un repositorio llamado
my_repo
dentro de un dominio llamadomy_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
/'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 sección
<repositories>
a un archivo POM del proyecto para usar CodeArtifact solo para 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 a 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
Para publicar un artefacto de Maven con mvn
en un repositorio de CodeArtifact, también debe editar ~/.m2/settings.xml
y proyectar el POM.
Si no lo ha hecho, cree y almacene un token de autenticación de CodeArtifact en una variable de entorno como se describe en Pasar un token de autenticación mediante una variable de entorno para configurar la autenticación en su repositorio de CodeArtifact.
-
Agregue una sección
<servers>
asettings.xml
con una referencia a la variable de entornoCODEARTIFACT_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>
-
Agregue una sección
<distributionManagement>
alpom.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-owner111122223333
--repositorymy_repo
--formatmaven
\ --namespacecom.company.framework
--packagemy-package-name
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
Puede publicar artefactos Maven de terceros en un repositorio de CodeArtifact 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
Si no lo ha hecho, cree y almacene un token de autenticación de CodeArtifact en una variable de entorno como se describe en Pasar un token de autenticación mediante una variable de entorno para configurar la autenticación en su repositorio de CodeArtifact.
-
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>
-
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 archivos JAR de terceros en un repositorio remoto
Restrinja las descargas de dependencias de Maven a un repositorio de CodeArtifact
Si un paquete no se puede recuperar de un repositorio configurado, de forma predeterminada, el comando mvn
lo obtiene del central de Maven. Agregue el elemento mirrors
a settings.xml
para que mvn
siempre use su repositorio 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>
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 de 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 la aplicación de un repositorio de CodeArtifact y se obtienen los complementos de Maven del central de Maven.
<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
Para obtener más información sobre Maven, consulte estos temas en el sitio web del Proyecto Apache Maven: