memorandum

Webアプリ開発などを中心としたITに関するメモのブログです。

Gradleで特定の名前のサブディレクトリリストを取得する方法

2016/01/11
2021/05/05

滅多に使わないかもしれないマニアックな話題。
Gradle+IntelliJ IDEAで開発している時、idea.module.excludeDirsプロパティにディレクトリのfileオブジェクトのリストを設定すると、そのディレクトリはスキャンの対象から外され、内容が変化してもIntelliJの動作がもたつくことがなくなる。
参考:IntelliJのインデックス対象から除外する方法

このとき、excludeDirsはただのリストなので、a, b, c, というディレクトリの下にあるbuild/というディレクトリをまとめて無視したいと思っても、a/build, b/build, c/build をそれぞれ設定する必要がある。
これをbuildという名前で一括する方法の話。

続きを読む...

MacのSourceTree が異常に重たい場合の対処

2016/01/04
2021/02/25

新年最初のエントリ、大したことのない内容ですが・・

Gitの操作ではコマンドとSourceTreeを併用しているのだが最近SourceTreeが異常に重たかった。

下記にあるように、内臓GitではなくシステムGitを使うように設定することで改善した。
Source tree painfully slow on mac

以前は日本語でこの問題をGoogle検索していて見つからなかったのだが、英語で検索したらあっさり見つかった。
・・ということで、改めて言うことでもないが、教訓。
問題にぶつかったら英語で検索すること。
当たり前だが、日本語と英語では情報量が違いすぎる。

続きを読む...

GradleのContinuous BuildでSpring Bootアプリ実行中にリソース変更を反映する

2015/12/20
2021/02/25

タイトルの内容は、もともとできるんじゃないの?という感じもするかもしれないが、それではうまくいかないケースがあり、それをGradleのContinuous Build機能を使ったら何とか実現できた、という話。

Continuous Build
http://gradle.org/feature-spotlight-continuous-build/
https://docs.gradle.org/current/userguide/continuous_build.html

少し長いので、順序立てて説明。

続きを読む...

Gradleで依存関係が含まれているかを判定する方法

2015/12/16
2021/02/25

Gradleのあるプロジェクトが、あるdependencyを直接持っているかどうかは以下で確認できる。

boolean hasDependency(Project project, String group, String module) {
    project.configurations.compile.incoming.resolutionResult.allComponents.any {
        it.group == group && it.name == module
    }
}

しかし、これだと推移的依存関係が判定できない。

続きを読む...

IntelliJのインデックス対象から除外する方法

2015/12/11
2021/02/25

IntelliJ IDEAで開発していると、プロジェクト内のファイルが自動的にインデックスされて検索などに利用される。
この機能によって、何かのツールが生成したファイルやログファイルなど、スキャンしてほしくないファイルまでスキャンされ、しかもそれらが頻繁に変更されて何度もスキャンされるため非常に動作が重たくなってしまうことがある。

これを回避するには、build.gradleでideaプラグインを適用して除外してやればいい。

続きを読む...

Gradle実行時のメモリオプション指定方法

2015/12/11
2021/02/25

Gradleを実行する時のメモリを調整したい場合、いつでも下記に説明されているようなorg.gradle.jvmargsを使えば良いとつい最近まで思っていた。
https://docs.gradle.org/current/userguide/build_environment.html
しかしこのオプションが有効なのは、上記で説明されている通りデーモンとして起動した場合だ。
デーモンとして起動しない場合は適用されないので注意。
だから、gradle.propertiesにorg.gradle.daemon=falseと書いておきながらorg.gradle.jvmargs=...とか書いていても意味がない。

デーモン起動でない場合にメモリなどのJVMパラメータを指定したい場合はGRADLE_OPTS, JAVA_OPTSを使うといいらしい。
(これも上記ドキュメントで説明されているが)

先日、Travis CIでの実行時にのみメモリ調整が必要なケースがあり、上記の違いを理解した。
なおTravis CIならば、.travis.ymlに例えば

env:
  global:
  - GRADLE_OPTS="-Xmx1024m -Xms256m -XX:MaxPermSize=256m -XX:PermSize=256m"

とか書けばいい。

続きを読む...

Spring BootのプロファイルにGitコミットハッシュ値を含める

2015/12/11
2021/02/25

今起動しているSpring Bootアプリはどのコミットでビルドされたものなのか?
を確認できるようにしたいと思い、やり方を探ってみた。

前提として、ビルドにはGradleを使う。
AndroidアプリなどでもGradleを使ってSHAハッシュ値をアプリの中に含めたりしていたが、それと似たようなことをやる方法。

続きを読む...

AndroidのCIでbuild-toolsの新しいバージョンが見つからない場合の対処

2015/12/06
2021/02/25

久しぶりにAndroid-ObservableScrollViewのAndroid SDKのバージョンなどをアップデートしたが、Travis CIでもwerckerでもビルドが失敗してしまった。

もちろんローカルでは成功している。

API Levelの問題などではなく、build-tools-23.0.2が見つからなかったというもの。

結論としては、toolsを先にアップデートすれば良い。

続きを読む...

AndroidのテストタスクだけGradleでログ出力する

2015/12/01
2021/02/25

久々のAndroid関連ネタ。
Android-ObservableScrollViewでは、なるべくカバレッジ100%になるようテストを書こうとしている。
しかしテストが増えてきたせいか、Travis CIでのテスト実行中に出力がない時間が10分以上続いてしまい、ビルドが失敗することが多くなってきた。
テスト系のタスクだけもう少しログ出力させられないか?
を解決する方法について紹介する。

まず、テスト系限定でなく、すべてのタスクに対してINFOレベルでログ出力するのならGradle的には以下のように--infoなどをつければいい。

./gradlew connectedCheck --info

しかしすべてのタスクがINFOレベルで出力されるのは
見づらくなるだけなので避けたい。

続きを読む...

© 2010 ksoichiro