

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# AWS SDK for Java 2.x 설정
<a name="setup"></a>

이 단원에서는 AWS SDK for Java 2.x을 사용하기 위한 개발 환경을 설정하는 방법에 대한 정보를 제공합니다.

## 설정 개요
<a name="setup-overview"></a>

AWS SDK for Java를 사용하여AWS 서비스에 액세스하는 애플리케이션을 성공적으로 개발하려면 다음 조건이 필요합니다.
+ 사용자를 대신하여 [요청을 인증](get-started-auth.md#setup-auth)하려면 Java SDK가 자격 증명에 액세스할 수 있어야 합니다.
+ SDK에 구성된 [IAM 역할의 권한](https://docs.aws.amazon.com/singlesignon/latest/userguide/permissionsetsconcept.html)은 애플리케이션에 필요한 AWS 서비스 액세스를 허용해야 합니다. **PowerUserAccess** AWS 관리형 정책과 관련된 권한은 대부분의 개발 요구 사항에 충분합니다.
+ 다음 요소가 포함된 개발 환경
  + 최소 다음 중 하나와 같은 방식으로 설정된 [공유 구성 파일](https://docs.aws.amazon.com/sdkref/latest/guide/file-format.html):
    + 이 `config` 파일에는 SDK가 AWS 자격 증명을 가져올 수 있도록 [IAM Identity Center 싱글 사인온 설정](get-started-auth.md#setup-credentials)이 포함되어 있습니다.
    + 이 `credentials` 파일에는 임시 자격 증명이 들어 있습니다.
  + [Java 8 이상 버전 설치](setup-java-buildtool.md).
  + [Maven](https://maven.apache.org/download.cgi) 또는 [Gradle](https://gradle.org/install/)과 같은 [빌드 자동화 도구](setup-java-buildtool.md).
  + 코드 작업을 위한 텍스트 편집기.
  + (선택 사항이지만 권장됨) [IntelliJ IDEA](https://www.jetbrains.com/idea/download/#section=windows), [Eclipse](https://www.eclipse.org/ide/) 또는 [NetBeans](https://netbeans.apache.org/front/main/download/index.html)와 같은 IDE(통합 개발 환경).

    또한 IntelliJ IDEA를 사용하는 경우 [AWS Toolkit for IntelliJ IDEA](https://docs.aws.amazon.com/toolkit-for-jetbrains/latest/userguide/welcome.html)를 추가하여 IDE에 AWS 서비스 직접 통합하여 개발을 간소화할 수 있습니다.
+ 애플리케이션을 실행할 준비가 되었을 때 활성화된 AWS 액세스 포털 세션. AWS Command Line Interface를 사용하여 IAM Identity Center의 AWS 액세스 포털에 대한 [로그인 프로세스를 시작](get-started-auth.md#setup-login-sso)합니다.

**중요**  
이 설정 단원의 지침에서는 사용자 또는 조직이 IAM Identity Center를 사용한다고 가정합니다. 조직에서 IAM Identity Center와 독립적으로 작동하는 외부 ID 공급자를 사용하는 경우 Java용 SDK에 사용할 임시 자격 증명을 얻는 방법을 알아보세요. [이 지침](credentials-temporary.md#credentials-temporary-from-portal)에 따라 `~/.aws/credentials` 파일에 임시 자격 증명을 추가하세요.  
ID 제공자가 임시 자격 증명을 `~/.aws/credentials` 파일에 자동으로 추가하는 경우 SDK 또는 AWS CLI 에 프로필 이름을 제공할 필요가 없도록 프로필 이름을 `[default]`으로 지정해야 합니다.

# 에서 사용할 Java 및 빌드 도구 설치 AWS SDK for Java 2.x
<a name="setup-java-buildtool"></a>

SDK for Java 2.x로 작업하려면 다음과 같은 Java 개발 환경 요구 사항이 필요합니다.
+ Java 8 이상. 는 [Oracle Java SE 개발 키트](https://www.oracle.com/java/technologies/downloads/) 및 [Amazon Corretto](https://aws.amazon.com/corretto/), Red Hat OpenJDK, [Adoptium](https://adoptium.net/)과 같은 Open Java 개발 키트(OpenJDK) 배포판과 함께 AWS SDK for Java 작동합니다. [ OpenJDK](https://developers.redhat.com/products/openjdk/overview)
+ Apache Maven, Ivy, Gradle 또는 IntelliJ를 사용하는 Apache Ant 등 Maven 호환 빌드 도구입니다.
  + Maven을 설치하고 사용하는 방법에 대한 자세한 내용은 [https://maven.apache.org/](https://maven.apache.org/) 참조하십시오.
  + Apache Ivy 설치 및 사용 방법에 대한 자세한 내용은 [https://ant.apache.org/ivy/](https://ant.apache.org/ivy/) 페이지를 참조하세요.
  + Gradle 설치 및 사용 방법에 대한 자세한 내용은 [https://gradle.org/](https://gradle.org/)을 참조하세요.
  + IntelliJ IDEA 설치 및 사용 방법에 대한 자세한 내용은 [https://www.jetbrains.com/idea/](https://www.jetbrains.com/idea/)을 참조하세요.

# 를 사용하는 Apache Maven 프로젝트 설정 AWS SDK for Java 2.x
<a name="setup-project-maven"></a>

[Apache Maven](https://maven.apache.org/)을 사용하여 AWS SDK for Java 2.x 프로젝트를 구성 및 빌드하거나 [SDK 자체를 빌드](https://github.com/aws/aws-sdk-java-v2/tree/master#building-from-source)할 수 있습니다.

## 사전 조건
<a name="prerequisitesmaven"></a>

Maven에서 SDK for Java 2.x를 사용하려면 다음이 필요합니다.
+ Java *8.0 이상*. [http://www.oracle.com/technetwork/java/javase/downloads/](https://www.oracle.com/java/technologies/downloads/)에서 최신 Java SE Development Kit 소프트웨어를 다운로드할 수 있습니다. SDK for Java 2.x는 [OpenJDK](https://openjdk.org/) 및 Open Java Development Kit(OpenJDK) 배포 Amazon Corretto판에서도 작동합니다. [https://openjdk.java.net/install/index.html](https://openjdk.org/install/index.html)에서 최신 OpenJDK 버전을 다운로드하십시오. 페이지에서 최신 Amazon Corretto 8 또는 Amazon Corretto 11 버전을 다운로드합니다. [Corretto](https://aws.amazon.com/corretto/) 
+  *Apache Maven*. Maven을 설치해야 하는 경우 [http://maven.apache.org/](https://maven.apache.org/)에서 다운로드하여 설치하십시오.

## Maven 프로젝트 만들기
<a name="create-maven-project"></a>

명령줄에서 Maven 프로젝트를 만들려면 터미널 또는 명령 프롬프트 창````에서 다음 명령을 실행합니다.

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

**참고**  
*com.example.myapp*을 애플리케이션의 전체 패키지 네임스페이스로 바꿉니다. 또한 *myapp*을 프로젝트 이름으로 바꿉니다. 이는 프로젝트의 디렉터리 이름이 됩니다.  
최신 버전의 아키타입을 사용하려면 *2.X.X*를 [Maven Central의 최신 버전](https://central.sonatype.com/artifact/software.amazon.awssdk/archetype-lambda)으로 바꾸세요.

이 명령은 아키타입 템플릿 툴킷을 사용하여 Maven 프로젝트를 만듭니다. 아키타입은 AWS Lambda 함수 핸들러 프로젝트에 대한 스캐폴딩을 생성합니다. 이 프로젝트 아키타입은 Java SE 8로 컴파일하도록 미리 구성되어 있으며 `-DarchetypeVersion`로 지정된 Java 2.x용 SDK 버전에 대한 종속성을 포함합니다.

Maven 프로젝트 생성 및 구성에 대한 자세한 내용은 [Maven 시작 안내서](https://maven.apache.org/guides/getting-started/)를 참조하십시오.

## Maven에 Java 컴파일러 구성
<a name="configure-maven-compiler"></a>

앞에서 설명한 대로 프로젝트 아키타이프를 사용하여 AWS Lambda 프로젝트를 생성한 경우 Java 컴파일러의 구성이 이미 완료된 것입니다.

이러한 구성이 있는지 확인하려면, 이전 명령을 실행했을 때 만든 프로젝트 폴더(예: `myapp`)에서 `pom.xml` 파일을 엽니다. 이 Maven 프로젝트의 Java 컴파일러 버전 설정과 71\$175행에 Maven 컴파일러 플러그인을 포함시키는 데 필요한 내용을 보려면 11행 및 12행을 살펴보십시오.

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

다른 아키타입이나 다른 방법을 사용하여 프로젝트를 생성하는 경우 Maven 컴파일러 플러그인이 빌드의 일부이고 해당 소스 및 대상 속성이 모두 `pom.xml` 파일에서 **1.8**로 설정되어 있는지 확인해야 합니다.

이러한 필수 설정을 구성하는 한 가지 방법에 대해서는 이전 조각을 참조하십시오.

또는 다음과 같이 플러그인 선언을 통해 컴파일러 구성 인라인을 구성할 수 있습니다.

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

## SDK를 종속성으로 선언
<a name="sdk-as-dependency"></a>

프로젝트 AWS SDK for Java 에서를 사용하려면 프로젝트 `pom.xml` 파일의 종속성으로 선언해야 합니다.

앞에서 설명한 대로 프로젝트 아키타입를 사용하여 프로젝트를 만들었다면 SDK는 이미 프로젝트에서 종속성으로 구성되어 있습니다.

아키타입은 `software.amazon.awssdk` 그룹 ID에 대한 BOM(재료 명세서) 아티팩트 종속성을 생성합니다. BOM을 사용하면 동일한 그룹 ID를 공유하는 개별 아티팩트 종속성에 대해 Maven 버전을 지정할 필요가 없습니다.

다른 방법으로 Maven 프로젝트를 만든 경우에는 `pom.xml` 파일에 다음 사항이 포함되어 있는지 확인하여 프로젝트에 SDK의 최신 버전을 구성하십시오.

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

**참고**  
`pom.xml` 파일의 *2.X.X*를 [AWS SDK for Java 2.x의 최신 버전](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)으로 교체하세요.

## SDK 모듈에 대한 종속성 설정
<a name="modules-dependencies"></a>

이제 SDK를 구성했으므로 프로젝트에서 사용할 하나 이상의 AWS SDK for Java 모듈에 대한 종속성을 추가할 수 있습니다.

각 구성 요소의 버전 번호를 지정할 수 있지만 이미 BOM 아티팩트를 사용하여 `dependencyManagement` 섹션에서 SDK 버전을 선언했기 때문에 그럴 필요가 없습니다. 지정된 모듈의 다른 버전을 로드하려면 해당 종속성에 버전 번호를 지정합니다.

앞에서 설명한 대로 프로젝트 아키타입를 사용하여 프로젝트를 만들었다면 프로젝트는 이미 여러 종속성으로 구성되어 있습니다. 여기에는 다음과 같이 AWS Lambda 함수 핸들러와 Amazon S3에 대한 종속성이 포함됩니다.

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

**참고**  
위 `pom.xml` 예시에서는 종속성이 서로 다른 `groupId`에 속합니다. `s3` 종속성은 `software.amazon.awssdk`에서 가져온 것이고 `aws-lambda-java-core` 종속성은 `com.amazonaws`에서 가져온 것입니다. BOM 종속성 관리 구성은 `software.amazon.awssdk`의 아티팩트에 영향을 미치므로 `aws-lambda-java-core` 아티팩트에 대한 버전이 필요합니다.  
Java 2.x용 SDK를 사용하여 *Lambda 함수 핸들러*를 개발하는 경우 `aws-lambda-java-core`가 올바른 종속성입니다. 하지만 `listFunctions`, `deleteFunction`, `invokeFunction`, `createFunction` 등의 작업을 사용하여 애플리케이션이 Lambda 리소스를 관리해야 하는 경우 애플리케이션에 다음과 같은 종속성이 필요합니다.  

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

**참고**  
`s3` 종속성에는 `netty-nio-client` 및 `apache-client` 전이적 종속성이 제외됩니다. 아키타입에는 이러한 HTTP 클라이언트 대신 `url-connection-client` 종속성이 포함되므로 [AWS Lambda 함수의 시작 지연 시간을 줄이는 데 도움이 됩니다](lambda-optimize-starttime.md#lambda-quick-url).

프로젝트에 필요한 AWS 서비스 및 기능에 대한 모듈을 프로젝트에 추가합니다. AWS SDK for Java BOM에서 관리하는 모듈(종속성)은 [Maven 중앙 저장소](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)에 나열되어 있습니다.

**참고**  
코드 예제에서 `pom.xml` 파일을 살펴보고 프로젝트에 필요한 종속성을 결정할 수 있습니다. 예를 들어 DynamoDB 서비스의 종속성에 관심이 있다면 GitHub의 [AWS 코드 예제 리포지토리](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2)에서 [이 예제](https://github.com/awsdocs/aws-doc-sdk-examples/blob/da520cb4436f8567a90b6f73f77232fd590a50bf/javav2/example_code/dynamodb/pom.xml)를 참조하세요. ([/javav2/example\$1code/dynamodb](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/dynamodb)에서 `pom.xml` 파일을 찾아보세요.)

### 전체 SDK를 프로젝트에 빌드
<a name="build-the-entire-sdk-into-your-project"></a>

애플리케이션을 최적화하려면 전체 SDK 대신 필요한 구성 요소만 가져오는 것이 좋습니다. 그러나 전체 AWS SDK for Java 를 프로젝트에 빌드하려면 다음과 같이 `pom.xml` 파일에 선언합니다.

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

## 프로젝트 빌드
<a name="build-project"></a>

`pom.xml` 파일을 구성한 후에는 Maven을 사용하여 프로젝트를 빌드할 수 있습니다.

명령줄에서 Maven 프로젝트를 빌드하려면 터미널 또는 명령 프롬프트 창을 열고 프로젝트 디렉터리(예: `myapp`)로 이동하여 다음 명령을 입력하거나 붙여넣은 다음 Enter 또는 Return을 누릅니다.

```
mvn package
```

이렇게 하면 `target` 디렉터리(예: `myapp/target`)에 단일 `.jar` 파일(JAR)이 생성됩니다. 이 JAR에는 `pom.xml` 파일에서 종속성으로 지정한 모든 SDK 모듈이 들어 있습니다.

# 를 사용하는 Gradle 프로젝트 설정 AWS SDK for Java 2.x
<a name="setup-project-gradle"></a>

[Gradle](https://gradle.org/)을 사용하여 AWS SDK for Java 2.x 프로젝트를 설정하고 빌드할 수 있습니다.

다음 예시의 초기 단계는 [Gradle 버전 8.4용 시작 가이드](https://docs.gradle.org/current/samples/sample_building_java_applications.html)에서 가져온 것입니다. 다른 버전을 사용하는 경우 결과가 약간 다를 수 있습니다.

**Gradle을 사용하여 Java 애플리케이션을 만들려면(명령줄)**

1. 프로젝트를 보관할 디렉터리를 생성합니다. 이 예에서 디렉터리 이름은 `demo`입니다.

1. `demo` 디렉터리 내에서 `gradle init` 명령을 실행하고 다음 명령줄 출력과 같이 빨간색으로 강조 표시된 값을 입력합니다. 안내에서는 Kotlin을 빌드 스크립트 DSL 언어로 선택했지만 Groovy에 대한 전체 예제도 이 항목의 끝에 표시됩니다.

   ```
   > 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. `init` 작업이 완료되면 `demo` 디렉터리에는 다음과 같은 트리 구조가 포함됩니다. 다음 단원에서는 주 빌드 파일 `build.gradle.kts`(빨간색으로 강조 표시됨)을 자세히 살펴보겠습니다.

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

   `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 {
       // 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. 스캐폴딩된 Gradle 빌드 파일을 AWS 프로젝트의 기반으로 사용합니다.

   1. Gradle 프로젝트의 SDK 종속성을 관리하려면 `build.gradle.kts` 파일의 `dependencies` 섹션에에 대한 Maven 재료표(BOM) AWS SDK for Java 2.x 를 추가합니다.

      ```
      ...
      dependencies {
          implementation(platform("software.amazon.awssdk:bom:2.27.21"))
          // With the bom declared, you specify individual SDK dependencies without a version.
       ...
      }
      ...
      ```
**참고**  
이 예제 빌드 파일에서 *2.27.21*을 최신 버전의 Java 2.x용 SDK로 바꿉니다. [Maven 중앙 리포지토리](https://central.sonatype.com/artifact/software.amazon.awssdk/bom/versions)에서 최신 버전을 찾아보세요.

   1. `dependencies` 섹션에서 애플리케이션에 필요한 SDK 모듈을 지정하세요. 예를 들어, 다음은 Amazon Simple Storage Service에 대한 종속성을 추가합니다.

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

      Gradle은 BOM의 정보를 사용하여 선언된 종속성의 올바른 버전을 자동으로 확인합니다.

다음 예시는 Kotlin과 Groovy DSL의 전체 Gradle 빌드 파일을 보여줍니다. 빌드 파일에는 Amazon S3에 대한 종속성, 인증, 로깅 및 테스트가 포함되어 있습니다. Java의 소스 및 대상 버전은 버전 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()
}
```

------

다음 단계는 Gradle 웹사이트의 시작 가이드를 참고하여 [Gradle 애플리케이션을 빌드하고 실행](https://docs.gradle.org/current/samples/sample_building_java_applications.html#run_the_application)하는 방법에 대한 지침을 확인하세요.

# 를 사용하는 GraalVM 네이티브 이미지 프로젝트 설정 AWS SDK for Java 2.x
<a name="setup-project-graalvm"></a>

버전 2.16.1 이상에서 AWS SDK for Java 2.x 는 GraalVM 네이티브 이미지 애플리케이션에 대한 out-of-the-box 지원을 제공합니다. `archetype-app-quickstart` Maven 아키타입을 사용하여 네이티브 이미지 지원이 내장된 프로젝트를 설정할 수 있습니다.

## 사전 조건
<a name="setup-graalvmnativeimage-prereq"></a>
+ [AWS SDK for Java 2.x 설정](setup.md)의 단계를 완료합니다.
+ [GraalVM Native Image](https://www.graalvm.org/reference-manual/native-image/#install-native-image)를 설치합니다.

## 아키타입을 사용하여 프로젝트 생성
<a name="setup-graalvmnativeimage-project"></a>

기본 제공 네이티브 이미지 지원을 사용하여 Maven 프로젝트를 생성하려면 터미널 또는 명령 프롬프트 창에서 다음 명령을 사용합니다.

**참고**  
`com.example.mynativeimageapp`를 애플리케이션의 전체 패키지 네임스페이스로 바꿉니다. 또한 `mynativeimageapp`을 프로젝트 이름으로 바꿉니다. 이는 프로젝트의 디렉터리 이름이 됩니다.

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

이 명령은 AWS SDK for Java Amazon S3및 `ApacheHttpClient` HTTP 클라이언트에 대한 종속성으로 구성된 Maven 프로젝트를 생성합니다. 또한 [GraalVM Native Image Maven 플러그인](https://graalvm.github.io/native-build-tools/latest/index.html)에 대한 종속성도 포함되어 있으므로 Maven을 사용하여 네이티브 이미지를 빌드할 수 있습니다.

다른에 대한 종속성을 포함하려면 `-Dservice` 파라미터 값을 해당 서비스의 아티팩트 ID로 Amazon Web Services설정합니다. 예를 들면 `dynamodb`, `comprehend` 및 `pinpoint`입니다. 아티팩트 ID의 전체 목록은 [Maven Central의 software.amazon.awssdk](https://mvnrepository.com/artifact/software.amazon.awssdk/bom/latest)에 대한 관리형 종속성 목록을 참조하세요.

비동기 HTTP 클라이언트를 사용하려면 `-DhttpClient` 파라미터를 `netty-nio-client`로 설정하세요. `apache-client` 대신 `UrlConnectionHttpClient`를 동기 HTTP 클라이언트로 사용하려면 `-DhttpClient` 파라미터를 `url-connection-client`로 설정합니다.

## 네이티브 이미지를 빌드
<a name="build-graalvmnativeimage-project"></a>

프로젝트를 생성한 후 프로젝트 디렉터리에서 예로 `mynativeimageapp`와 같은 다음 명령어를 실행합니다.

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

그러면 `target` 디렉터리에 예로 `target/mynativeimageapp`와 같은 네이티브 이미지 애플리케이션이 생성됩니다.