GradleからBintrayにuploadして公開する(Kotlin DSL編)


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)
で設定する必要があります。

gradle.properties
// emailではなく、ユーザー名を書く
bintray_user=xxxx
// https://bintray.com/profile/edit からAPI keyを作成する
bintray_api_key=xxxx

設定

build.gradle.kts

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("[email protected]")
                    }
                }
                scm {
                    connection.set("scm:git:[email protected]: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

参考


  1. Bintray+jcenterってあんまり皆さん使ってない?