ソース と Javadoc を Maven リポジトリに公開する方法

Gradle も 標準では ソース と Javadocアーカイブして Maven リポジトリに公開してくれないようなので、その方法をメモ。本当はプラグインがあると良いんだけど...

apply plugin: 'maven'

// xxx-javadoc.jar 生成
task packageJavadoc(type: Jar, dependsOn: 'javadoc') {
    from javadoc.destinationDir
    classifier = 'javadoc'
}

// xxx-sources.jar 生成
task packageSources(type: Jar) {
    from sourceSets.main.allSource
    classifier = 'sources'
}

artifacts {
    archives packageJavadoc
    archives packageSources
}

uploadArchives {
    repositories.mavenDeployer {
        repository(url: uri('repos'))    // リポジトリのURL
    }
}

注意点はひとつだけ...
task 定義の後に artifacts を設定すること。

あとは

gradle uploadArchives
と実行するだけで ソースをビルドした後に全ての成果物 (Jar ファイル、ソースファイル、Javadoc) を Maven リポジトリにアップロードしてくれます。
と言っても、上記のコードでは ローカルPC の repos ディレクトリに 保存するだけですが...

ちなみにに 上記のコードは configuration と artifact の関係を理解するためのサンプルとしても とっても役に立ちます。
それについては、また 時間がある時にでもまとめことにしよう。