お疲れ様です!NuGet パッケージを作成したら NuGet 公式に登録はしたくないけど社内や個人で管理したいときがあります。そんなときは NuGet リポジトリサーバーを立てます。ここでは Sonatype Nexus を使ってリポジトリサーバーを立ててみます。
ここでは Java はインストール済みとします。未インストールのときはインストールしてください。
目次
Nexus のインストール
ダウンロードと配置
下記より Windows 版をダウンロードします。(投稿時バージョン:3.5.1-02)
ダウンロードしたファイルを適当なフォルダへ展開します。ここでは 「C:\Dev\Sonatype」とします。
サービス登録
Windows キーを押下して cmd と入力後 Ctrl + Shift + Enter キーを押下して管理者:コマンドプロンプトを起動します。
コマンドプロンプトで下記のコマンドを実行しフォルダを移動します。
cd /d C:\Dev\SonaType\nexus-3.5.1-02\bin
下記コマンドで nexus をサービスへ登録します。
nexus.exe /install Sonatype Nexus Repository Manager
Nexus の起動
登録したサービスを開始します。
ブラウザを起動し「http://localhost:8081/」へアクセスすると「Initializing …」ページが表示されます。
そのうちファイアウォールの設定画面が開くので「OK」をクリックして閉じると起動完了しているはずなのでブラウザを再読み込みします。起動が終わっていれば「Welcome」ページが表示されます。
Proxy 環境の場合 Welcome ページが表示されません。そのときはProxyの設定をします。
admin ユーザーでパスワード「admin123」でログイン後下図の設定をしてください。
Nexus の設定
ポート変更
もしポートを変更するときは「C:\Dev\SonaType\sonatype-work\nexus3\etc\nexus.properties」ファイルを編集します。
# application-port=8081
↓ コメント解除してポートを指定する
application-port=8800
変更したらサービスを再起動します。
ユーザー追加
パッケージを管理するユーザーを追加します。
admin ユーザーでパスワード「admin123」でログイン後「Security」-「Users」を選択します。
「Create User」をクリックしてユーザー情報を入力します。ロールは管理者権限の「nx-admin」を付けました。
NuGet API-Key Realm の Active 化
NuGet パッケージを API キーで追加できるように設定します。
管理者メニューの「Security」-「Realms」を選択し、「NuGet API-Key Realm」を Active へ移動して Save します。
NuGet パッケージの追加
API キーの確認
パッケージを追加するときに使う API キーを確認するために、追加したユーザーでログインしなおします。
ヘッダーのユーザー名をクリックして「NuGet API Key」をクリックします。
「Access API Key」をクリックするとパスワードを要求されるので入力します。
表示された API キーを控えます。
リポジトリURLの確認
パッケージの追加先となるリポジトリURLの確認をします。「Repository」-「Repositories」を選択します。
NuGet は既定で3つ作られています。
リポジトリ名 | 説明 |
---|---|
nuget.org-proxy | NuGet公式の nuget.org をキャッシュするリポジトリ。 |
nuget-hosted | パッケージを追加するリポジトリ。 |
nuget-group | nuget-hosted と nuget.org-proxy を合わせたリポジトリ。 VisualStudio にはこれを設定することで個別を意識せずにすみます。 |
ここでは既定のままとして nuget-hosted の URL を確認します。
NuGet パッケージの追加
NuGet.exe を使ってコマンドプロンプトで実行してもいいですが、GUI で実行した方がわかりやすいので NuGet Package Explorer をインストールします。Windows 10 ストアか ClickOnce か Chocolatey でインストールできます。ClickOnce は Codeplex なのでいずれ更新されなくなると思われるので使い勝手的に Chocolatey がよいかと思います。
Windows キーを押下して「powers」と入力後 Ctrl + Shift + Enter キーを押下して管理者:Windows PowerShell を起動し下記コマンドを実行して Chocolatey をインストール。
iwr https://chocolatey.org/install.ps1 -UseBasicParsing | iex
NuGet Package Explorer をインストール。
choco install nugetpackageexplorer
nupkg ファイルをダブルクリックしてNuGet Package Explorer を起動し、「File」-「Publish」を選択します。
控えたリポジトリURLとAPIキーを入力して「Publish」すると登録されます。
Visual Studio の設定
「オプション」-「NuGet パッケージ マネージャー」の「パッケージ ソース」を追加します。ここには nuget-group のリポジトリを追加します。そうすることで NuGet 公式の nuget.org-proxy キャッシュリポジトリと Nexus 内の nuget-hosted リポジトリを両方使うことができます。
nuget-hosted リポジトリには一つしかパッケージはありませんが、NuGet 公式のパッケージも表示されています。
設定の詳細は Installation – Nexus Repository Manager 3 – Sonatype Help を参照してください。
Sonatype Nexus はフリーで NuGet 以外にも docker, maven, bower, npm 等のリポジトリサーバーにもなります。しかもキャッシュサーバーにもなるので社内ではこのサーバーを指定することで外部からパッケージを取得するのを減らせると思います。