Help us understand the problem. What is going on with this article?

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("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

参考


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

Masahito
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away