アーティファクトを Maven Central に公開する
リモートリポジトリ機能を使用すると、Maven アーティファクトを Space Packages リポジトリから Maven セントラル(英語)に公開できます。
アーティファクトを Maven Central に公開するには
次のガイドに従って、Space Packages リポジトリへのアーティファクトの公開を構成します。
OSSRH リポジトリの初期セットアップを実行します。
プロジェクトの新しいリポジトリを作成するための JIRA チケットを作成します(英語)。例(英語)。
詳細については、Sonatype の公式ドキュメント(英語)を参照してください。
Maven Central に公開されるアーティファクトは、PGP(英語) で署名される必要があります。署名キーを生成するには:
GPG ツール(英語)をダウンロードします。
以下を実行してキーを生成します。
gpg --gen-key例:
PS C:\Program Files (x86)\GNU\GnuPG> .\gpg.exe --gen-key gpg (GnuPG) 1.4.23; Copyright (C) 2015 Free Software Foundation, Inc. This is free software: you are free to change and redistribute it. There is NO WARRANTY, to the extent permitted by law. Please select what kind of key you want: (1) RSA and RSA (default) (2) DSA and Elgamal (3) DSA (sign only) (4) RSA (sign only) Your selection? 1 RSA keys may be between 1024 and 4096 bits long. What keysize do you want? (2048) Requested keysize is 2048 bits Please specify how long the key should be valid. 0 = key does not expire <n> = key expires in n days <n>w = key expires in n weeks <n>m = key expires in n months <n>y = key expires in n years Key is valid for? (0) Key does not expire at all Is this correct? (y/N) y You need a user ID to identify your key; the software constructs the user ID from the Real Name, Comment and Email Address in this form: "Heinrich Heine (Der Dichter) <heinrichh@duesseldorf.de>" Real name: John Doe Email address: johndoe@example.com Comment: sample key You selected this USER-ID: "John Doe (sample key) <johndoe@example.com>" Change (N)ame, (C)omment, (E)mail or (O)kay/(Q)uit? O You need a Passphrase to protect your secret key. We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. .+++++ +++++ We need to generate a lot of random bytes. It is a good idea to perform some other action (type on the keyboard, move the mouse, utilize the disks) during the prime generation; this gives the random number generator a better chance to gain enough entropy. ...+++++ ....+++++ gpg: C:/Users/John.Doe/AppData/Roaming/gnupg\trustdb.gpg: trustdb created gpg: key 8A37B4C1 marked as ultimately trusted public and secret key created and signed. gpg: checking the trustdb gpg: 3 marginal(s) needed, 1 complete(s) needed, PGP trust model gpg: depth: 0 valid: 1 signed: 0 trust: 0-, 0q, 0n, 0m, 0f, 1u pub 2048R/8A37B4C1 2021-04-20 Key fingerprint = 31FE BA03 2679 13C3 5DDD B277 6176 785A 8A37 B4C1 uid John Doe (sample key) <johndoe@example.com> sub 2048R/EA490E42 2021-04-20
プロジェクトの署名を構成します。
環境に応じて署名を構成するにはさまざまな方法があります。詳細については、Gradle の公式ドキュメント(英語)を参照してください。例: これは、ローカルビルドの署名を構成する方法です。
署名プラグインを
build.gradle
に含めます。plugins { id 'signing' }何を署名するかを指定します。例: 公開されたすべてのアーティファクトに署名するように Gradle を構成できます。これを行うには、
build.gradle
に次を追加します。signing { sign publishing.publications }署名鍵データをローカルの
gradle.properties
に追加します。例:signing.keyId=24875D73 signing.password=pwd1234 signing.secretKeyRingFile=C:/Users/John.Doe/AppData/Roaming/gnupg/secring.gpg説明
keyId
は、gpg -K
で取得できる公開鍵 ID です。password
は、キーの作成時に使用したパスフレーズです。secretKeyRingFile
は秘密鍵への絶対パスです。
署名付きアーティファクトを構築するには、次を実行します。
gradle sign署名付きアーティファクトを公開するには、次を実行します。
gradle publish
環境に応じて署名を構成するにはさまざまな方法があります。詳細については、Maven の公式ドキュメント(英語)を参照してください。例: これは、ローカルビルドの署名を構成する方法です。
Apache Maven GPG プラグインを
pom.xml
に含めます。<project> ... <build> <plugins> <plugin> <groupId>org.apache.maven.plugins</groupId> <artifactId>maven-gpg-plugin</artifactId> <version>1.6</version> <executions> <execution> <id>sign-artifacts</id> <phase>verify</phase> <goals> <goal>sign</goal> </goals> </execution> </executions> </plugin> </plugins> </build> ... </project>署名鍵データをローカルの
settings.xml
に追加します。例:<settings> [...] <servers> [...] <server> <id>gpg.passphrase</id> <passphrase>pwd1234</passphrase> </server> </servers> </settings>ここで、
passphrase
はキーの作成時に使用したパスフレーズです。これは、単一 (デフォルト) 署名キーがある場合にのみ機能することに注意してください。Maven GPG プラグインの設定の詳細については、公式ドキュメント(英語)を参照してください。署名付きアーティファクトを公開するには、次を実行します。
mvn deploy
Space で、署名されたアーティファクトを公開したリポジトリを開きます。
リモートリポジトリを構成します。
リポジトリ設定で、「リモートリポジトリ」タブを開き、「新しいリモートリポジトリ」をクリックします。
リモートリポジトリ設定を指定します。
URL : 初期セットアップ中に Sonatype から取得した URL。通常、SNAPSHOT アーティファクトバージョンの場合は
https://s01.oss.sonatype.org/content/repositories/snapshots/
、リリースバージョンの場合はhttps://s01.oss.sonatype.org/service/local/staging/deploy/maven2/
です。詳細(英語)。認証で基本を選択し、Sonatype JIRA に登録したユーザー名とパスワードを指定します。
Nexus ステージングプロファイル : 初期セットアップ時に取得したプロファイル。Space は認証情報を使用して Sonatype Nexus に自動的に接続し、使用可能なステージングプロファイルのリストを表示します。
作成をクリックします。
必要なアーティファクトをリモートリポジトリ (Maven Central) に公開します。
パッケージメニューで、リモートリポジトリに公開するを選択します。
リストで、前の手順で作成したミラーを選択し、公開をクリックします。
関連ページ:

