プログラムのビルドを何回もしていると、更新したはずのプログラムが反映されなかったり、ローカルリポジトリの環境が壊れてしまったりすることがある。
そんなときに環境を修正するための便利なコマンドがあったのでメモしておく
##コンパイル時にGradleのキャッシュを見に行かないようにする。
これをやるにはいくつかの方法がある。
####方法1:キャッシュを消す
これが一番確実
rm -rf $HOME/.gradle/caches/
####方法1.2:ビルドごとにコンパイル時のキャッシュの場所を指定し、コンパイル終了時に削除する。
ローカルでのコンパイルであれば問題ないが、jenkisなどの環境で行う場合、複数のコンパイルが同時に走っているケースが想定される。そのような場合にキャッシュを削除してしまうと、予期せぬ動作につながってしまう可能性もある。そこで、タスクごとにキャッシュフォルダを指定し、そのフォルダを削除するという方法を取ることで上記の問題発生を避けることができる。コマンドは下記の通り。
gradle --gradle-user-home /tmp/naggi build
また、方法1、1.2のどちらかであれば、必ず再読込したいファイルのみを削除し、その他はキャッシュを使うようにすることもできる。
下記の例は、dom4jというプロジェクトはキャッシュを取得したくない場合。
```rm -rf $HOME/.gradle/chache/caches/modules-2/files-2.1/dom4j``
方法2:コマンドでなんとかする
時々想定通りに動かないのでイライラするのでおすすめしない。
一部の情報では、gradle 2.14には時々下記のコマンドを実行してもキャッシュが有効化されてしまう問題があり、2.14.1で修正されたという情報があった(未確認)。マニュアルに書いてあるコマンドは下記の通り。
gradle build --refresh-dependencies
方法3:gradle.buildにキャッシュの有効期間を0を設定する
gradle.buildに下記のように記述することで、キャッシュを無効にできる
configurations.all {
resolutionStrategy.cacheDynamicVersionsFor 0, 'minutes'
}
この方法は試してみたけど、有効に機能はしなかった。。。
結論:方法1が一番確実で便利。
Gitのリポジトリを強制的にリモートと合わせる
対象のgitリポジトリに移動して、下記のコマンドを順番に実行すると、ローカルリポジトリの情報をリモートの情報に合わせることができる。(ローカルの変更はすべて消えることに注意)
git fetch origin
git reset --hard origin/master
git clean -d -f