プロジェクトのビルド後の資材(jarやwarなど)をNexus Repository OSSを利用して管理しているのですが、Nexusを入れていたサーバのディスクが予想以上に使用されていて・・・「???」と思って使用量を調べたらNexusさんのディレクトリ配下が65Gと予想以上に使用していました。
サイズが大きくなっていた理由は?
大量のSNAPSHOTバージョンがリポジトリに残り続けていたことが原因でした。SNAPSHOTバージョンは・・・・
...
foo-1.0.1-20190418.004411-24.jar
foo-1.0.1-20190418.004411-24.jar.md5
foo-1.0.1-20190418.004411-24.jar.sha1
foo-1.0.1-20190418.004411-24.pom
foo-1.0.1-20190418.004411-24.pom.md5
foo-1.0.1-20190418.004411-24.pom.sha1
...
という感じで、デプロイした日時でリビジョンが振られ、何も対策しないとリポジトリに残り続けてディスクを無駄遣いすることになります。
SNAPSHOTバージョンのお掃除タスク
ちゃんとSNAPSHOTバージョンのお掃除タスクが用意されており、必要なSNAPSHOTバージョンだけをリポジトリに残しておくことができます。本エントリーでは具体的なタスクの登録方法などの説明は割愛しますが、「Configuring and Executing Tasks」の「Types of Tasks and When to Use Them」内に記載がある・・・
- タスク名:「Maven - Delete SNAPSHOT」
- タスク名:「Maven - Delete unused SNAPSHOT」
をタスクに登録すれば不要なSNAPSHOTバージョンを削除することができます。ただし・・・この段階では論理的に削除しているだけのようで、これらのタスクを登録しただけでは不十分な可能性があります。
Blob storeのコンパクト化タスク
論理削除したデータを物理削除してBlob store(リポジトリのデータ格納先)をコンパクト化するためのタスクも用意されています。このタスクも登録しておけば、不要なSNAPSHOTバージョンを完璧にお掃除することができます。
- タスク名:「Admin - Compact blob store」
まとめ
まとめではないですが・・・上記タスクを登録したらNexusが利用するディスク容量が「65G」から「3.5G」になったのでした