純規の暇人趣味ブログ

首を突っ込んで足を洗う

依存関係管理ツールのディレクトリ変更がダルすぎる話

      2017/12/13    HimaJyun

タイトル字数の関係で端折ってますけど、要は「プログラミングで使う依存関係管理ツールのキャッシュ移動ダルすぎだしシンボリックリンクの方が良くね?」という話。

プログラミングの合間に書いてるので全体的に書き方が雑、ご容赦。

依存関係管理ツール、依存管理ツール、ライブラリ管理ツール、バージョン管理ツールとか表記ゆれがあるけど、すなわちMavenみたいな奴の事ね。

ディレクトリ変更がダルい

要はMavenの~/.m2とかNugetの~/.nugetとか……Rubyだと~/.gemとか?知らねーけど

MavenとかNugetとかってダウンロードしてきたライブラリをそれらのディレクトリにキャッシュしますよね、それ自体は間違いじゃないんですけどね。

Mavenさん、Nugetさん、そこSSDなんすよ……貧民がお金持ちの真似事なんかしてSSDを導入したはよいが、SSDが256Gというギリギリ許容ラインなのでそんなどうでも良い物のために容量を使いたくない。

という訳でキャッシュしているライブラリをHDDに移動させたい、それは誰もが考える事。

(いやまぁ、SSDに置いた方がコンパイルが早くなりそうではあるんだが……)

設定で変えるの面倒すぎでは?

クソ真面目に設定を変更したりしてるとIDEを変えた時に不便を強いられる。

Nugetは恐らくVisualStudioでしか使わないだろうからまだ構わないようなものだけど、Maven(Java)ではEclipse使ってると「IDEAの方が良いよオジサン」がゴチャゴチャうるさいIDEAをオススメしてきたりするのでIDEAを使ってみたりもする。

まぁ、IDEAに限らず、IDEを変えるたびに設定しなおすの手間だよね。という訳。

そもそも変更する方法調べるの面倒だよね、IDEによって違うし。(ちなみにMavenはIDEにバンドルされてる物を使う派)

環境変数使いたくない

環境変数で設定するってのはよくある事だろうけど、これをするとそのツールを使わなくなった時に消し忘れたとか、場所を移動した時に変更し忘れた、なんてのがあり得る。

なので極力環境変数は触りたくない。

シンボリックリンクを使おう

という訳でシンボリックリンクを使う。ぼくかしこい。

これでIDE共には~/.m2を見ていると思わせて別の場所を見せられる。

ちなみにMavenに限るなら

Mavenに限るなら~/.m2/settings.xmlを使うという手がある。

<settings xmlns="http://maven.apache.org/SETTINGS/1.0.0"
  xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
  xsi:schemaLocation="http://maven.apache.org/SETTINGS/1.0.0
  http://maven.apache.org/xsd/settings-1.0.0.xsd">
 
  <localRepository>移動先</localRepository>
  <interactiveMode/>
  <usePluginRegistry/>
  <offline/>
  <pluginGroups/>
  <servers/>
  <mirrors/>
  <proxies/>
  <profiles/>
  <activeProfiles/>
</settings>

みたいな設定を入れておけば(普通であれば)localRepositoryが参照される。

結論

もっとデカイSSD買おうや。

Power is EVERYTHING, More is Better.(IOPSは全て、(容量は)多ければ多いほどよい)って言うじゃないですか。

(余談だけどMavenもNugetもドットディレクトリ作るのは構わんが隠しファイルにしてくれ、貧民だからWindowsしか持ってねぇんだ、ホームディレクトリにドット始まりが散乱してて凄まじく気になる)

……ダメだね、思い付きで書いた記事ってなんか需要なさそうな事しか書けない。

 - プログラミング