

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.

# Configuration de la version AWS SDK pour Java 2.x
<a name="setup"></a>

Cette section fournit des informations sur la façon de configurer votre environnement de développement et les projets pour utiliser le AWS SDK for Java 2.x.

## Présentation de la configuration
<a name="setup-overview"></a>

Pour développer avec succès des applications qui accèdent à l' Services AWS aide de AWS SDK pour Java, les conditions suivantes sont requises :
+ Le SDK Java doit avoir accès aux informations d'identification pour [authentifier les demandes](get-started-auth.md#setup-auth) en votre nom.
+ Les [autorisations du rôle IAM](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html) configuré pour le SDK doivent autoriser l'accès à Services AWS ce dont votre application a besoin. Les autorisations associées à la politique **PowerUserAccess** AWS gérée sont suffisantes pour répondre à la plupart des besoins de développement.
+ Un environnement de développement comprenant les éléments suivants :
  + [Fichiers de configuration partagés](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html) configurés selon au moins l'une des méthodes suivantes :
    + Le `config` fichier contient les [paramètres d'authentification unique d'IAM Identity Center](get-started-auth.md#setup-credentials) afin que le SDK puisse obtenir des informations d'identification. AWS 
    + Le `credentials` fichier contient des informations d'identification temporaires.
  + Une [installation de Java 8](setup-java-buildtool.md) ou version ultérieure.
  + Un [outil d'automatisation de build](setup-java-buildtool.md) tel que [Maven](https://maven.apache.org/download.cgi) ou [Gradle](https://gradle.org/install/).
  + Un éditeur de texte pour travailler avec du code.
  + (Facultatif, mais recommandé) Un IDE (environnement de développement intégré) tel que [IntelliJ IDEA](https://www.jetbrains.com/idea/download/#section=windows), [Eclipse](https://www.eclipse.org/ide/) ou. [NetBeans](https://netbeans.apache.org/front/main/download/index.html)

    Si vous utilisez IntelliJ IDEA, vous pouvez également ajouter l'[AWS Toolkit for IntelliJ IDEA](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html) à intégrer Services AWS directement dans l'IDE afin de rationaliser le développement.
+ Une session de portail AWS d'accès active lorsque vous êtes prêt à exécuter votre application. Vous utilisez le AWS Command Line Interface pour [lancer le processus de connexion](get-started-auth.md#setup-login-sso) au portail d' AWS accès d'IAM Identity Center.

**Important**  
Les instructions de cette section de configuration supposent que vous ou votre organisation utilisez IAM Identity Center. Si votre entreprise utilise un fournisseur d'identité externe qui fonctionne indépendamment d'IAM Identity Center, découvrez comment obtenir des informations d'identification temporaires à utiliser par le SDK for Java. Suivez [ces instructions](credentials-temporary.md#credentials-temporary-from-portal) pour ajouter des informations d'identification temporaires au `~/.aws/credentials` fichier.  
Si votre fournisseur d'identité ajoute automatiquement des informations d'identification temporaires au `~/.aws/credentials` fichier, assurez-vous que le nom du profil est `[default]` tel que vous n'avez pas besoin de fournir un nom de profil au SDK ou AWS CLI.

# Installez Java et un outil de compilation pour fonctionner avec AWS SDK for Java 2.x
<a name="setup-java-buildtool"></a>

Pour utiliser le SDK for Java 2.x, vous devez satisfaire aux exigences suivantes en matière d'environnement de développement Java :
+ Java 8 ou version ultérieure. [Il AWS SDK pour Java fonctionne avec le kit de [développement Oracle Java SE et avec les distributions du kit](https://www.oracle.com/java/technologies/downloads/) de développement Open Java (OpenJDK) [Amazon Corretto](https://aws.amazon.com/corretto/)telles que [Red Hat OpenJDK](https://developers.redhat.com/products/openjdk/overview) et Adoptium.](https://adoptium.net/)
+ Un outil de compilation compatible avec Maven, comme Apache Maven, Apache Ant avec Ivy, Gradle ou IntelliJ.
  + Pour plus d'informations sur l'installation et l'utilisation de Maven, consultez [https://maven.apache.org/](https://maven.apache.org/).
  + Pour plus d'informations sur l'installation et l'utilisation d'Apache Ivy, consultez [https://ant.apache.org/ivy/](https://ant.apache.org/ivy/).
  + Pour plus d'informations sur l'installation et l'utilisation de Gradle, consultez [https://gradle.org/](https://gradle.org/).
  + Pour plus d'informations sur l'installation et l'utilisation d'IntelliJ IDEA, consultez. [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/)

# Configurez un projet Apache Maven qui utilise AWS SDK for Java 2.x
<a name="setup-project-maven"></a>

Vous pouvez utiliser [Apache Maven](https://maven.apache.org/) pour configurer et créer AWS SDK for Java 2.x des projets, ou pour [créer le SDK lui-même](https://github.com/aws/aws-sdk-java-v2/tree/master#building-from-source).

## Conditions préalables
<a name="prerequisitesmaven"></a>

Pour utiliser le SDK pour Java 2.x avec Maven, vous avez besoin des éléments suivants :
+ Java *version 8.0 ou ultérieure*. Vous pouvez télécharger le dernier logiciel du kit de développement Java SE [sur http://www.oracle. com/technetwork/java/javase/downloads](https://www.oracle.com/java/technologies/downloads/)/. Le SDK pour Java 2.x fonctionne également avec [OpenJDK](https://openjdk.org/) Amazon Corretto et une distribution du kit de développement Open Java (OpenJDK). Téléchargez la dernière version d'OpenJDK sur. [https://openjdk.java.net/install/index.html](https://openjdk.org/install/index.html) Téléchargez la dernière version Amazon Corretto 8 ou Amazon Corretto 11 depuis [la Corretto page](https://aws.amazon.com/corretto/).
+  *Apache Maven*. Si vous devez installer Maven, accédez à [http://maven.apache.org/](https://maven.apache.org/) pour le télécharger et l'installer.

## Création d’un projet Maven
<a name="create-maven-project"></a>

Pour créer un projet Maven à partir de la ligne de commande, exécutez la commande suivante depuis un terminal ou une fenêtre `` `` d'invite de commande.

```
mvn -B archetype:generate \
 -DarchetypeGroupId=software.amazon.awssdk \
 -DarchetypeArtifactId=archetype-lambda -Dservice=s3 -Dregion=US_WEST_2 \
 -DarchetypeVersion=2.X.X \
 -DgroupId=com.example.myapp \
 -DartifactId=myapp
```

**Note**  
Remplacez *com.example.myapp* par l'espace de noms complet du package de votre application. Remplacez également *myapp* par le nom de votre projet. Cette valeur devient le nom du répertoire de votre projet.  
Pour utiliser la dernière version de l'archétype, *2.X.X* remplacez-la par la [dernière version de Maven](https://central.sonatype.com/artifact/software.amazon.awssdk/archetype-lambda) Central.

Cette commande crée un projet Maven à l'aide de la boîte à outils de modélisation des archétypes. L'archétype génère l'échafaudage d'un projet de gestionnaire de fonctions. AWS Lambda Cet archétype de projet est préconfiguré pour être compilé avec Java SE 8 et inclut une dépendance à la version du SDK pour Java 2.x spécifiée avec. `-DarchetypeVersion`

Pour de plus amples informations sur la création et la configuration de projets Maven, veuillez consulter le document [Maven Getting Started Guide](https://maven.apache.org/guides/getting-started/).

## Configuration du compilateur Java pour Maven
<a name="configure-maven-compiler"></a>

Si vous avez créé votre projet en utilisant l'archétype du AWS Lambda projet tel que décrit précédemment, la configuration du compilateur Java est déjà terminée pour vous.

Pour vérifier que cette configuration est présente, commencez par ouvrir le fichier `pom.xml` à partir du dossier de projet que vous avez créé (par exemple, `myapp`) lors de l’exécution de la commande précédente. Regardez le paramètre de version du compilateur Java pour ce projet Maven aux lignes 11 et 12, ainsi que l'inclusion requise du plug-in du compilateur Maven aux lignes 71 à 75.

```
<project>
  <properties>
    <maven.compiler.source>1.8</maven.compiler.source>
    <maven.compiler.target>1.8</maven.compiler.target>
  </properties>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <version>${maven.compiler.plugin.version}</version>
      </plugin>
    </plugins>
  </build>
</project>
```

Si vous créez votre projet avec un archétype différent ou en utilisant une autre méthode, vous devez vous assurer que le plug-in du compilateur Maven fait partie de la génération et que ses propriétés source et cible sont toutes deux définies sur **1.8** dans le fichier `pom.xml`.

L'extrait précédent présente une façon de configurer ces paramètres requis.

Vous pouvez également définir la configuration du compilateur en ligne avec la déclaration du plug-in, comme suit.

```
<project>
  <build>
    <plugins>
      <plugin>
        <groupId>org.apache.maven.plugins</groupId>
        <artifactId>maven-compiler-plugin</artifactId>
        <configuration>
          <source>1.8</source>
          <target>1.8</target>
        </configuration>
      </plugin>
    </plugins>
  </build>
</project>
```

## Déclaration du kit SDK comme dépendance
<a name="sdk-as-dependency"></a>

Pour utiliser le AWS SDK pour Java dans votre projet, vous devez le déclarer en tant que dépendance dans le `pom.xml` fichier de votre projet.

Si vous avez créé votre projet à l'aide de l'archétype de projet tel que décrit précédemment, la dernière version du SDK est déjà configurée en tant que dépendance dans votre projet. 

L'archétype génère une dépendance à un artefact BOM (nomenclature) pour l'identifiant du groupe. `software.amazon.awssdk` Avec une nomenclature, il n'est pas nécessaire de spécifier la version maven pour les dépendances d'artefacts individuels qui partagent le même identifiant de groupe.

Si vous avez créé votre projet Maven d'une autre manière, configurez la dernière version du kit SDK pour votre projet en vous assurant que le fichier `pom.xml` contient les éléments suivants.

```
<project>
  <properties>
    <aws.java.sdk.version>2.X.X</aws.java.sdk.version>
  </properties>
  <dependencyManagement>
    <dependencies>
      <dependency>
        <groupId>software.amazon.awssdk</groupId>
        <artifactId>bom</artifactId>
        <version>${aws.java.sdk.version}</version>
        <type>pom</type>
        <scope>import</scope>
      </dependency>
    </dependencies>
  </dependencyManagement>
</project>
```

**Note**  
Remplacez *2.X.X* le `pom.xml` fichier par la [dernière version du AWS SDK for Java 2.x](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

## Définition des dépendances pour les modules SDK
<a name="modules-dependencies"></a>

Maintenant que vous avez configuré le SDK, vous pouvez ajouter des dépendances pour un ou plusieurs AWS SDK pour Java modules à utiliser dans votre projet.

Bien que vous puissiez spécifier le numéro de version pour chaque composant, cela n'est pas nécessaire car vous avez déjà déclaré la version du SDK dans la `dependencyManagement` section à l'aide de l'artefact de nomenclature. Pour charger une version différente d'un module donné, spécifiez un numéro de version pour sa dépendance.

Si vous avez créé votre projet à l'aide de l'archétype de projet tel que décrit précédemment, votre projet est déjà configuré avec plusieurs dépendances. Il s'agit notamment des dépendances pour les gestionnaires de AWS Lambda fonctions et Amazon S3, comme suit.

```
<project>
    <dependencies>
        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>s3</artifactId>
            <exclusions>
                <exclusion>
                    <groupId>software.amazon.awssdk</groupId>
                    <artifactId>netty-nio-client</artifactId>
                </exclusion>
                <exclusion>
                    <groupId>software.amazon.awssdk</groupId>
                    <artifactId>apache-client</artifactId>
                </exclusion>
            </exclusions>
        </dependency>

        <dependency>
            <groupId>software.amazon.awssdk</groupId>
            <artifactId>url-connection-client</artifactId>
        </dependency>

        <dependency>
            <groupId>com.amazonaws</groupId>
            <artifactId>aws-lambda-java-core</artifactId>
            <version>${aws.lambda.java.version}</version>
        </dependency>
    </dependencies>
</project>
```

**Note**  
Dans l'`pom.xml`exemple ci-dessus, les dépendances proviennent de `groupId` s différents. La `s3` dépendance vient de`software.amazon.awssdk`, alors que la `aws-lambda-java-core` dépendance vient de`com.amazonaws`. La configuration de gestion des dépendances des nomenclatures affecte les artefacts`software.amazon.awssdk`, une version est donc nécessaire pour l'`aws-lambda-java-core`artefact.  
Pour le développement de *gestionnaires de fonctions Lambda* à l'aide du SDK pour Java 2.x`aws-lambda-java-core`, quelle est la bonne dépendance ? Toutefois, si votre application doit gérer des ressources Lambda, l'utilisation d'opérations telles que`listFunctions`,`deleteFunction`, et `invokeFunction``createFunction`, votre application nécessite la dépendance suivante.   

```
<groupId>software.amazon.awssdk</groupId>
<artifactId>lambda</artifactId>
```

**Note**  
La `s3` dépendance exclut les dépendances transitives `netty-nio-client` et les dépendances `apache-client` transitives. À la place de l'un ou l'autre de ces clients HTTP, l'archétype inclut la `url-connection-client` dépendance, ce qui permet de [réduire la latence de démarrage des AWS Lambda fonctions](lambda-optimize-starttime.md#lambda-quick-url).

Ajoutez à votre projet les modules Service AWS et les fonctionnalités dont vous avez besoin pour votre projet. Les modules (dépendances) gérés par le AWS SDK pour Java BOM sont répertoriés dans le référentiel [central Maven](https://central.sonatype.com/artifact/software.amazon.awssdk/bom).

**Note**  
Vous pouvez rechercher le fichier `pom.xml` à partir d'un exemple de code pour déterminer les dépendances dont vous avez besoin pour votre projet. Par exemple, si vous êtes intéressé par les dépendances du service DynamoDB, [consultez cet](https://github.com/awsdocs/aws-doc-sdk-examples/blob/da520cb4436f8567a90b6f73f77232fd590a50bf/javav2/example_code/dynamodb/pom.xml) exemple extrait du référentiel d'exemples de [code AWS sur](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2). GitHub (Recherchez le `pom.xml` fichier sous [/javav2/example\$1code/dynamodb.)](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/dynamodb)

### Construction de l'intégralité du kit SDK dans votre projet
<a name="build-the-entire-sdk-into-your-project"></a>

Pour optimiser votre application, nous vous recommandons vivement d'extraire uniquement les composants dont vous avez besoin au lieu de l'intégralité du kit SDK. Toutefois, pour AWS SDK pour Java intégrer l'intégralité à votre projet, déclarez-le dans votre `pom.xml` fichier de la manière suivante.

```
<project>
  <dependencies>
    <dependency>
      <groupId>software.amazon.awssdk</groupId>
      <artifactId>aws-sdk-java</artifactId>
      <version>2.X.X</version>
    </dependency>
  </dependencies>
</project>
```

## Génération de votre projet
<a name="build-project"></a>

Après avoir configuré le fichier `pom.xml`, vous pouvez utiliser Maven pour construire votre projet.

Pour construire votre projet Maven à partir de la ligne de commande, ouvrez une fenêtre de terminal ou d'invite de commande, accédez à votre répertoire de projet (par exemple, `myapp`), entrez ou collez la commande suivante, puis appuyez sur Entrée ou Retour.

```
mvn package
```

Cela crée un fichier `.jar` unique (JAR) dans le répertoire `target` (par exemple, `myapp/target`). Ce fichier JAR contient tous les modules de kit SDK que vous avez spécifiés comme dépendances dans votre fichier `pom.xml`.

# Configurez un projet Gradle qui utilise le AWS SDK for Java 2.x
<a name="setup-project-gradle"></a>

Vous pouvez utiliser [Gradle](https://gradle.org/) pour configurer et créer des AWS SDK for Java 2.x projets. 

Les étapes initiales de l'exemple suivant proviennent du [guide de démarrage de Gradle](https://docs.gradle.org/current/samples/sample_building_java_applications.html) pour la version 8.4. Si vous utilisez une version différente, les résultats peuvent légèrement différer.

**Pour créer une application Java avec Gradle (ligne de commande)**

1. Créez un répertoire pour héberger votre projet. Dans cet exemple, `demo` c'est le nom du répertoire.

1. Dans le `demo` répertoire, exécutez la `gradle init` commande et fournissez les valeurs surlignées en rouge, comme indiqué dans la sortie de ligne de commande suivante. Pour la procédure pas à pas, nous avons choisi Kotlin comme langage DSL pour les scripts de construction, mais un exemple complet pour Groovy est également présenté à la fin de cette rubrique.

   ```
   > gradle init
   Starting a Gradle Daemon (subsequent builds will be faster)
   
   Select type of project to generate:
   1: basic
   2: application
   3: library
   4: Gradle plugin
   Enter selection (default: basic) [1..4] 2
   
   Select implementation language:
   1: C++
   2: Groovy
   3: Java
   4: Kotlin
   5: Scala
   6: Swift
   Enter selection (default: Java) [1..6] 3
   
   Generate multiple subprojects for application? (default: no) [yes, no] no
   Select build script DSL:
   1: Kotlin
   2: Groovy
   Enter selection (default: Kotlin) [1..2] <Enter>
   
   Select test framework:
   1: JUnit 4
   2: TestNG
   3: Spock
   4: JUnit Jupiter
   Enter selection (default: JUnit Jupiter) [1..4] 4
   
   Project name (default: demo): <Enter>
   Source package (default: demo): <Enter>
   Enter target version of Java (min. 7) (default: 11): <Enter>
   Generate build using new APIs and behavior (some features may change in the next minor release)? (default: no) [yes, no] <Enter>
   
   > Task :init
   To learn more about Gradle by exploring our Samples at https://docs.gradle.org/8.4/samples/sample_building_java_applications.html
   
   BUILD SUCCESSFUL in 3m 43s
   2 actionable tasks: 2 executed
   ```

1. Une fois la `init` tâche terminée, le `demo` répertoire contient la structure arborescente suivante. Nous examinerons de plus près le fichier de compilation principal `build.gradle.kts` (surligné en rouge) dans la section suivante.

   ```
   ├── app
   │   ├── build.gradle.kts
   │   └── src
   │       ├── main
   │       │   ├── java
   │       │   │   └── demo
   │       │   │       └── App.java
   │       │   └── resources
   │       └── test
   │           ├── java
   │           │   └── demo
   │           │       └── AppTest.java
   │           └── resources
   ├── gradle
   │   └── wrapper
   │       ├── gradle-wrapper.jar
   │       └── gradle-wrapper.properties
   ├── gradlew
   ├── gradlew.bat
   └── settings.gradle.kts
   ```

   Le `build.gradle.kts` fichier contient le contenu échafaudé suivant.

   ```
   /*
    * This file was generated by the Gradle 'init' task.
    *
    * This generated file contains a sample Java application project to get you started.
    * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
    */
   
   plugins {
       // Apply the application plugin to add support for building a CLI application in Java.
       application
   }
   
   repositories {
       // Use Maven Central for resolving dependencies.
       mavenCentral()
   }
   
   dependencies {
       // Use JUnit Jupiter for testing.
       testImplementation("org.junit.jupiter:junit-jupiter:5.9.3")
   
       testRuntimeOnly("org.junit.platform:junit-platform-launcher")
   
       // This dependency is used by the application.
       implementation("com.google.guava:guava:33.3.0-jre")
   }
   
   // Apply a specific Java toolchain to ease working on different environments.
   java {
       toolchain {
           languageVersion.set(JavaLanguageVersion.of(11))
       }
   }
   
   application {
       // Define the main class for the application.
       mainClass.set("demo.App")
   }
   
   tasks.named<Test>("test") {
       // Use JUnit Platform for unit tests.
       useJUnitPlatform()
   }
   ```

1. Utilisez le fichier de construction Gradle échafaudé comme base de votre projet. AWS 

   1. Pour gérer les dépendances du SDK pour votre projet Gradle, ajoutez la nomenclature Maven (BOM) AWS SDK for Java 2.x pour la `dependencies` section du fichier. `build.gradle.kts`

      ```
      ...
      dependencies {
          implementation(platform("software.amazon.awssdk:bom:2.27.21"))
          // With the bom declared, you specify individual SDK dependencies without a version.
       ...
      }
      ...
      ```
**Note**  
Dans cet exemple de fichier de compilation, remplacez *2.27.21* par la dernière version du SDK pour Java 2.x. Trouvez la dernière version disponible dans le [référentiel central de Maven](https://central.sonatype.com/artifact/software.amazon.awssdk/bom/versions).

   1. Spécifiez les modules du SDK dont votre application a besoin dans la `dependencies` section. À titre d'exemple, ce qui suit ajoute une dépendance à Amazon Simple Storage Service. 

      ```
      ...
      dependencies {    
          implementation(platform("software.amazon.awssdk:bom:2.27.21"))
          implementation("software.amazon.awssdk:s3")
       ...
      }
      ...
      ```

      Gradle résout automatiquement la version correcte des dépendances déclarées en utilisant les informations de la nomenclature.

Les exemples suivants montrent des fichiers de construction complets de Gradle à la fois dans Kotlin et Groovy. DSLs Le fichier de compilation contient les dépendances pour Amazon S3, l'authentification, la journalisation et les tests. La version source et cible de Java est la version 11.

------
#### [ Kotlin DSL (build.gradle.kts) ]

```
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    application
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    implementation(platform("software.amazon.awssdk:bom:2.20.56"))
    implementation("software.amazon.awssdk:s3")
    implementation("software.amazon.awssdk:sso")
    implementation("software.amazon.awssdk:ssooidc")
    implementation(platform("org.apache.logging.log4j:log4j-bom:2.20.0"))
    implementation("org.apache.logging.log4j:log4j-slf4j2-impl")
    implementation("org.apache.logging.log4j:log4j-1.2-api")
    testImplementation(platform("org.junit:junit-bom:5.10.0"))
    testImplementation("org.junit.jupiter:junit-jupiter")
}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(11))
    }
}

application {
    // Define the main class for the application.
    mainClass.set("demo.App")
}

tasks.named<Test>("test") {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}
```

------
#### [ Groovy DSL (build.gradle) ]

```
/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java application project to get you started.
 * For more details on building Java & JVM projects, please refer to https://docs.gradle.org/8.4/userguide/building_java_projects.html in the Gradle documentation.
 */

plugins {
    // Apply the application plugin to add support for building a CLI application in Java.
    id 'application'
}

repositories {
    // Use Maven Central for resolving dependencies.
    mavenCentral()
}

dependencies {
    implementation platform('software.amazon.awssdk:bom:2.27.21')
    implementation 'software.amazon.awssdk:s3'
    implementation 'software.amazon.awssdk:sso'
    implementation 'software.amazon.awssdk:ssooidc'
    implementation platform('org.apache.logging.log4j:log4j-bom:2.20.0')
    implementation 'org.apache.logging.log4j:log4j-slf4j2-impl'
    implementation 'org.apache.logging.log4j:log4j-1.2-api'
    testImplementation platform('org.junit:junit-bom:5.10.0')
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

// Apply a specific Java toolchain to ease working on different environments.
java {
    toolchain {
        languageVersion = JavaLanguageVersion.of(11)
    }
}

application {
    // Define the main class for the application.
    mainClass = 'demo_groovy.App'
}

tasks.named('test') {
    // Use JUnit Platform for unit tests.
    useJUnitPlatform()
}
```

------

Pour les étapes suivantes, consultez le guide de démarrage sur le site Web de Gradle pour obtenir des instructions sur la [création et l'exécution d'une application Gradle](https://docs.gradle.org/current/samples/sample_building_java_applications.html#run_the_application).

# Configurez un projet GraalVM Native Image qui utilise AWS SDK for Java 2.x
<a name="setup-project-graalvm"></a>

Avec les versions 2.16.1 et ultérieures, il prend en out-of-the-box charge les AWS SDK for Java 2.x applications GraalVM Native Image. Utilisez l'archétype `archetype-app-quickstart` Maven pour configurer un projet avec prise en charge native intégrée des images.

## Conditions préalables
<a name="setup-graalvmnativeimage-prereq"></a>
+ Suivez les étapes décrites dans [Configuration de la version AWS SDK pour Java 2.x](setup.md).
+ Installez [GraalVM Native Image](https://www.graalvm.org/reference-manual/native-image/#install-native-image).

## Créez un projet à l'aide de l'archétype
<a name="setup-graalvmnativeimage-project"></a>

Pour créer un projet Maven avec prise en charge native intégrée des images, dans un terminal ou une fenêtre d'invite de commande, utilisez la commande suivante.

**Note**  
`com.example.mynativeimageapp`Remplacez-le par l'espace de noms de package complet de votre application. Remplacez également `mynativeimageapp` par le nom de votre projet. Cette valeur devient le nom du répertoire de votre projet.

```
mvn archetype:generate \
    -DarchetypeGroupId=software.amazon.awssdk \
    -DarchetypeArtifactId=archetype-app-quickstart \
    -DarchetypeVersion=2.27.21\
    -DnativeImage=true \
    -DhttpClient=apache-client \
    -Dservice=s3 \
    -DgroupId=com.example.mynativeimageapp \
    -DartifactId=mynativeimageapp \
    -DinteractiveMode=false
```

Cette commande crée un projet Maven configuré avec des dépendances pour le AWS SDK pour Java, Amazon S3, et le client `ApacheHttpClient` HTTP. Il inclut également une dépendance pour le [plugin GraalVM Native Image Maven](https://graalvm.github.io/native-build-tools/latest/index.html), afin que vous puissiez créer des images natives à l'aide de Maven.

Pour inclure les dépendances d'un autre service Amazon Web Services, définissez la valeur du `-Dservice` paramètre sur l'ID d'artefact de ce service. Exemples : `dynamodb`, `comprehend` et `pinpoint`. Pour obtenir la liste complète des artefacts IDs, consultez la liste des dépendances gérées pour [software.amazon.awssdk](https://mvnrepository.com/artifact/software.amazon.awssdk/bom/latest) sur Maven Central.

Pour utiliser un client HTTP asynchrone, définissez le `-DhttpClient` paramètre sur. `netty-nio-client` Pour l'utiliser `UrlConnectionHttpClient` en tant que client HTTP synchrone au lieu de`apache-client`, définissez le `-DhttpClient` paramètre sur`url-connection-client`.

## Créez une image native
<a name="build-graalvmnativeimage-project"></a>

Après avoir créé le projet, exécutez la commande suivante depuis le répertoire de votre projet, par exemple `mynativeimageapp` :

```
mvn package -P native-image
```

Cela crée une application d'image native dans le `target` répertoire, par exemple,`target/mynativeimageapp`.