ひだまりソケットは壊れない

ソフトウェア開発に関する話を書きます。 最近は主に Android アプリ、Windows アプリ (UWP アプリ)、Java 関係です。

まじめなことを書くつもりでやっています。 適当なことは 「一角獣は夜に啼く」 に書いています。

Gradle plugin を Plugin Portal で公開する (2016 年 2 月版)

背景 : Gradle プラグインの開発について

独自の Gradle プラグインの書き方は次のページに書かれています。

ここには公開の方法も書かれていて、次のように述べられています。

If you are publishing your plugin internally for use within your organization, you can publish it like any other code artifact. See the ivy and maven chapters on publishing artifacts.

If you are interested in publishing your plugin to be used by the wider Gradle community, you can publish it to the Gradle plugin portal. This site provides the ability to search for and gather information about plugins contributed by the Gradle community. See the instructions here on how to make your plugin available on this site.

39.5.2. Publishing your plugin (Chapter 39. Writing Custom Plugins)

広く使われうるプラグインを公開する場合には Gradle plugin portal が使えるようです。

Gradle Plugin Portal とは

Introducing The New Gradle Plugin Portal l Gradle」 によると、Plugin Portal は 2014 年 6 月ごろに公開されたようですね。 最初は Gradle plugin の検索のインターフェイスを提供するものだったようで、Maven リポジトリとしては Bintray が使われてたようです。

その当時の、プラグインを Plugin Portal で公開する方法は下記ページに書かれています。

現在では Gradle Plugin Portal 自身が Maven リポジトリも持つようになっていて、Gradle Plugin を Gradle Plugin Portal にアップロードすることで公開することができます。

Gradle Plugin Portal で公開されると何が嬉しいか?

まずひとつは、Gradle Plugin Portal で検索できること。

あとは、build.gradle でプラグインを適用する際に以下のように書けること。 (Gradle 2.1 以降。)

plugins {
    id 'com.gradle.plugin-publish' version '0.9.3'
}

Gradle Plugin Portal で公開されてないと以下のように書く必要があります。

buildscript {
  repositories {
    maven {
      url "https://plugins.gradle.org/m2/"
    }
  }
  dependencies {
    classpath "com.gradle.publish:plugin-publish-plugin:0.9.3"
  }
}

他にもあるかもしれませんがとりあえずはそれぐらいでしょうか。

Gradle Plugin Portal への公開 (2016 年 2 月版)

公開方法は次のドキュメントに書かれています。

書かれているそのままですが、流れを紹介すると、

  1. Plugin Portal のアカウントを作成して、
  2. API key を生成して、
  3. API key を $HOME/.gradle/gradle.properties に書いて、
  4. Plugin Publishing Plugin を適用して build.gradle を書いて、
  5. ./gradlew publishPlugins でアップロード。

という感じですね。

普通にやれば普通にできるのですが、いくつかややこしいことがあるので書いておきます。

  • Gradle plugin ID は名前空間分けしたものにする必要がある。
  • 特に何も指定しなければ Artifact の group id の前には gradle.plugin. が追加される。
    • 上書きすることもできて、過去に Bintray にデプロイされたプラグインがあって、それの group id と artifact id を保ちたい場合は上書きする必要がある。
    • group id を上書きした場合は、セキュリティ上の理由で Gradle チームが手動で受け付けることになるので、group id を上書きしないことが推奨されている。
    • Gradle - How do I use the Plugin Publishing Plugin?」 の 「Full Example」 のコメント参照。

以上です!