前面几篇記事で Gradle に関する知識を学びましたが、今日の内容は Nexus Repository Manager を使用して Maven プライベートリポジトリを構築することです。これにより、ツールライブラリや基本コンポーネントライブラリなど、他のプロジェクトで使用するために一般的なライブラリプロジェクトを抽出できます。以下では、ゼロから Maven プライベートリポジトリを構築します。
- Nexus サービスのインストール
- Nexus サービスの実行
- ライブラリプロジェクトの公開
- ライブラリプロジェクトの使用
- まとめ
Nexus サービスのインストール#
以下のアドレスから Nexus インストーラーパッケージをダウンロードします:
http://www.sonatype.com/download-oss-sonatype
自分に適したバージョンを選択してダウンロードします。ここでは nexus-3.13.0-01-win64 を選択しました。ダウンロードが完了したら解凍し、以下の 2 つのフォルダができます:
//nexusサービス
nexus-3.13.0-01
//nexus関連の設定ファイル(ログ、リポジトリ、インデックス、キャッシュなどの設定ファイル)
sonatype-work
次に、管理者として cmd コマンドプロンプトを開き、Nexus サービスの解凍ディレクトリ内の bin ディレクトリに移動して、以下のコマンドを実行して Nexus サービスをインストールします。参考は以下の通りです:
nexus.exe/install
実行が完了すると、Nexus サービスがインストールされます。Nexus サービスのインストール成功の実行結果は以下の通りです:
E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/install
Installed service 'nexus'.
Nexus サービスの実行#
Nexus サービスのインストールが完了したら、以下のコマンドを実行して Nexus サービスを起動します。参考は以下の通りです:
nexus.exe/run
このコマンドを実行すると、Nexus サービスが起動します。実行成功の重要な情報は以下の通りです:
E:\Gradle\Nexus\nexus-3.13.0-01-win64\nexus-3.13.0-01\bin>nexus.exe/run
Preparing JRE ...
2018-09-10 23:02:21,265+0800 INFO [FelixStartLevel] *SYSTEM org.sonatype.nexus.pax.logging.NexusLogActivator - start
//...
-------------------------------------------------
Started Sonatype Nexus OSS 3.13.0-01
-------------------------------------------------
//...
Nexus サービスが正常に起動した後、以下のアドレスを使用して Nexus サービスにアクセスできます。具体的には以下の通りです:
http://localhost:8081/
実行結果は以下の通りです:
リポジトリの作成#
デフォルトのユーザー名 admin とデフォルトのパスワード admin123 でログインに成功したら、設定(小さなギア)を選択し、左側で Security->Users を選択します。そして、Create local user を選択して関連情報を入力し、アカウントを作成します。次に、作成した新しいアカウントでログインし、自分のアカウントの下にリポジトリを作成できます。参考の画像は以下の通りです:
ライブラリプロジェクトの公開#
リポジトリが作成されたら、プロジェクトをリポジトリに公開できます。ここではまず Android Studio を使用してライブラリプロジェクト test を作成し、その build.gradle ファイルでライブラリをアップロードするためのタスクを設定します。使用するプラグインを見てみましょう:
//Android Libraryプラグインを使用
apply plugin: 'com.android.library'
//mavenプラグインを使用
apply plugin: 'maven'
//Upload Taskは公開のために使用
uploadArchives{
repositories{
mavenDeployer{
//正式なリリースリポジトリ
// repository(url:"http://localhost:8081/repository/jzman-releases/"){
// authentication(userName:"jzman",password:"nexus2410.")
// }
//スナップショットバージョンのリポジトリ
snapshotRepository(url:"http://localhost:8081/repository/jzman-snapshots/"){
authentication(userName:"jzman",password:"nexus2410.")
}
pom.project {
//バージョン番号、スナップショットバージョンの場合、そのバージョン番号の後に-SNAPSHOTを追加する必要があります。そうでないと正常に認識されません。
version '1.0.0-SNAPSHOT'
//一般的にプロジェクト名を書く
artifactId 'testWidget'
//グループ、パッケージ名に似ており、一意性を保証
groupId 'com.manu.test'
//パッケージ形式
packaging 'aar'
//説明
description 'テストmavenプライベートリポジトリの構築'
}
}
}
}
//...
ライブラリプロジェクトをアップロードするためのタスクの設定が完了したら、必要に応じて以前に作成した対応するリポジトリにアップロードできます。アップロードタスクを実行するには、Android Gradle が提供するショートカットを使用できます。以下の画像を参照してください:
uploadArchives の実行が完了すると、対応するライブラリプロジェクトが対応するリポジトリに公開されます。以下は正式なリポジトリに公開された結果です。以下の画像を参照してください:
正式版を公開する際は、毎回バージョン番号を変更する必要があります。そうでないと公開に失敗します。以下はスナップショットリポジトリに公開された結果です。以下の画像を参照してください:
ライブラリプロジェクトをスナップショットリポジトリに公開すると、何度でもアップロードできます。毎回バージョン番号を変更する必要はなく、元のバージョン番号の基礎の上に自動的に増加します。例えば、1.0.0 - タイムスタンプ - 1、1.0.0 - タイムスタンプ - 2 など、実際の使用時にはバージョン番号 1.0.0-SNAPSHOT を使用します。使用時に Maven は最新のスナップショットバージョン、つまりシーケンス番号が最も大きいスナップショットバージョンを自動的にダウンロードします。この方法は、ライブラリプロジェクトで発見された問題を迅速に公開するのに役立ち、迅速なイテレーションを促進します。問題が解決されたら、正式版を公開できます。
ライブラリプロジェクトの使用#
ライブラリプロジェクトが公開された後、任意のプロジェクトでこのライブラリプロジェクトを使用できるようになります。プロジェクトの build.gradle ファイルで使用する Maven リポジトリを設定します:
//...
allprojects {
repositories {
//...
//mavenリポジトリを設定
maven {
url 'http://localhost:8081/repository/jzman-releases/'
}
}
}
//...
次に、具体的なプロジェクトで対応する依存関係を設定することで、このライブラリプロジェクトを使用できるようになります。依存関係の設定は以下の通りです:
dependencies {
//...
//依存ライブラリプロジェクトを設定
compile 'com.manu.test:testWidget:1.0.0'
}
まとめ#
本記事の主な内容は、ローカルで使用可能な Maven プライベートリポジトリを構築することです。実際の開発では、上記の内容に従って対応するリポジトリのアドレスを自社のリポジトリのアドレスに変更するだけで済みます。他の jcenter リポジトリの構築も類似しています。本記事の内容はここまでです。