S-JIS[2013-11-02/2015-10-13] 変更履歴

Gradle Mavenプラグイン

GradleMavenを扱うのがMavenプラグインだと思うが、Javaプラグインを普通に使うだけならMavenプラグインを指定する必要は無いっぽい^^;


リポジトリー

Javaプラグイン依存ライブラリーで外部モジュール(Mavenのアーティファクト)を指定する場合、そのモジュールをMavenリポジトリーから取ってくることになる。

リポジトリーはrepositoriesで指定する。
大抵の場合は、mavenCentralだけあれば足りる。

build.gradle:

apply plugin: 'java'

repositories {
  mavenCentral()
}

ローカルリポジトリー

自分のマシン上のローカルリポジトリーにあるモジュールを使いたい場合はmavenLocalを指定する。
(他のライブラリーを「mvn install」でローカルリポジトリーに登録していて、それを使いたいような場合)

apply plugin: 'java'

repositories {
  mavenCentral()
  mavenLocal()
}

URL指定

URLを直接指定することも出来る。

apply plugin: 'java'

repositories {
  mavenCentral()
  maven {
    url "http://repository.jboss.org/nexus/content/groups/public-jboss" // JBoss
    url "http://repository.apache.org/content/groups/public"            // Apache
  }
}

生成されるjarファイルの名前

Javaプラグインでビルドするとjarファイルが生成される。
このファイルの名前はMavenで生成するのと同様のルールになっている気がする。

自分のプロジェクトのMaven用のグループ名・アーティファクト名・バージョンは以下のようにして指定する。

build.gradle:

apply plugin: 'java'

group = 'com.example'
//artifact = 'zzz'
//archivesBaseName = 'zzz'
version = '0.1-SNAPSHOT'

groupでグループ名(グループID)を指定するが、jarファイル名には使われない。リポジトリーへ登録する際には使われる。

以前は「artifact」でアーティファクト名(アーティファクトID)を指定できたようだが、Gradle1.8では指定できない。
Gradle2.2.1では「archivesBaseName」も使用できない。[2015-10-11]

参考: wadahiroさんのGradleでMavenリポジトリにデプロイする時のメモ


ローカルリポジトリーへのインストール

Mavenプラグインを入れると、installタスクが使える。
mvn install」と同様に、ローカルリポジトリーにjarファイルを格納する。

build.gradle:

apply plugin: 'java'
apply plugin: 'maven'

group = 'com.example'
//archivesBaseName = 'zzz'
version = '0.1-SNAPSHOT'

実行方法

$ gradle install

リポジトリーへのアップロード

リポジトリーとしてURLを指定し、その場所にアーカイブをインストールすることが出来る。[2015-10-11]
URLにはリモートの他にローカルディレクトリーも指定可能。

build.gradle:

apply plugin: 'java'
apply plugin: 'maven'

group = 'com.example'
version = '0.0.1'

uploadArchives {
    repositories {
        mavenDeployer {
            repository(url: "file:///home/hishidama/site")
        }
    }
}

相対パスで指定したい場合、$buildDirという変数が使える。「url: "file://$buildDir/../site"」の様に指定する。[2015-10-13]
$buildDirは「プロジェクト/build」のディレクトリーを指している。

実行方法

$ gradle uploadArchives

上記のようにして作ったリポジトリーおよびアーカイブは、他のプロジェクトから以下のように指定して使うことが出来る。

build.gradle:

〜
repositories {
    maven { url 'file:///home/hishidama/site' }
}
〜
dependencies {
    compile group: 'com.example', name: 'zzz', version: '0.0.1'
}

これでjarファイルはダウンロードできるのだが、ソースはダウンロードできない。[2015-10-13]
デフォルトでは、ソースのアーカイブは生成されないらしい。

uploadArchivesでなくpublishを使ってごちょごちょやると、ソースのアーカイブも生成される。


publish

publishは、指定した場所(リポジトリー)にアーカイブを作成する新しい方法らしい。[2015-10-13]
(publishは「出版する」といった意味らしい)

sourceJarタスクを併せて定義することで、「プロジェクト名-バージョン-sources.jar」というソースのアーカイブも生成される。

build.gradle:

apply plugin: 'maven'
apply plugin: 'maven-publish'task sourceJar(type: Jar) {
    from sourceSets.main.allJava
}

publishing {
    publications {
        mavenJava(MavenPublication) {
            from components.java

            artifact sourceJar {
                classifier "sources"
            }
        }
    }
    repositories {
        maven {
            url "$buildDir/../../mvnrepository"
        }
    }
}

実行方法

$ gradle publish

Gradle目次へ戻る / 技術メモへ戻る
メールの送信先:ひしだま