前のいくつかの記事で 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
次に、管理者としてコマンドプロンプトを開き、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 でログインした後、設定(歯車)を選択し、左側のセキュリティ -> ユーザーを選択し、新しいユーザーを作成するための情報を入力してユーザーを作成します。その後、作成した新しいアカウントでログインし、自分のアカウントの下にリポジトリを作成することができます。以下の図を参照してください。
ライブラリプロジェクトの公開#
リポジトリが作成されたら、プロジェクトをリポジトリに公開することができます。まず、Android Studio を使用して test というライブラリプロジェクトを作成し、その build.gradle ファイルでライブラリのアップロードタスクを設定します。使用されているプラグインを見てみましょう。
// Android Libraryプラグインの使用
apply plugin: 'com.android.library'
// Mavenプラグインの使用
apply plugin: 'maven'
// アップロードタスクは、公開のために使用されます
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'
// グループID、パッケージ名のようなもので、一意性を保証します
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 リポジトリの構築も同様です。この記事の内容は以上です。