Uso de CodeArtifact con Gradle - CodeArtifact

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 de CodeArtifact con Gradle

Después de tener el token de autenticación CodeArtifact en una variable de entorno, como se describe en Pasar un token de autenticación mediante una variable de entorno, siga estas instrucciones para consumir paquetes de Maven desde un repositorio de CodeArtifact y publicar nuevos paquetes en él.

Extraer dependencias

Para obtener las dependencias de CodeArtifact en una compilación de Gradle, use el siguiente procedimiento.

Para obtener dependencias de CodeArtifact en una compilación de Gradle
  1. Si no lo ha hecho, cree y almacene un token de autenticación CodeArtifact en una variable de entorno siguiendo el procedimiento en Pasar un token de autenticación mediante una variable de entorno.

  2. Añada una sección maven a la sección repositories del archivo del proyecto build.gradle.

    maven { url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username "aws" password System.env.CODEARTIFACT_AUTH_TOKEN } }

    La url del ejemplo anterior es el punto de conexión de su repositorio de CodeArtifact. Gradle usa el punto de conexión para conectarse al repositorio. En el ejemplo, my_domain es el nombre de tu dominio, 111122223333 es el ID del propietario del dominio y my_repo es el nombre de su repositorio. Puede recuperar un 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 llamado my_domain, el comando es el siguiente:

    aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --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.region.amazonaws.com/maven/my_repo/'

    El objeto credentials del ejemplo anterior incluye el token de autenticación CodeArtifact que creó en el paso 1 y que Gradle usa para autenticarse en CodeArtifact.

  3. (Opcional): para usar el repositorio CodeArtifact como la única fuente de las dependencias de su proyecto, elimine cualquier otra sección en repositories de build.gradle. Si tiene más de un repositorio, Gradle busca las dependencias en cada repositorio en el orden en que aparecen en la lista.

  4. Después de configurar el repositorio, puede agregar las dependencias del proyecto a la sección dependencies con la sintaxis estándar de Gradle.

    dependencies { implementation 'com.google.guava:guava:27.1-jre' implementation 'commons-cli:commons-cli:1.4' testImplementation 'org.testng:testng:6.14.3' }

Complementos de búsqueda

De forma predeterminada, Gradle resolverá los complementos desde el portal de complementos de Gradle público. Para extraer complementos de un repositorio de CodeArtifact, utilice el siguiente procedimiento.

Para extraer complementos de un repositorio de CodeArtifact
  1. Si no lo ha hecho, cree y almacene un token de autenticación CodeArtifact en una variable de entorno siguiendo el procedimiento en Pasar un token de autenticación mediante una variable de entorno.

  2. Agregue un bloque pluginManagement a su archivo settings.gradle. El bloque pluginManagement debe aparecer antes de cualquier otra declaración en settings.gradle; consulte el siguiente fragmento:

    pluginManagement { repositories { maven { name 'my_repo' url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username 'aws' password System.env.CODEARTIFACT_AUTH_TOKEN } } } }

Esto garantizará que Gradle resuelva los complementos del repositorio especificado. El repositorio debe tener un repositorio principal con una conexión externa al portal de complementos de Gradle (por ejemplo gradle-plugins-store) para que los complementos de Gradle que se requieren con más frecuencia estén disponibles en la compilación. Para obtener más información, consulte la documentación de Gradle.

Publicar artefactos

En esta sección, se describe cómo publicar una biblioteca Java creada con Gradle en un repositorio de CodeArtifact.

Primero, agregue el complemento maven-publish a la sección plugins del archivo del proyecto build.gradle.

plugins { id 'java-library' id 'maven-publish' }

A continuación, añada una sección publishing al archivo build.gradle del proyecto.

publishing { publications { mavenJava(MavenPublication) { groupId = 'group-id' artifactId = 'artifact-id' version = 'version' from components.java } } repositories { maven { url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username "aws" password System.env.CODEARTIFACT_AUTH_TOKEN } } } }

