Gradle

導入

/c/toolsにダウンロードする。 binフォルダにパスを通しておく。

(cd ~/downloads && curl -LO https://services.gradle.org/distributions/gradle-5.1.1-bin.zip) &&
mkdir /c/tools; unzip -d /c/tools/ ~/downloads/gradle-5.1.1-bin.zip

Kotlin

gradle init

プロジェクトの gradle バージョンを上げる

./gradlew wrapper --gradle-version=<version>

# ex:
./gradlew wrapper --gradle-version=5.4.1

Ref: https://docs.gradle.org/current/release-notes.html

gradle 自体のバージョンを上げる

gradle/wrapper/gradle-wrapper.propertiesを編集する。

distributionUrl=https\://services.gradle.org/distributions/gradle-5.3-all.zip

https://services.gradle.org/distributions/ をみると一覧がわかる。

CLI

新規プロジェクトを作成する。

gradle init

デーモンなしで実行

./gradlew --no-daemon build

build.gralde

依存ライブラリで定義している変数の上書き

ext[]を使う。 例えば、Spring はjunit-bomのバージョンをjunit-jupiter.versionで指定しているが、これを新しいバージョンに置き換える。など。 https://github.com/spring-projects/spring-boot/blob/master/spring-boot-project/spring-boot-dependencies/pom.xml#L123

ext['junit-jupiter.version'] = '5.4.0'
dependencies {
    testImplementation 'org.junit.jupiter:junit-jupiter'
}

FAQ

Failed to notify project evaluation listener

(特に DB とかで)ビルドして出来上がった jar に依存関係がダウンロードされていない

キャッシュのせいらしい。

その 1 その 2

gradle clean BuildCache
# or ./gradlew clean BuildCache

java.nio.file.AccessDeniedException

.cache ディレクトリに権限を与える

sudo chown -R root:${USER} /c/linux_home/.cache/
sudo chmod -R 775 /c/linux_home/.cache/

https://stackoverflow.com/questions/47164357/android-update-causing-error-errorjava-nio-file-accessdeniedexception-home-p

Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory()

こんなエラーがでた。gradle wrapper のバージョン変更後などに起こる?

Could not create service of type ScriptPluginFactory using BuildScopeServices.createScriptPluginFactory().
> Could not create service of type FileHasher using BuildSessionScopeServices.createFileSnapshotter().

~/.cacheの権限がないことが原因。sudo ./gradlewでも動くが、sudoしなくてもいいようにchownする。

sudo chown -R ${USER}:${USER} /c/linux_home/.cache/
sudo chmod -R 775 /c/linux_home/.cache/

# 一度buildディレクトリを消さないとPermission Deniedされる
rm -fr build
# その後、プロジェクトルートで(sudoはつけない)
./gradlew

Ref: https://stackoverflow.com/a/50598582