リモートリポジトリへのパッケージの公開
場合によっては、Space Packages リポジトリに保存されているパッケージをリモートリポジトリ (Maven Central など) に公開することが必要になることがあります。ローカルリポジトリごとに、関連するリモートリポジトリのリストを指定できます。この後、ローカルリポジトリからこれらのリモートリポジトリのいずれかにパッケージを公開できます。サポートされているリポジトリの種類:コンテナー、Maven、NuGet、ローカルリポジトリをリモートリポジトリに関連付ける:プロジェクトに移動...

Gradle プロジェクトからアーティファクトを公開する
Gradle ビルドツールを使用するプロジェクトがあり、以下を使用して新しく作成された Maven リポジトリにプロジェクトアーティファクトを公開するとします。Gradle コマンドラインツール ,、JetBrains TeamCity,、Space Automation.、同じパッケージバージョンのアーティファクトを公開することは許可されていないことに注意してください。サーバーは 409 HTTP 応答を返します。唯一の例外: 接頭辞を持つアーティファクトは、スナップショットサポートが有効になって...

Maven プロジェクトからアーティファクトを公開する
Maven をビルドツールとして使用するプロジェクトがあり、以下を使用して新しく作成された Maven リポジトリにプロジェクトアーティファクトを公開するとします。Maven コマンドラインツール ,、JetBrains TeamCity.、Space Automation.、同じパッケージバージョンのアーティファクトを公開することは許可されていないことに注意してください。サーバーは 409 HTTP 応答を返します。唯一の例外: 接頭辞を持つアーティファクトは、スナップショットサポートが有効になっ...

パッケージリポジトリを探索する
パッケージリポジトリはプロジェクト全体のエンティティです。すべてのプロジェクトには独自のパッケージがあります。特定のプロジェクトのパッケージを表示するには、プロジェクトを開き、プロジェクトのサイドバーメニューでパッケージを選択します。ここでは、新しいリポジトリを作成したり、特定のリポジトリや特定のパッケージのプロパティを表示したりできます。リポジトリとパッケージを探す:すべてのパッケージリポジトリは、グローバル Space 検索インデックスに含まれます。名前でリポジトリを見つける最も簡単な方法...

Maven アーティファクトを入手する
Maven パッケージを取得する一般的な方法は、プロジェクトからそれを参照することです。依存関係の作成を支援するために、パッケージは一般的なビルドツールのコードスニペットを生成します。パッケージで、目的の Maven パッケージを見つけます。パッケージのプロパティページを開きます。スニペットフィールドで、ビルドツール (Gradle、Maven、SBT) を選択し、スニペットコードをコピーします。コードを対応する構成ファイル (、など) に貼り付けます。構成ファイルでリポジトリを指定します。で、...