23
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

gradle + bitbucket + 社内向け (認証あり) maven リポジトリの設定手順

Last updated at Posted at 2014-11-26

Bitbucket に無料で社内向けの認証あり Maven リポジトリを作成し、gradle から利用するための手順を書く。

1. Bitbucket アカウント作成・リポジトリ作成

Bitbucket のアカウントを作成し、プライベートなリポジトリを作成する。
ここでは tily というユーザー名でアカウントを作成し、maven-repository というリポジトリを作成する。

なお、社内向けのプライベートリポジトリという想定なのでデフォルトでチェックされている "This is a private repository"を外さないようにする。

2. gradle インストール

第4章 Gradleのインストール に書いてある通り、Java さえインストールしてあれば、ダウンロードしてパスを通すだけで使えるようになる。

3. プロジェクト作成〜maven リポジトリへ公開

maven リポジトリに置く用のサンプルプロジェクトを作成。


## ディレクトリ作成
$ mkdir java-project-a
$ cd java-project-a

## gradle init で jar プロジェクト用のひな形作成
$ gradle init --type java-library
:wrapper
:init

BUILD SUCCESSFUL

Total time: 4.469 secs

適当なライブラリを作成する。


$ mkdir -p src/main/java/tokyo/prgrphs/
$ vi src/main/java/tokyo/prgrphs/HelloWorld.java

内容はこんな感じ。


package tokyo.prgrphs;

class HelloWorld {
        public void sayHello(String name) {
                System.out.println("Hello, " + name);
        }
}

作成したライブラリを jar にする。


## ビルド
$ gradle jar
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE

BUILD SUCCESSFUL

Total time: 3.988 secs

## ビルドできたことを確認
$ jar tvf build/libs/java-project-a.jar
     0 Wed Nov 26 16:33:06 JST 2014 META-INF/
    25 Wed Nov 26 16:33:06 JST 2014 META-INF/MANIFEST.MF
   330 Wed Nov 26 16:33:04 JST 2014 Library.class
     0 Wed Nov 26 16:33:04 JST 2014 tokyo/
     0 Wed Nov 26 16:33:04 JST 2014 tokyo/prgrphs/
   707 Wed Nov 26 16:33:04 JST 2014 tokyo/prgrphs/HelloWorld.class

Bitbucket の URL や認証情報等を $HOME/.gradle/gradle.properties に書いておく。


 $ vi ~/.gradle/gradle.properties

中身はこんな感じ。


bitbucketReadUrl=https://api.bitbucket.org/1.0/repositories/tily/maven-repository/raw/master
bitbucketWriteUrl=git:https://tily@bitbucket.org/tily/maven-repository.git?master#
bitbucketUsername=tily
bitbucketPassword=XXXXXXXX
  • 読み出し用の URL には bitbucket が提供している API を利用する (API とは言っても普通にユーザー名とパスワードによる BASIC 認証でアクセスできるっぽい)
  • 書き込み用の URL は下記 build.gradle で利用している wagon-git というプラグインがこういう URL でないと受け付けないのでこうしている

上記の情報を利用した build.gradle を作成する。
Maven Wagon を利用して jar を git 上の Maven リポジトリに公開するためのプラグインは 2 つ見つけたが、ar.com.synergian グループのほう は死んでるっぽいので net.trajano.wagon グループのほう を使った。


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

configurations {
    deployerJars
}

repositories {
    jcenter()
}

dependencies {
    deployerJars 'net.trajano.wagon:wagon-git:2.0.1'
}

uploadArchives {
    repositories {
        mavenDeployer {
            configuration = configurations.deployerJars
            repository(url: bitbucketWriteUrl) {
                authentication(userName: bitbucketUsername, password: bitbucketPassword)
            }
            pom.groupId = 'tokyo.prgrphs'
            pom.artifactId = 'hello-world'
            pom.version = '0.0.0'
        }
    }
}

bitbucket 上の tily/maven-repository へ jar をプッシュしてみる。


$ gradle uploadArchives
:compileJava UP-TO-DATE
:processResources UP-TO-DATE
:classes UP-TO-DATE
:jar UP-TO-DATE
:uploadArchives
Uploading: tokyo/prgrphs/hello-world/0.0.0/hello-world-0.0.0.jar to repository remote at git:https://tily@bitbucket.org/tily/maven-repository.git?master#
Transferring 1K from remote
Uploaded 1K

BUILD SUCCESSFUL

Total time: 23.545 secs

ウェブから bitbucket を見てみると、うまく登録できたっぽい。

4. maven リポジトリに公開した jar を別のプロジェクトから使ってみる

「3.」と同じようにプロジェクトのひな形を作成。


$ mkdir java-project-b
$ cd java-project-b
$ gradle init --type java-library

「3.」で maven リポジトリに公開した tokyo.prgrphs.HelloWorld ライブラリを利用したプログラムを書く。

 
$ vi src/main/java/tokyo/prgrphs/Main.java

内容。

 
package tokyo.prgrphs;
import tokyo.prgrphs.HelloWorld;

class Main {
        public static void main(String[] args) {
                HelloWorld helloWorld = new HelloWorld();
                helloWorld.sayHello(args[0]);
        }
}

build.gradle を作成。


apply plugin: 'java'

repositories {
    maven {
        url bitbucketReadUrl
        credentials {
          username bitbucketUsername
          password bitbucketPassword
        }
    }
}

dependencies {
    compile 'tokyo.prgrphs:hello-world:0.0.0'
}

ビルドしてみる。


$ gradle jar
:compileJava
:processResources UP-TO-DATE
:classes
:jar

BUILD SUCCESSFUL

Total time: 7.74 secs

ビルドできた。さらにビルドされた jar を実行してみる。


$ java -cp ~/.m2/repository/tokyo/prgrphs/hello-world/0.0.0/hello-world-0.0.0.jar:build/libs/java-project-b.jar tokyo.prgrphs.Main tily
Hello, tily

実行できた。

まとめ

  • bitbucket のプライベートリポジトリを使えば無料かつ手軽に社内向け Maven リポジトリをホストできる
  • 今回は gradle を使ったが素の maven とか sbt とかでも似たようなことはできると思う。あと bitbucket でなく github でも似たようなことはできそう (ただし github のプライベートリポジトリは有料)
  • 今回作成したプロジェクトは tily/java-project-a, tily/java-project-b に公開した
23
26
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
23
26

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?