version | 2020, July |
Java | Java8 or Later |
Gradle | 6.5.x |
Kotlin | 1.3.x |
久々にJVM言語で作ったライブラリをBintrayで公開してみたのでその時の流れをまとめておきます。
思ったよりこの辺のドキュメントってないものですね.1
諸注意
この例では主にGradleの v5から使えるようになったKotlin DSLでの書き方を採用しています。
Groovy版での書き方ももしリクエストがあれば、今後追記するかもしれません。
詳しい説明は こちら を参照ください。
maven-publishを使う
Gradleの場合、 gradle-bintray-pluginがあるのですが、残念ながら現在の最新版では Gradle v6ではエラーがでてアップロードできない状態です。
https://github.com/bintray/gradle-bintray-plugin/issues/307
そのため、 maven-publish plugin を使います。
plugins {
`maven-publish`
}
bintrayのアカウントをつくる
実際に公開するときに参考にした以下の記事を参考にすることをおすすめします。
英語で問題なければ公式をよむことをおすすめします
https://www.jfrog.com/confluence/display/BT/Uploads#_how_to_upload
bintrayの設定をおく
公開しているディレクトリ内(./gradle.properties) or ユーザーフォルダ(~/.gradle/gradle.properties
)
で設定する必要があります。
// emailではなく、ユーザー名を書く
bintray_user=xxxx
// https://bintray.com/profile/edit からAPI keyを作成する
bintray_api_key=xxxx
設定
publishing {
publications {
create<MavenPublication>("maven") {
groupId = "com.github.masahitojp"
// 公開するライブラリがJavaの場合は "java" と書くと良い
from(components.findByName("kotlin"))
// 個々から下は公開するライブラリごとの設定を入れる。例として私のライブラリの設定をいれています。
pom {
name.set("bqdatamapper4k")
description.set("BigQuery datamapper in Kotlin")
url.set("https://github.com/masahitojp/bqdatamapper4k")
licenses {
license {
name.set("Apache License, Version 2.0")
url.set("https://opensource.org/licenses/Apache-2.0")
}
}
developers {
developer {
id.set("masahitojp")
name.set("Masato Nakamura")
email.set("randomstep@gmail.com")
}
}
scm {
connection.set("scm:git:git@github.com:masahitojp/bqdatamapper4k.git")
developerConnection.set("scm:git:ssh://github.com:masahitojp/bqdatamapper4k.git")
url.set("https://github.com/masahitojp/bqdatamapper4k")
}
}
}
}
repositories {
maven {
name = "bintray"
val bintrayUsername = "masahitojp"
val bintrayRepoName = "maven"
val bintrayPackageName = "com.github.masahitojp.bqdatamapper4k"
setUrl("https://api.bintray.com/content/$bintrayUsername/$bintrayRepoName/$bintrayPackageName/${project.version};publish=0;override=1")
// bintrayの認証情報をいれる
// gradle.propertiesの設定とkey名があっているか確認すること
credentials {
username = project.findProperty("bintray_user") as String?
password = project.findProperty("bintray_api_key") as String?
}
}
}
}
例
このあたりにフルの例を追加しておきました。参考にしていただけると幸いです。
https://github.com/masahitojp/bqdatamapper4k/blob/master/settings.gradle.kts
参考
- jCenterでライブラリを公開する方法
- jCenter (bintray) にアップロードするbuild.gradle
- https://www.jfrog.com/confluence/display/BT/Uploads#_how_to_upload
- https://github.com/rocketraman/kpropmap <- kotlin dslでの書き方はほぼほぼ個々の書き方を踏襲しました。
-
Bintray+jcenterってあんまり皆さん使ってない? ↩