注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

リポジトリ間でのコード共有

このセクションでは、リポジトリ間で Java コードを共有する基本的なワークフローについて説明します。

前提条件

先に進む前に、他のリポジトリで依存する Java コード / マクロを含む別のリポジトリを作成しておくことを確認してください。このガイド全体で、共有する Java コード / マクロを含むリポジトリを 共有コードリポジトリ と呼び、共有コードリポジトリ に依存する任意のリポジトリを 依存リポジトリ と呼びます。

共有コードリポジトリ に Java コード / マクロを追加した後は、変更をコミットしてリポジトリをコンパイルしてください。

権限の設定

コードを共有するためには、依存リポジトリ共有コードリポジトリ によって生成された作成物にアクセスできるようにする必要があります。依存リポジトリ から参照できる作成物を設定するには、設定 タブの 作成物 セクションに移動します。 作成物設定についての詳細はこちら。

Gradle の設定

依存リポジトリに対して

リポジトリ間でコードを共有する際(Java コードやマクロを含む)は、依存リポジトリ の Gradle 設定が必要です。

Jemma は自動的に 共有コードリポジトリ によって生成された作成物を公開します。したがって、上記の必要な権限を設定した後、依存リポジトリ が行う必要があるのは、公開された作成物を指定することだけです。これは、依存リポジトリ の言語固有のサブプロジェクトの build.gradle ファイルの最後に以下のようなブロックを追加することを含みます:

Copied!
1 2 3 4 dependencies { // 依存関係を設定します。共有コードリポジトリのID、サブプロジェクト、バージョンを指定します。 compile '<SHARED_CODE_REPO_RID>:<SHARED_CODE_REPO_GRADLE_SUBPROJECT>:<SHARED_CODE_REPO_VERSION>' }

build.gradle ファイルに必要な情報を追加するプロセスを説明しましょう。

  1. 最初に、SHARED_CODE_REPO_RID、つまり 共有コードリポジトリ の RID が必要です。これはリポジトリの URL から取得できます。または、Artifacts Settings タブのリポジトリエントリをクリックして、共有リポジトリ RID が入力された上記の compile 行(compile 'ri.stemma.repository.some-random-rid:<SHARED_CODE_REPO_GRADLE_SUBPROJECT>:<SHARED_CODE_REPO_VERSION>' のような)をクリップボードにコピーできます。

    Artifacts settings tab

  2. 次に、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 座標を構築できます。提供する <SHARED_CODE_REPO_RID> は、ri.stemma.main.repository.{RID_VALUE} の形式である必要があります。

  3. Maven 座標を取得したら、build.gradle ファイルを更新できます。リポジトリのルートではなく、言語固有のサブプロジェクトフォルダー(transforms-java/build.gradle など)内の build.gradle ファイルを編集してください。更新された build.gradle は次のようになります(dependencies ブロックが 2 つあることに注意)。

    Copied!
    1 2 3 4 5 6 7 8 9 10 11 12 13 buildscript { // ... 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 ではサポートされていないことを意味します。