

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

# Gunakan CodeArtifact dengan Gradle
<a name="maven-gradle"></a>

Setelah Anda memiliki token CodeArtifact autentikasi dalam variabel lingkungan seperti yang dijelaskan dalam [Lulus token autentikasi menggunakan variabel lingkungan](tokens-authentication.md#env-var), ikuti petunjuk ini untuk menggunakan paket Maven dari, dan menerbitkan paket baru ke, repositori. CodeArtifact

**Topics**
+ [Mengambil dependensi](#fetching-dependencies)
+ [Mengambil plugin](#fetching-plugins)
+ [Memublikasikan artefak](#publishing-artifacts)
+ [Menjalankan build Gradle di IntelliJ IDEA](#gradle-intellij)

## Mengambil dependensi
<a name="fetching-dependencies"></a>

Untuk mengambil dependensi dari CodeArtifact build Gradle, gunakan prosedur berikut.

**Untuk mengambil dependensi dari CodeArtifact dalam build Gradle**

1. Jika belum, buat dan simpan token CodeArtifact autentikasi dalam variabel lingkungan dengan mengikuti prosedur di[Teruskan token auth menggunakan variabel lingkungan](tokens-authentication.md#env-var).

1. Tambahkan `maven` bagian ke `repositories` bagian dalam `build.gradle` file proyek.

   ```
   maven {
            url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
            credentials {
                username "aws"
                password System.env.CODEARTIFACT_AUTH_TOKEN
            }
   }
   ```

   Contoh `url` sebelumnya adalah titik akhir CodeArtifact repositori Anda. Gradle menggunakan titik akhir untuk terhubung ke repositori Anda. Dalam sampel, `my_domain` adalah nama domain Anda, `111122223333` adalah ID pemilik domain, dan `my_repo` adalah nama repositori Anda. Anda dapat mengambil titik akhir repositori dengan menggunakan perintah. `get-repository-endpoint` AWS CLI 

   Misalnya, dengan repositori bernama *my\$1repo* di dalam domain bernama*my\$1domain*, perintahnya adalah sebagai berikut:

   ```
   aws codeartifact get-repository-endpoint --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven
   ```

   Parameter perintah `get-repository-endpoint` akan mengembalikan titik akhir repositori:

   ```
   url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
   ```

   `credentials`Objek dalam contoh sebelumnya menyertakan token CodeArtifact autentikasi yang Anda buat di Langkah 1 yang digunakan Gradle untuk mengautentikasi. CodeArtifact
**catatan**  
Untuk menggunakan endpoint dualstack, gunakan endpoint. `codeartifact.region.on.aws`

1. (Opsional) - Untuk menggunakan CodeArtifact repositori sebagai satu-satunya sumber untuk dependensi proyek Anda, hapus bagian lain dari. `repositories` `build.gradle` Jika Anda memiliki lebih dari satu repositori, Gradle menelusuri setiap repositori untuk dependensi sesuai urutan pencantumannya.

1. Setelah mengonfigurasi repositori, Anda dapat menambahkan dependensi proyek ke bagian `dependencies` dengan sintaks Gradle standar.

   ```
   dependencies {
       implementation 'com.google.guava:guava:27.1-jre'
       implementation 'commons-cli:commons-cli:1.4'
       testImplementation 'org.testng:testng:6.14.3'
   }
   ```

## Mengambil plugin
<a name="fetching-plugins"></a>

Secara default Gradle akan menyelesaikan plugin dari [Portal Plugin Gradle](https://plugins.gradle.org/) publik. Untuk menarik plugin dari CodeArtifact repositori, gunakan prosedur berikut.

**Untuk menarik plugin dari repositori CodeArtifact**

1. Jika belum, buat dan simpan token CodeArtifact autentikasi dalam variabel lingkungan dengan mengikuti prosedur di[Teruskan token auth menggunakan variabel lingkungan](tokens-authentication.md#env-var).

1. Tambahkan `pluginManagement` blok ke `settings.gradle` file Anda. `pluginManagement`Blok harus muncul sebelum pernyataan lain di`settings.gradle`, lihat cuplikan berikut:

   ```
   pluginManagement {
       repositories {
           maven {
               name 'my_repo'
               url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
               credentials {
                   username 'aws'
                   password System.env.CODEARTIFACT_AUTH_TOKEN
               }
           }
       }
   }
   ```

Hal ini akan memastikan bahwa Gradle menyelesaikan plugin dari repositori yang ditentukan. Repositori harus memiliki repositori hulu dengan koneksi eksternal ke Portal Plugin Gradle (mis. `gradle-plugins-store`) sehingga plugin Gradle yang umum diperlukan tersedia untuk build. Untuk informasi selengkapnya, lihat [Dokumentasi Gradle](https://docs.gradle.org/current/userguide/plugins.html#sec:custom_plugin_repositories).

## Memublikasikan artefak
<a name="publishing-artifacts"></a>

Bagian ini menjelaskan cara mempublikasikan pustaka Java yang dibangun dengan Gradle ke CodeArtifact repositori.

Pertama, tambahkan plugin `maven-publish` ke bagian `plugins` dari file `build.gradle` proyek.

```
plugins {
    id 'java-library'
    id 'maven-publish'
}
```

Selanjutnya, tambahkan bagian `publishing` ke file `build.gradle` proyek.

```
publishing {
    publications {
        mavenJava(MavenPublication) {
            groupId = 'group-id'
            artifactId = 'artifact-id'
            version = 'version'
            from components.java
        }
    }
    repositories {
        maven {
            url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
            credentials {
                username "aws"
                password System.env.CODEARTIFACT_AUTH_TOKEN
            }
        }
    }
}
```

Plugin `maven-publish` menghasilkan file POM berdasarkan `groupId`, `artifactId`, dan `version` yang ditentukan dalam bagian `publishing`.

Setelah perubahan ke `build.gradle` selesai, jalankan perintah berikut untuk membangun proyek dan mengunggah ke repositori.

```
./gradlew publish
```

Gunakan `list-package-versions` untuk memeriksa bahwa paket berhasil dipublikasikan.

```
aws codeartifact list-package-versions --domain my_domain --domain-owner 111122223333 --repository my_repo --format maven\
  --namespace com.company.framework --package my-package-name
```

Contoh output:

```
{
    "format": "maven",
    "namespace": "com.company.framework",
    "package": "example",
    "versions": [
        {
            "version": "1.0", 
            "revision": "REVISION-SAMPLE-1-C7F4S5E9B772FC",
            "status": "Published"
        }
    ]
}
```

Untuk informasi selengkapnya, lihat topik berikut di situs web Gradle:
+  [Membangun Perpustakaan Java](https://guides.gradle.org/building-java-libraries/) 
+  [Menerbitkan proyek sebagai modul](https://docs.gradle.org/current/userguide/publishing_setup.html) 

## Menjalankan build Gradle di IntelliJ IDEA
<a name="gradle-intellij"></a>

Anda dapat menjalankan build Gradle di IntelliJ IDEA yang menarik dependensi dari. CodeArtifact Untuk mengautentikasi CodeArtifact, Anda harus memberikan token CodeArtifact otorisasi kepada Gradle. Ada tiga metode untuk menyediakan token autentikasi.
+ Metode 1: Menyimpan token autentikasi di`gradle.properties`. Gunakan metode ini jika Anda dapat menimpa atau menambah isi `gradle.properties` file.
+ Metode 2: Menyimpan token autentikasi dalam file terpisah. Gunakan metode ini jika Anda tidak ingin memodifikasi file `gradle.properties`.
+ Metode 3: Menghasilkan token autentikasi baru untuk setiap proses dengan menjalankan `aws` sebagai skrip inline di. `build.gradle` Gunakan metode ini jika Anda ingin skrip Gradle mengambil token baru pada setiap proses. Token tidak akan disimpan di sistem file.

------
#### [ Token stored in gradle.properties ]

**Metode 1: Menyimpan token autentikasi di `gradle.properties`**
**catatan**  
Contoh menunjukkan file `gradle.properties` yang berada di `GRADLE_USER_HOME`.

1. Perbarui file `build.gradle` dengan cuplikan berikut:

   ```
   repositories {
       maven {
                url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
                credentials {
                    username "aws"
                    password "$codeartifactToken"
                }   
       }   
   }
   ```

1. Untuk mengambil plugin dari CodeArtifact, tambahkan `pluginManagement` blok ke file Anda`settings.gradle`. `pluginManagement`Blok harus muncul sebelum pernyataan lain di`settings.gradle`.

   ```
   pluginManagement {
       repositories {
           maven {
               name 'my_repo'
               url 'https://my_domain-111122223333.codeartifact.region.amazonaws.com/maven/my_repo/'
               credentials {
                   username 'aws'
                   password "$codeartifactToken"
               }
           }
       }
   }
   ```

1. Ambil token CodeArtifact autentikasi:

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
   ```

1. Tulis token auth ke dalam file `gradle.properties`:

   ```
   echo "codeartifactToken=$CODEARTIFACT_AUTH_TOKEN" > ~/.gradle/gradle.properties
   ```

------
#### [ Token stored in separate file ]

**Metode 2: Menyimpan token autentikasi dalam file terpisah**

1. Perbarui file `build.gradle` dengan cuplikan berikut:

   ```
   def props = new Properties()
   file("file").withInputStream { props.load(it) }
   
   repositories {
   
       maven {
                url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
                credentials {
                    username "aws"
                    password props.getProperty("codeartifactToken")
                }
       }
   }
   ```

1. Untuk mengambil plugin dari CodeArtifact, tambahkan `pluginManagement` blok ke file Anda`settings.gradle`. `pluginManagement`Blok harus muncul sebelum pernyataan lain di`settings.gradle`.

   ```
   pluginManagement {
       def props = new Properties()
       file("file").withInputStream { props.load(it) }
       repositories {
           maven {
               name 'my_repo'
               url 'https://my_domain-111122223333.codeartifact.region.amazonaws.com/maven/my_repo/'
               credentials {
                   username 'aws'
                   password props.getProperty("codeartifactToken")
               }
           }
       }
   }
   ```

1. Ambil token CodeArtifact autentikasi:

   ```
   export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
   ```

1. Tulis token auth ke dalam file yang ditentukan dalam file `build.gradle` Anda:

   ```
   echo "codeartifactToken=$CODEARTIFACT_AUTH_TOKEN" > file
   ```

------
#### [ Token generated for each run in build.gradle ]

**Metode 3: Menghasilkan token autentikasi baru untuk setiap proses dengan menjalankan `aws` sebagai skrip sebaris di `build.gradle`**

1. Perbarui file `build.gradle` dengan cuplikan berikut:

   ```
   def codeartifactToken = "aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name".execute().text
       repositories {
           maven {
               url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/'
               credentials {
                   username "aws"
                   password codeartifactToken
               }
           }
       }
   ```

1. Untuk mengambil plugin dari CodeArtifact, tambahkan `pluginManagement` blok ke file Anda`settings.gradle`. `pluginManagement`Blok harus muncul sebelum pernyataan lain di`settings.gradle`.

   ```
   pluginManagement {
       def codeartifactToken = "aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name".execute().text
       repositories {
           maven {
               name 'my_repo'
               url 'https://my_domain-111122223333.codeartifact.region.amazonaws.com/maven/my_repo/'
               credentials {
                   username 'aws'
                   password codeartifactToken
               }
           }
       }
   }
   ```

------