LoginSignup
3
4

More than 5 years have passed since last update.

ビルドしても更新が反映されなかったり、gitの環境が壊れてしまったときにの対処方法

Last updated at Posted at 2017-01-12

プログラムのビルドを何回もしていると、更新したはずのプログラムが反映されなかったり、ローカルリポジトリの環境が壊れてしまったりすることがある。
そんなときに環境を修正するための便利なコマンドがあったのでメモしておく

コンパイル時に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に下記のように記述することで、キャッシュを無効にできる

gradle.build
configurations.all {
    resolutionStrategy.cacheDynamicVersionsFor 0, 'minutes'
}

この方法は試してみたけど、有効に機能はしなかった。。。

結論:方法1が一番確実で便利。

Gitのリポジトリを強制的にリモートと合わせる

対象のgitリポジトリに移動して、下記のコマンドを順番に実行すると、ローカルリポジトリの情報をリモートの情報に合わせることができる。(ローカルの変更はすべて消えることに注意)

git fetch origin
git reset --hard origin/master
git clean -d -f
3
4
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
4