Gradle で CodeArtifact を使用する - CodeArtifact

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

Gradle で CodeArtifact を使用する

環境変数に CodeArtifact 認証トークンを取得した後、環境変数を使用して認証トークンを渡す の指示に従って、CodeArtifact リポジトリから Maven パッケージを使用し、新しいパッケージを CodeArtifact リポジトリに公開します。

依存関係の取得

Gradle ビルドの CodeArtifact から依存関係を取得するには、次の手順に従います。

Gradle ビルドの CodeArtifact から依存関係を取得するには
  1. まだ実行していない場合は、「環境変数を使用して認証トークンを渡す」の手順に従って CodeArtifact 認証トークンを作成して環境変数に保存します。

  2. プロジェクトファイル build.gradlerepositories セクションに maven セクションを追加します。

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

    上記の例の url は、CodeArtifact リポジトリのエンドポイントです。Gradle は、エンドポイントを使用してリポジトリに接続します。サンプルでは、my_domain はドメインの名前、111122223333 はドメインの所有者の ID 、そして my_repo はリポジトリの名前です。get-repository-endpoint AWS CLI コマンドを使用して、リポジトリのエンドポイントを取得できます。

    例えば、my_domain という名前の ドメイン内のrepo という名前のリポジトリでは、コマンドは次のとおりです。

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

    get-repository-endpoint コマンドはリポジトリエンドポイントを返します。

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

    上記の例の credentials オブジェクトには、手順 1 で作成した CodeArtifact 認証トークンが含まれています。Gradle は このトークンを CodeArtifact の認証に使用します。

  3. (オプション) CodeArtifact リポジトリをプロジェクトの依存関係の唯一のソースとして使用するには、build.gradle から repositories 内の他のセクションを削除します。複数のリポジトリがある場合、Gradle はリストされている順序で各リポジトリの依存関係を検索します。

  4. リポジトリを構成したら、プロジェクトの依存関係を標準の Gradle 構文で dependencies セクションに追加できます。

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

プラグインの取得

デフォルトでは、Gradle はパブリック Gradle Plugin Portal からプラグインを解決します。CodeArtifact リポジトリからプラグインをプルするには、次の手順に従います。

CodeArtifact リポジトリからプラグインをプルするには
  1. まだ実行していない場合は、「環境変数を使用して認証トークンを渡す」の手順に従って CodeArtifact 認証トークンを作成して環境変数に保存します。

  2. pluginManagement ブロックを settings.gradle ファイルに追加します。pluginManagement ブロックは、settings.gradle の他のステートメントの前に置く必要があります。次のスニペットを参照してください。

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

これにより、Gradle は指定したリポジトリからプラグインを解決します。一般的に必要な Gradle プラグインをビルドで使用できるように、リポジトリには Gradle Plugin Portal への外部接続を持つ上流リポジトリが必要です (例: gradle-plugins-store) 。詳細については、Gradle ドキュメント を参照してください。

アーティファクトの公開

このセクションでは、Gradle でビルドされた Java ライブラリを CodeArtifact リポジトリに公開する方法について説明します。

まず、maven-publish プラグインをプロジェクトの build.gradle ファイルの plugins セクションに追加します。

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

次に、publishing セクションをプロジェクト build.gradle ファイルに追加します。

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

maven-publish プラグインは、publishing セクションで指定された groupIdartifactId および version に基づいて POM ファイルを生成します。

これらの build.gradle への変更が完了したら、次のコマンドを実行してプロジェクトをビルドし、それをリポジトリにアップロードします。

./gradlew publish

list-package-versionsを使用して、パッケージが正常に発行されたことを確認します。

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

サンプル出力:

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

詳細については、Gradle ウェブサイトで以下のトピックを参照してください。

IntelliJ IDEAで Gradle ビルドを実行する

IntelliJ IDEAで、CodeArtifact から依存関係をプルする Gradle ビルドを実行できます。CodeArtifact で認証するには、CodeArtifact 認証トークンを Gradle に提供する必要があります。認証トークンを提供する方法は 3 つあります。

  • 方法 1: gradle.properties に認証トークンを保存する。この方法は、gradle.properties ファイルのコンテンツに上書きまたは追加できる場合に使用します。

  • 方法 2: 認証トークンを別のファイルに保存する。この方法は、gradle.properties ファイルを修正したくない場合に使用します。

  • 方法 3: awsbuild.gradle のインラインスクリプトとして実行して、実行ごとに新しい認証トークンを生成する。この方法は、実行ごとに Gradle スクリプトが新しいトークンを取得するようにしたい場合に使用します。トークンはファイルシステムに保存されません。

Token stored in gradle.properties
方法 1: gradle.properties に認証トークンを保存する。
注記

この例は GRADLE_USER_HOME にある gradle.properties ファイルを示します。

  1. 次のスニペットを使用して build.gradle ファイルを更新する:

    repositories { maven { url 'https://my_domain-111122223333.d.codeartifact.region.amazonaws.com/maven/my_repo/' credentials { username "aws" password "$codeartifactToken" } } }
  2. CodeArtifact からプラグインをフェッチするには、settings.gradle ファイル に pluginManagement ブロックを追加します。pluginManagement ブロックは、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" } } } }
  3. CodeArtifact 認証トークンを取得します。

    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
  4. gradle.properties ファイルに認証トークンを書き込む:

    echo "codeartifactToken=$CODEARTIFACT_AUTH_TOKEN" > ~/.gradle/gradle.properties
Token stored in separate file
方法 2: 認証トークンを別のファイルに保存する
  1. 次のスニペットを使用して build.gradle ファイルを更新する:

    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") } } }
  2. CodeArtifact からプラグインをフェッチするには、settings.gradle ファイル に pluginManagement ブロックを追加します。pluginManagement ブロックは、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") } } } }
  3. CodeArtifact 認証トークンを取得します。

    export CODEARTIFACT_AUTH_TOKEN=`aws codeartifact get-authorization-token --domain my_domain --domain-owner 111122223333 --query authorizationToken --output text --profile profile-name`
  4. build.gradle ファイルで指定したファイルに認証トークンを書き込みます。

    echo "codeartifactToken=$CODEARTIFACT_AUTH_TOKEN" > file
Token generated for each run in build.gradle
方法 3: awsbuild.gradle のインラインスクリプトとして実行して、実行ごとに新しい認証トークンを生成する。
  1. 次のスニペットを使用して build.gradle ファイルを更新する:

    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 } } }
  2. CodeArtifact からプラグインをフェッチするには、settings.gradle ファイル に pluginManagement ブロックを追加します。pluginManagement ブロックは、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 } } } }