案外このことを簡潔に解説する記事がなかったので、分からない人用に書いておく。
なおこの記事は「なんかこうしたら動いた」であって、ベストプラクティスを説明するものではない。誰か教えてください。
対象読者
- groupId って何?artifactId って何?というくらいの人(私もよく分からない)
- すでにプロジェクトをビルドできるところまでは行っている
したいこと
- Gradleで作ったライブラリを jar 形式で他の(Maven|Gradle)プロジェクトから簡単に読み込めるように公開したい
- ライブラリを使う時、バージョンだけ指定して、ダウンロードはビルドツールにやらせたい
例: Mavenならこう指定して使えるようにしたい
<dependency>
<groupId>com.skpub</groupId>
<artifactId>calendertaskscheduler</artifactId>
<version>1.0.0</version>
</dependency>
対象読者のところで書いた通り、groupId って何?artifactId って何?という人は、ここで示されていることである程度それらの役割が分かると思う。要するに、パッケージとして unique になるための情報であって、かつ使う側にとって必要になる情報ということだ。(本質は知らないがそういう側面があることは確かである。)
作業開始
1. personal access token (classic)) を発行する
これは GitHub Packages の利用に必要な作業だ。
https://github.com/settings/tokens
↑ここから画面右上の Generate new Token (クリックすると選択肢が出るが、classic の方を選ぶ)をクリックし、以下の画像のように権限設定をする。
(無駄に多めに権限を追加している可能性がある。信頼できない人は適宜調べてほしい。)
その後トークンを発行する。すると、それらしい文字列が出てくる。
この文字列を、ユーザの環境変数"GITHUB_TOKEN"に追加する。環境変数に追加する方法は OS により異なるので、適当な方法で追加してほしい。このとき、"GITHUB_USER"として、GitHub のユーザ名も環境変数に追加しておく。
2. publish できるように設定する
plugins {
id 'maven-publish'
}
publishing {
repositories {
maven {
name = 'GitHubPackages'
url = uri('https://maven.pkg.github.com/[ユーザ名]/[リポジトリ名]')
credentials {
username = System.getenv('GITHUB_USERNAME')
password = System.getenv('GITHUB_TOKEN')
}
}
}
publications {
gpr(MavenPublication) {
artifactId = '[指定したいartifactId(ただし全て小文字のこと)]'
from(components.java)
}
}
}
このように設定に追記する。追記すると言っても、コピペすればいいというのではない。
まず、[云々]という部分は、云々の部分を貴方の環境に合わせた文字列に置き換えた上で[]を削除してほしいという意味である。
また、pluginsという要素はすでに存在して、その中にはすでに id 'java-library' などがあるはずだ。
こういうとき、その部分は
plugins {
id 'java-library'
id 'maven-publish'
}
とでもしておけばよい。他も同じことである。
なお、ここで groupId は? version は?と気になるはずだ。私も気になる。ただ私の build.gradle の場合はトップレベルに group, version という変数で設定されていた。どうやら勝手にこの部分から読んでくれるらしい。これらがなかった場合はトップレベルに追加するのが良いか、それとも publishing>publications>gpr(MavenPublication) 内に追加すればよいのか知らないが、とりあえず私の環境ではトップレベルに
group 'com.skpub'
version '1.0.0'
と設定されていた。ここが「ベストプラクティスではないので誰か教えてください。」の点である。教えてください。
この状態で、
~$ gradle publish
すれば、公開されてくれるはずだ。
当該リポジトリの画像で示した部分から、公開したものが見られるはずだ。
以上。
参考文献
Comments
Let's comment your feelings that are more than good