

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

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

Anda menggunakan perintah `mvn` untuk mengeksekusi build Maven. Bagian ini menunjukkan cara mengkonfigurasi `mvn` untuk menggunakan CodeArtifact repositori.

**Topics**
+ [Mengambil dependensi](#fetching-dependencies)
+ [Memublikasikan artefak](#publishing-artifacts)
+ [Memublikasikan artefak pihak ketiga](#publishing-third-party-artifacts)
+ [Batasi unduhan ketergantungan Maven ke repositori CodeArtifact](#restrict-maven-downloads)
+ [Informasi Proyek Apache Maven](#apache-maven-project-info)

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

Untuk mengonfigurasi `mvn` untuk mengambil dependensi dari CodeArtifact repositori, Anda harus mengedit file konfigurasi Maven, dan secara opsional`settings.xml`, POM proyek Anda.

1. Jika belum, buat dan simpan token CodeArtifact autentikasi dalam variabel lingkungan seperti yang dijelaskan [Teruskan token auth menggunakan variabel lingkungan](tokens-authentication.md#env-var) untuk menyiapkan otentikasi ke repositori Anda CodeArtifact .

1. Dalam `settings.xml` (biasanya ditemukan di `~/.m2/settings.xml`), tambahkan bagian `<servers>` dengan referensi ke variabel lingkungan `CODEARTIFACT_AUTH_TOKEN` sehingga Maven meneruskan token dalam permintaan HTTP.

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. Tambahkan titik akhir URL untuk CodeArtifact repositori Anda dalam sebuah elemen. `<repository>` Anda dapat melakukan hal ini di `settings.xml` atau file POM proyek Anda.

   Anda dapat mengambil endpoint repositori Anda 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 --repository my_repo --format maven
   ```

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

   ```
   url 'https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/'
   ```
**catatan**  
Untuk menggunakan endpoint dualstack, gunakan endpoint. `codeartifact.region.on.aws`

   Tambahkan titik akhir repositori ke `settings.xml` sebagai berikut.

   ```
   <settings>
   ...
       <profiles>
           <profile>
               <id>default</id>
               <repositories>
                   <repository>
                       <id>codeartifact</id>
                       <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
                   </repository>
               </repositories>
           </profile>
       </profiles>
       <activeProfiles>
           <activeProfile>default</activeProfile>
       </activeProfiles>
       ...
   </settings>
   ```

   Atau, Anda dapat menambahkan `<repositories>` bagian ke file POM proyek untuk digunakan hanya CodeArtifact untuk proyek itu.

   ```
   <project>
   ...
       <repositories>
           <repository>
               <id>codeartifact</id>
               <name>codeartifact</name>
               <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
           </repository>
       </repositories>
   ...
   </project>
   ```

**penting**  
Anda dapat menggunakan nilai apa pun dalam elemen `<id>`, tetapi harus sama di elemen `<server>` dan `<repository>`. Hal ini memungkinkan kredensi yang ditentukan untuk dimasukkan dalam permintaan untuk. CodeArtifact

Setelah membuat perubahan konfigurasi ini, Anda dapat membangun proyek.

```
mvn compile
```

Maven mencatat URL lengkap dari semua dependensi yang diunduhnya ke konsol.

```
[INFO] ------------------< com.example.example:myapp >-------------------
[INFO] Building myapp 1.0
[INFO] --------------------------------[ jar ]---------------------------------
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom
Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.pom (11 kB at 3.9 kB/s)
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom
Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/org/apache/commons/commons-parent/42/commons-parent-42.pom (68 kB at 123 kB/s)
Downloading from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar
Downloaded from codeartifact: https://<domain>.d.codeartifact.us-west-2.amazonaws.com/maven/myrepo/commons-cli/commons-cli/1.4/commons-cli-1.4.jar (54 kB at 134 kB/s)
```

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

Untuk mempublikasikan artefak Maven dengan `mvn` ke CodeArtifact repositori, Anda juga harus mengedit `~/.m2/settings.xml` dan proyek POM.

1. Jika belum, buat dan simpan token CodeArtifact autentikasi dalam variabel lingkungan seperti yang dijelaskan [Teruskan token auth menggunakan variabel lingkungan](tokens-authentication.md#env-var) untuk menyiapkan otentikasi ke repositori Anda CodeArtifact .

1. Tambahkan bagian `<servers>` ke `settings.xml`dengan referensi ke variabel lingkungan `CODEARTIFACT_AUTH_TOKEN` sehingga Maven meneruskan token dalam permintaan HTTP.

   ```
   <settings>
   ...
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   ...
   </settings>
   ```

1. Tambahkan bagian `<distributionManagement>` ke `pom.xml`.

   ```
   <project>
   ...
        <distributionManagement>
            <repository>
                <id>codeartifact</id>
                <name>codeartifact</name>
                <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
            </repository>
        </distributionManagement>
   ...
   </project>
   ```

Setelah membuat perubahan konfigurasi ini, Anda dapat membangun proyek dan memublikasikannya ke repositori yang ditentukan.

```
mvn deploy
```

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:

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

## Memublikasikan artefak pihak ketiga
<a name="publishing-third-party-artifacts"></a>

Anda dapat mempublikasikan artefak Maven pihak ketiga ke repositori dengan CodeArtifact . `mvn deploy:deploy-file` Hal ini dapat membantu pengguna yang ingin memublikasikan artefak dan hanya memiliki file JAR dan tidak memiliki akses ke kode sumber paket atau file POM.

Perintah `mvn deploy:deploy-file` akan menghasilkan file POM berdasarkan informasi yang dikirimkan pada baris perintah.

**Memublikasikan artefak Maven pihak ketiga**

1. Jika belum, buat dan simpan token CodeArtifact autentikasi dalam variabel lingkungan seperti yang dijelaskan [Teruskan token auth menggunakan variabel lingkungan](tokens-authentication.md#env-var) untuk menyiapkan otentikasi ke repositori Anda CodeArtifact .

1. Buat file `~/.m2/settings.xml` dengan konten berikut ini:

   ```
   <settings>
       <servers>
           <server>
               <id>codeartifact</id>
               <username>aws</username>
               <password>${env.CODEARTIFACT_AUTH_TOKEN}</password>
           </server>
       </servers>
   </settings>
   ```

1. Jalankan perintah `mvn deploy:deploy-file`:

   ```
   mvn deploy:deploy-file -DgroupId=commons-cli          \
   -DartifactId=commons-cli       \
   -Dversion=1.4                  \
   -Dfile=./commons-cli-1.4.jar   \
   -Dpackaging=jar                \
   -DrepositoryId=codeartifact    \
   -Durl=https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/repo-name/
   ```
**catatan**  
Contoh di atas memublikasikan `commons-cli 1.4`. Ubah groupId, artifactID, versi, dan file argumen untuk memublikasikan JAR yang berbeda.

Instruksi ini didasarkan pada contoh dalam [Panduan untuk menyebarkan pihak JARs ke-3 ke repositori jarak jauh](https://maven.apache.org/guides/mini/guide-3rd-party-jars-remote.html) dari dokumentasi *Apache* Maven. 

## Batasi unduhan ketergantungan Maven ke repositori CodeArtifact
<a name="restrict-maven-downloads"></a>

 Jika paket tidak dapat diambil dari repositori yang dikonfigurasi, secara default, perintah `mvn` mengambilnya dari Maven Central. Tambahkan `mirrors` elemen `settings.xml` untuk membuat `mvn` selalu menggunakan CodeArtifact repositori Anda.

```
<settings>
  ...
    <mirrors>
      <mirror>
        <id>central-mirror</id>
        <name>CodeArtifact Maven Central mirror</name>
        <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
        <mirrorOf>central</mirrorOf>
      </mirror>
    </mirrors>
  ...
</settings>
```

Jika Anda menambahkan elemen `mirrors`, Anda juga harus memiliki elemen `pluginRepository` di `settings.xml` atau `pom.xml`. Contoh berikut mengambil dependensi aplikasi dan plugin Maven dari repositori. CodeArtifact 

```
<settings>
...
  <profiles>
    <profile>
      <pluginRepositories>
        <pluginRepository>
          <id>codeartifact</id>
          <name>CodeArtifact Plugins</name>
          <url>https://my_domain-111122223333.d.codeartifact.us-west-2.amazonaws.com/maven/my_repo/</url>
          <releases>
            <enabled>true</enabled>
          </releases>
          <snapshots>
            <enabled>true</enabled>
          </snapshots>
        </pluginRepository>
      </pluginRepositories>
    </profile>
  </profiles>
...
</settings>
```

Contoh berikut mengambil dependensi aplikasi dari CodeArtifact repositori dan mengambil plugin Maven dari Maven Central.

```
<profiles>
   <profile>
     <id>default</id>
     ...
     <pluginRepositories>
       <pluginRepository>
         <id>central-plugins</id>
         <name>Central Plugins</name>
         <url>https://repo.maven.apache.org/maven2/</url>
         <releases>
             <enabled>true</enabled>
         </releases>
         <snapshots>
             <enabled>true</enabled>
         </snapshots>
       </pluginRepository>
     </pluginRepositories>
   ....
   </profile>
 </profiles>
```

## Informasi Proyek Apache Maven
<a name="apache-maven-project-info"></a>

Untuk informasi lebih lanjut tentang Maven, lihat topik ini di situs web Apache Maven Project:
+  [Menyiapkan Beberapa Repositori](https://maven.apache.org/guides/mini/guide-multiple-repositories.html) 
+  [Pengaturan Referensi](https://maven.apache.org/settings.html) 
+  [Manajemen Distribusi](https://maven.apache.org/pom.html#Distribution_Management) 
+  [Profil](https://maven.apache.org/pom.html#Profiles) 