

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

# 使用 curl 發佈
<a name="maven-curl"></a>

本節說明如何使用 HTTP `curl` 用戶端將 Maven 成品發佈至 CodeArtifact 儲存庫。如果您沒有或想要在環境中安裝 Maven 用戶端，使用 發佈成品`curl`會很有用。

**使用 發佈 Maven 成品 `curl`**

1. 遵循中的步驟擷取 CodeArtifact 授權字符，[使用 環境變數傳遞身分驗證字符](tokens-authentication.md#env-var)並返回這些步驟。

1. 使用下列`curl`命令將 JAR 發佈至 CodeArtifact 儲存庫：

   在此程序中的每個`curl`命令中，取代下列預留位置：
   + 將 {{my\_domain}} 取代為您的 CodeArtifact 網域名稱。
   + 以 CodeArtifact 網域擁有者的 ID 取代 {{111122223333}}。
   + 將 {{us-west-2}} 取代為您 CodeArtifact 網域所在的區域。
   + 將 {{my\_repo}} 取代為您的 CodeArtifact 儲存庫名稱。

   ```
   curl --request PUT https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{us-west-2}}.amazonaws.com/maven/{{my_repo}}/{{com/mycompany/app/my-app/1.0/my-app-1.0.jar}} \
        --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \
        --data-binary @{{my-app-1.0.jar}}
   ```
**重要**  
您必須在 `--data-binary` 參數的值前面加上 `@` 字元。將值放入引號時，`@`必須包含在引號內。

1. 使用下列`curl`命令將 POM 發佈至 CodeArtifact 儲存庫：

   ```
   curl --request PUT https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{us-west-2}}.amazonaws.com/maven/{{my_repo}}/{{com/mycompany/app/my-app/1.0/my-app-1.0.pom}} \
        --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \
        --data-binary @{{my-app-1.0.pom}}
   ```

1. 此時，Maven 成品將位於您的 CodeArtifact 儲存庫中，狀態為 `Unfinished`。若要能夠使用套件，它必須處於 `Published` 狀態。您可以透過將`maven-metadata.xml`檔案`Unfinished``Published`上傳至您的套件，或呼叫 [UpdatePackageVersionsStatus API](https://docs.aws.amazon.com/codeartifact/latest/APIReference/API_UpdatePackageVersionsStatus.html) 來變更狀態，將套件從 移至 。

   1.  選項 1：使用下列`curl`命令將`maven-metadata.xml`檔案新增至您的套件：

      ```
      curl --request PUT https://{{my_domain}}-{{111122223333}}.d.codeartifact.{{region}}.amazonaws.com/maven/{{my_repo}}/{{com/mycompany/app/my-app/maven-metadata.xml}} \
           --user "aws:$CODEARTIFACT_AUTH_TOKEN" --header "Content-Type: application/octet-stream" \
           --data-binary @{{maven-metadata.xml}}
      ```

      以下是`maven-metadata.xml`檔案內容的範例：

      ```
      <metadata modelVersion="1.1.0">
          <groupId>com.mycompany.app</groupId>
          <artifactId>my-app</artifactId>
          <versioning>
              <latest>1.0</latest>
              <release>1.0</release>
              <versions>
                  <version>1.0</version>
              </versions>
              <lastUpdated>20200731090423</lastUpdated>
          </versioning>
      </metadata>
      ```

   1.  選項 2：`Published`使用 `UpdatePackageVersionsStatus` API 將套件狀態更新為 。

      ```
      aws codeartifact update-package-versions-status \
          --domain {{my_domain}} \
          --domain-owner {{111122223333}} \
          --repository {{my_repo}} \
          --format maven \
          --namespace {{com.mycompany.app}} \
          --package {{my-app}} \
          --versions {{1.0}} \
          --target-status Published
      ```

如果您只有成品的 JAR 檔案，則可以使用 將消耗性套件版本發佈至 CodeArtifact 儲存庫`mvn`。如果您無法存取成品的原始碼或 POM，這很有用。如需詳細資訊，請參閱 [發佈第三方成品](maven-mvn.md#publishing-third-party-artifacts)。