注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。
このセクションでは、リポジトリ間で Java コードを共有するための基本的なワークフローについて説明します。
読み進める前に、ほかのリポジトリで依存先として使用する Java コード/マクロを含む別のリポジトリを作成しておいてください。このガイドでは、共有する Java コード/マクロを含むリポジトリを 共有コードリポジトリ、共有コードリポジトリ に依存するリポジトリを 依存リポジトリ と呼びます。
共有コードリポジトリ に Java コード/マクロを追加したら、変更をコミットしてリポジトリをコンパイルしてください。
コードを共有するには、依存リポジトリ が 共有コードリポジトリ によって生成されたアーティファクトにアクセスできるようにする必要があります。依存リポジトリ から参照できるアーティファクトを設定するには、設定 タブの アーティファクト セクションに移動します。アーティファクト設定について詳しくはこちら。
Java コードとマクロのいずれを共有する場合も、リポジトリ間でコードを共有する際には、依存リポジトリ の Gradle 設定が必要です。
Jemma は、共有コードリポジトリ によって生成されたアーティファクトを自動的に公開します。そのため、上記の必要な権限を設定した後は、依存リポジトリ で公開済みアーティファクトを参照するだけで済みます。これには、依存リポジトリ の言語別サブプロジェクトにある build.gradle ファイルの末尾に、次のようなブロックを追加します。
Copied!1 2 3dependencies { compile '<SHARED_CODE_REPO_RID>:<SHARED_CODE_REPO_GRADLE_SUBPROJECT>:<SHARED_CODE_REPO_VERSION>' }
必要な情報を取得して build.gradle ファイルに追加する手順を順に説明します。
まず、共有コードリポジトリ の RID である SHARED_CODE_REPO_RID が必要です。これはリポジトリの URL から取得できます。または、アーティファクト設定タブでリポジトリのエントリをクリックすると、共有リポジトリの RID が入力された上記の compile 行(compile 'ri.stemma.repository.some-random-rid:<SHARED_CODE_REPO_GRADLE_SUBPROJECT>:<SHARED_CODE_REPO_VERSION>' など)をクリップボードにコピーできます。
次に、SHARED_CODE_REPO_GRADLE_SUBPROJECT と SHARED_CODE_REPO_VERSION の値を取得する必要があります。これらを取得するには、共有コードリポジトリ の ci.yml ファイルを変更し、最後の行(./gradlew で始まる行)に --info を追加します。たとえば、次のように変更します。
./gradlew --no-daemon --build-cache --stacktrace patch publish
変更後:
./gradlew --no-daemon --build-cache --stacktrace patch publish --info
次に、共有コードリポジトリ の最新の Jemma ジョブの CI 出力を参照します。CI 出力で、次のいずれかの形式に一致する行を探します。
Upload https://<MAVEN_REPO_URL>/maven-repository-proxy/authz/user-code/<SHARED_CODE_REPO_RID>/<SHARED_CODE_REPO_GRADLE_SUBPROJECT>/<SHARED_CODE_REPO_VERSION>/<SHARED_CODE_REPO_GRADLE_SUBPROJECT>-<SHARED_CODE_REPO_VERSION>.jar
または
Uploading: ri/stemma/main/repository/<SHARED_CODE_REPO_UUID>/<SHARED_CODE_REPO_GRADLE_SUBPROJECT>/<SHARED_CODE_REPO_VERSION>/<SHARED_CODE_REPO_GRADLE_SUBPROJECT>-<SHARED_CODE_REPO_VERSION>.jar to repository remote at https://<ARTIFACTS_URL>/artifacts/api/legacy/mrp/authz/user-code/
または
Uploading: ri/stemma/main/repository/<SHARED_CODE_REPO_UUID>/<SHARED_CODE_REPO_GRADLE_SUBPROJECT>/<SHARED_CODE_REPO_VERSION>/<SHARED_CODE_REPO_GRADLE_SUBPROJECT>-<SHARED_CODE_REPO_VERSION>.jar to repository remote at https://<ARTIFACTS_URL>/artifacts/api/repositories/<SHARED_CODE_REPO_UUID>/contents/release/maven/
CI 出力の情報を使用して、共有コードリポジトリ によって生成されたアーティファクトを参照する Maven 座標を組み立てることができます。Maven 座標に指定する <SHARED_CODE_REPO_RID> は、ri.stemma.main.repository.{RID_VALUE} の形式である必要があります。
Maven 座標を取得できたので、build.gradle ファイルを更新できます。リポジトリのルートにあるファイルではなく、言語別サブプロジェクトのフォルダーにある build.gradle ファイル(例:transforms-java/build.gradle)を編集してください。更新後の build.gradle は、次のようになります(2つの dependencies ブロックに注目してください)。
Copied!1 2 3 4 5 6 7 8 9 10 11 12 13buildscript { // ... dependencies { classpath "com.palantir.transforms.java:lang-java-gradle-plugin:${transformsJavaVersion}" } } apply plugin: 'com.palantir.transforms.lang.java' apply plugin: 'com.palantir.transforms.lang.java-defaults' dependencies { compile '<SHARED_CODE_REPO_RID>:<SHARED_CODE_REPO_GRADLE_SUBPROJECT>:<SHARED_CODE_REPO_VERSION>' }
これで、依存コードリポジトリ から 共有コードリポジトリ のコードにアクセスできるはずです。
共有コードリポジトリ のコードを更新する際は、依存リポジトリ が共有コードの最新バージョンを使用するように、Maven 座標の <SHARED_CODE_REPO_VERSION> を更新する必要があります。共有コードリポジトリ をコンパイルするたびに、CI 出力を確認し、参照すべき更新後のバージョン番号を特定してください。
これで、リポジトリ間でコードを共有する準備ができました。共有コードリポジトリ のコードを参照する必要がある 依存リポジトリ では、必ず上記の手順を実行し、適切な権限と依存関係を設定してください。
Python とは異なり、Code Repositories は Java ライブラリの作成に対応しておらず、Java リポジトリの共有のみが可能です。そのため、タグ付けなどの機能も Java では利用できません。