

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 設定使用 的 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 使用適用於 Java 的 SDK 2.x，您需要下列項目：
+ Java *8.0 或更新版本*。您可以從 [http://www.oracle.com/technetwork/java/javase/downloads/](https://www.oracle.com/java/technologies/downloads/) 下載最新的 Java SE 開發套件軟體。適用於 Java 的 SDK 2.x 也適用於 [OpenJDK](https://openjdk.org/) Amazon Corretto和 Open Java 開發套件 (OpenJDK) 的發行版本。從 [https://openjdk.java.net/install/index.html](https://openjdk.org/install/index.html) 下載最新版本的 OpenJDK。從 [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* 更換為您的專案名稱。這會成為您專案的目錄名稱。  
若要使用最新版本的原型，請將 *2.X.X 取代*為 [Maven 中央的最新版本](https://central.sonatype.com/artifact/software.amazon.awssdk/archetype-lambda)。

此命令會使用原型範本化工具組建立 Maven 專案。原型會為 AWS Lambda 函數處理常式專案 產生 scaffolding。此專案原型已預先設定為使用 Java SE 8 編譯，並包含對使用 指定之適用於 Java 2.x 的 SDK 版本的相依性。 `-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`和 等操作來管理 Lambda 資源`createFunction`，您的應用程式需要下列相依性。  

```
<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 服務 和 功能。由 BOM 管理的 適用於 Java 的 AWS SDK 模組 （相依性） 會列在 [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` 檔案。)

### 在專案中建立整個開發套件
<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` 目錄中建立單一 `.jar` 檔案 (JAR) (例如 `myapp/target`)。此 JAR 包含您在 `pom.xml` 檔案中指定為相依性的所有開發套件模組。