

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# を使用する 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 以降*。最新の Java SE Development Kit ソフトウェアは [http://www.oracle.com/technetwork/java/javase/downloads/](https://www.oracle.com/java/technologies/downloads/) からダウンロードできます。SDK for Java 2.x は Amazon Corretto、[OpenJDK](https://openjdk.org/) および Open Java Development Kit (OpenJDK) のディストリビューションとも連携します。最新の OpenJDK バージョンは [https://openjdk.java.net/install/index.html](https://openjdk.org/install/index.html) からダウンロードしてください。ページから最新の 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 中央の最新バージョン](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` ファイルを開きます。11 行目と 12 行目を見て、この Maven プロジェクトの Java コンパイラのバージョン設定を確認します。また、71～75 行目を見て、必要な Maven コンパイラプラグインが含まれていることを確認します。

```
<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** に設定されているようにする必要があります。

これらの必須の設定を指定する 1 つの方法として、前述のスニペットを参照してください。

または、次のように、プラグイン宣言を使用してインラインでコンパイラ設定を指定することもできます。

```
<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 を設定したら、プロジェクトで使用する 1 つ以上の AWS SDK for Java モジュールの依存関係を追加できます。

各コンポーネントのバージョン番号を指定できますが、部品表アーティファクトを使用する `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 Code Examples Repository](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2)」にある「[This example](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` ディレクトリに 1 つの `.jar` ファイル (JAR) が作成されます (例: `myapp/target`)。この JAR には、`pom.xml` ファイルの依存関係として指定したすべての SDK モジュールが含まれています。