GitLabでMaven Repositoryを作ってGradleから使う

研究室でJavaのプログラムを書いているのですが、ライブラリを研究室内で共有するときにMaven Repositoryを立てたらいいのではないかと思ったので、GitLab上で使うようにしました。

想定するプログラム

  • ライブラリ(MyLib)
  • MyLibを使用するプログラム(MyProgram)

MyLibのbuild.gradle

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

def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
sourceCompatibility = 1.7
targetCompatibility = 1.7

group = 'net.rkmathi'
archivesBaseName = 'mylib'
version = '1.0.0'

repositories {
    maven { url System.getenv('HOME') + '/.m2/repository' }
    mavenCentral()
}

dependencies {
    testCompile 'junit:junit:4.11'
}

uploadArchives.repositories.mavenDeployer {
    repository(url: "file:${projectDir}/maven")
}

これでgradle uploadArchivesを実行すると、mavenディレクトリ以下に出力されます。

  • uploadArchivesで出力したら、gitリポジトリにそのディレクトリも追加して、GitLabへプッシュします。

MyProgramのbuild.gradle

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

def defaultEncoding = 'UTF-8'
[compileJava, compileTestJava]*.options*.encoding = defaultEncoding
sourceCompatibility = 1.7
targetCompatibility = 1.7

group = 'net.rkmathi'
archivesBaseName = 'myprogram'
version = '1.0.0'

repositories {
    maven { url System.getenv('HOME') + '/.m2/repository' }
    maven { url 'http://<<GitLab Address>>/<<User Name>>/mylib/raw/master/maven' }
    mavenCentral()
}

dependencies {
    compile 'net.rkmathi:mylib:1.0.0'
    testCompile 'junit:junit:4.11'
}

uploadArchives.repositories.mavenDeployer {
    repository(url: "file:${projectDir}/maven")
}

これで、MyProgramからMyLibを使うことができました。

  • http://<<GitLabのアドレス>>/<<ユーザ名>>/<<プロジェクト名>>/raw/mastermaven repositoriesの場所に指定することによって、GitLab上にあるライブラリを取得できるようになります。

ワーイ