El maven-publish genera un archivo POM basado en el groupId, artifactId y version especificado en la sección publishing.

Una vez completados estos cambios en build.gradle, ejecute el siguiente comando para crear el proyecto y subirlo al repositorio.

./gradlew publish

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

Resultados de ejemplo:

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

Para obtener más información, consulte estos temas en el sitio web de Gradle:

Ejecutar una compilación de Gradle en IntelliJ IDEA

Puede ejecutar una compilación de Gradle en IntelliJ IDEA que extraiga dependencias de CodeArtifact. Para autenticarse con CodeArtifact, debe proporcionar a Gradle un token de autorización de CodeArtifact. Existen tres métodos para proporcionar un token de autenticación.

  • Método 1: almacenar el token de autenticación en gradle.properties. Utilice este método si puede sobrescribir o añadir contenido al archivo gradle.properties.

  • Método 2: almacenar el token de autenticación en un archivo independiente. Utilice este método si no desea modificar el archivo gradle.properties.

  • Método 3: generar un nuevo token de autenticación para cada ejecución ejecutando aws como un script en línea en build.gradle. Utilice este método si quiere que el script de Gradle busque un nuevo token en cada ejecución. El token no se almacenará en el sistema de archivos.

Token stored in gradle.properties
Método 1: almacenar el token de autenticación en gradle.properties
nota

El ejemplo muestra el archivo gradle.properties ubicado en GRADLE_USER_HOME.

  1. Actualice el archivo build.gradle con el siguiente fragmento:

    repositories { maven { url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username "aws" password "$codeartifactToken" } } }
  2. Para obtener complementos de CodeArtifact, agregue un bloque pluginManagement a su archivo settings.gradle. El bloque pluginManagement debe aparecer antes de cualquier otra declaración en settings.gradle.

    pluginManagement { repositories { maven { name 'my_repo' url 'https://my_domain-111122223333.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username 'aws' password "$codeartifactToken" } } } }
  3. Obtenga un token de autorización de CodeArtifact:

    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
  4. Escriba el token de autenticación en el archivo gradle.properties:

    echo "codeartifactToken=$CODEARTIFACT_AUTH_TOKEN" > ~/.gradle/gradle.properties
Token stored in separate file
Método 2: almacenar el token de autenticación en un archivo independiente
  1. Actualice el archivo build.gradle con el siguiente fragmento:

    def props = new Properties() file("file").withInputStream { props.load(it) } repositories { maven { url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username "aws" password props.getProperty("codeartifactToken") } } }
  2. Para obtener complementos de CodeArtifact, agregue un bloque pluginManagement a su archivo settings.gradle. El bloque pluginManagement debe aparecer antes de cualquier otra declaración en settings.gradle.

    pluginManagement { def props = new Properties() file("file").withInputStream { props.load(it) } repositories { maven { name 'my_repo' url 'https://my_domain-111122223333.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username 'aws' password props.getProperty("codeartifactToken") } } } }
  3. Obtenga un token de autorización de CodeArtifact:

    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
  4. Escriba el token de autenticación en el archivo que se especificó en su archivo build.gradle:

    echo "codeartifactToken=$CODEARTIFACT_AUTH_TOKEN" > file
Token generated for each run in build.gradle
Método 3: generar un nuevo token de autenticación para cada ejecución ejecutando aws como un script en línea en build.gradle
  1. Actualice el archivo build.gradle con el siguiente fragmento:

    def codeartifactToken = "aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name".execute().text repositories { maven { url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username "aws" password codeartifactToken } } }
  2. Para obtener complementos de CodeArtifact, agregue un bloque pluginManagement a su archivo settings.gradle. El bloque pluginManagement debe aparecer antes de cualquier otra declaración en settings.gradle.

    pluginManagement { def codeartifactToken = "aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name".execute().text repositories { maven { name 'my_repo' url 'https://my_domain-111122223333.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username 'aws' password codeartifactToken } } } }