

本文属于机器翻译版本。若本译文内容与英语原文存在差异，则一律以英文原文为准。

# 设置一个 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>

要将适用于 Java 的 SDK 2.x 与 Maven 结合使用，您需要以下各项：
+ Java *8.0 或更高版本*。你可以从 [http://www.oracle 下载最新的 Java SE 开发套件软件。 com/technetwork/java/javase/downloads](https://www.oracle.com/java/technologies/downloads/)/。适用于 Java 的 SDK 2.x 也可以与 Open [JDK](https://openjdk.org/) Amazon Corretto以及开放 Java 开发套件 (OpenJDK) 的发行版配合使用。从中下载最新的 OpenJDK 版本。[https://openjdk.java.net/install/index.html](https://openjdk.org/install/index.html)从[Corretto 页面](https://aws.amazon.com/corretto/)下载最新的 Amazon Corretto 8 或 Amazon Corretto 11 版本。
+  *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* 替换为您的项目名称。这将成为项目的目录的名称。  
要使用最新版本的原型，请替换为 [Maven cen *2.X.X* tral 中的最新](https://central.sonatype.com/artifact/software.amazon.awssdk/archetype-lambda)版本。

此命令使用原型模板工具包创建 Maven 项目。原型为函数处理程序项目生成脚手架。 AWS Lambda 此项目原型预配置为使用 Java SE 8 进行编译，并包括适用于 Java 的 SDK 2.x 版本的依赖项（用 `-DarchetypeVersion` 指定）。

有关创建和配置 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**。

有关一种配置这些必需设置的方法，请参阅上一个代码段。

或者，您可以使用插件声明内联配置编译器配置，如下所示。

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

## 将开发工具包声明为依赖项
<a name="sdk-as-dependency"></a>

要在项目 适用于 Java 的 AWS SDK 中使用，你需要在项目`pom.xml`文件中将其声明为依赖项。

如果您使用前面所述的项目原型创建了项目，则已将 SDK 的最新版本配置为项目中的依赖项。

原型为 `software.amazon.awssdk` 组 ID 生成一个 BOM（材料清单）构件依赖项。使用 BOM 时，您不必为共享相同组 ID 的各个构件依赖项指定 maven 版本。

如果您以不同的方式创建了 Maven 项目，请通过确保 `pom.xml` 文件包含以下内容来为项目配置最新版本的开发工具包。

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

## 设置开发工具包模块的依赖项
<a name="modules-dependencies"></a>

现在，您已经配置了 SDK，可以为项目中使用的一个或多个 适用于 Java 的 AWS SDK 模块添加依赖项。

尽管您可以为每个组件指定版本号，但无需这样做，因为您已使用材料清单构件在 `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 的 SDK 2.x 开发的 *Lambda 函数处理程序*，正确的依赖项是 `aws-lambda-java-core`。但是，如果您的应用程序需要使用诸如 `listFunctions`、`deleteFunction`、`invokeFunction` 和 `createFunction` 之类的操作来管理 Lambda 资源，则您的应用程序需要以下依赖项。  

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

**注意**  
`s3` 依赖项与 `netty-nio-client` 和 `apache-client` 传递依赖项相斥。原型中包含了 `url-connection-client` 依赖项来代替这两个 HTTP 客户端，这有助于[减少 AWS Lambda 函数的启动延迟](lambda-optimize-starttime.md#lambda-quick-url)。

将项目所需的模块 AWS 服务 和功能添加到您的项目中。由 适用于 Java 的 AWS SDK BOM 管理的模块（依赖项）列在 [Maven Central 存储库](https://central.sonatype.com/artifact/software.amazon.awssdk/bom)中。

**注意**  
您可以从代码示例中查看 `pom.xml` 文件，以确定您的项目需要哪些依赖项。例如，如果您对 DynamoDB 服务的依赖关系感兴趣，[请查看[代码](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)示例。AWS GitHub（在 [/javav2/example\$1code/dynamodb](https://github.com/awsdocs/aws-doc-sdk-examples/tree/main/javav2/example_code/dynamodb) 下查找 `pom.xml` 文件。）

### 将整个开发工具包构建到您的项目中
<a name="build-the-entire-sdk-into-your-project"></a>

为了优化您的应用程序，强烈建议您仅拉入所需的组件而不是整个开发工具包。但是，要 适用于 Java 的 AWS SDK 将整个内容构建到您的项目中，请在`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` 文件中指定为依赖项的所有开发工具包模块。