今更感がありますが、Gradleを初めてちゃんと触れたので、メモメモ
メモ
- Mac OSXでのJAVA_HOME設定
-
$ export JAVA_HOME=`/usr/libexec/java_home`
バッククォートです。
注意点は、JDK変えた時に改めてexportしないといけないことですか。
$ /usr/libexec/java_home --help
Usage: java_home [options...]
Returns the path to a Java home directory from the current user's settings.
ログインユーザの環境でのjava_homeを返します。 - gvmもといSDKMAN
-
Groovy/Grails関連のパッケージ管理ソフト
$ curl -s "https://get.sdkman.io" | bash
でインスト - $ gvm install gradle
-
gradleのインストール
Installing: gradle 3.3 Done installing! Setting gradle 3.3 as default.
で終わり。 - バージョンを指定したインスト
-
$ gvm list gradle
DL可能なバージョンを表示
$ gvm install gradle 3.2.1
など。 - デフォルトバージョンの設定
- $ gvm default gradle [version]
- $ gradle --version
- とりあえず、パス通っているかを確認
- Groovy / 文字列
-
'シングルクォート:文字列(charじゃない)
"ダブルクォート:GString($で変数を入れることができる...「なんだと」) - Groovy / メソッド呼び出し時のカッコ
-
引数がないとき、メソッドの引数としてメソッドを使うとき、式の右辺でメソッドを使うときは、()が必須
その他のケースで、引数があるときはなくてもOK
1つのメソッド呼び出しする行の時だけですね。 - Groovy / defによる変数の宣言
-
def age = 99
型を省略して変数を宣言できます。
Javaにおける、Object型の変数と同じ扱いになるそうです。 - ダックタイピング
- 実際の値が、処理に適したものかどうかでメソッドやプロパティを捉える。
- クロージャ
-
{}で定義する
def closure = { param -> println "$param" }
引数に対して->処理を行う
$itをつかって、引数を省略することも可能
呼び出しは、
closure.call()または、closure()
カッコの省略はメソッドと同様。
<<によってタスクに定義することも可能
task printParam << { println "$it" }
分けて書く場合、
def closure = { param-> println "$param" }
task printParam {}
printParam.leftShift(closure) - built-in task
-
あらかじめ利用できるgradleのタスク
$ gradle tasksで一覧表示が可能
Build Setup tasks / Help tasksのグループが確認できる$ gradle tasks The Task.leftShift(Closure) method has been deprecated and is ..scheduled to be removed in Gradle 5.0. Please use Task.doLast(Action) instead. at build_441sas0jfgrsmxsyzaz0sazay.run (/Users/Shogo/gitdir/gradle_git/build.gradle:1) :tasks ------------------------------------------------------------ All tasks runnable from root project ------------------------------------------------------------ Build Setup tasks ----------------- init - Initializes a new Gradle build. [incubating] wrapper - Generates Gradle wrapper files. [incubating] Help tasks ---------- buildEnvironment - Displays all buildscript dependencies declared in root project 'gradle_git'. components - Displays the components produced by root project 'gradle_git'. [incubating] dependencies - Displays all dependencies declared in root project 'gradle_git'. dependencyInsight - Displays the insight into a specific dependency in root project 'gradle_git'. dependentComponents - Displays the dependent components of components in root project 'gradle_git'. [incubating] help - Displays a help message. model - Displays the configuration model of root project 'gradle_git'. [incubating] projects - Displays the sub-projects of root project 'gradle_git'. properties - Displays the properties of root project 'gradle_git'. tasks - Displays the tasks runnable from root project 'gradle_git'. To see all tasks and more detail, run gradle tasks --all To see more detail about a task, run gradle help --task
BUILD SUCCESSFUL Total time: 0.957 secs - とりあえずのテスト
-
$ vim build.gradle
task hello << { println 'Hello Gradle world!'
$ gradle hello Starting a Gradle Daemon (subsequent builds will be faster) The Task.leftShift(Closure) method has been deprecated and is scheduled to ..be removed in Gradle 5.0. Please use Task.doLast(Action) instead. at build_441sas0jfgrsmxsyzaz0sazay.run ..(/Users/Shogo/gitdir/gradle_git/build.gradle:1) :hello <-----タスク名 Hello Gradle world! <-----タスクの出力 BUILD SUCCESSFUL Total time: 4.332 secs
- $ gradle properties
- ビルドスクリプトで定義されているプロパティの一覧を表示
- gradleのデバッグ
-
-q:エラーログのみ出力する
-i:INFOレベル
-s:例外のスタックトレースを表示
-S:例外のフルスタックトレースを表示
-d:通常のスタックトレースを含むデバッグログを表示 -
$ gradle help --task
- タスクを指定してヘルプを確認できる
- ビルドスクリプトファイル名をデフォルト(build.gradle)以外のファイル名にする場合
-
$ gradle -b build_new.gradle hello
-bオプションでビルドファイルを指定する - initタスク
-
手順
- プロジェクトルートとなるディレクトリを作成する
- そのディレクトリに移動する
- $ gradle init --type java-library
- タスクのライフサイクル
-
- Internal:内部的にしか参照できない機能。ユーザが直接使うことはできない。
- Incubating:実験的な公開
- Public(default):公開中 どのライフサイクルステータスもつけられていないときはパブリック
- Deprecated:廃止予定のタスク
- JCenter
- Mavenレポジトリ
- dependency
-
gradle init --type java-libraryで作ったbuild.gradle
dependencies { // The production code uses Guava compile 'com.google.guava:guava:20.0' // Use JUnit test framework testCompile 'junit:junit:4.12' }
compile:プロダクションコードのコンパイルと実行に必要なライブラリを記載 test:テストコードのコンパイルと実行に必要なライブラリを記載 - Google Guava
- Javaのコアライブラリ
- タスクの一覧をGUIで確認する
- $ gradle --gui
- ビルドする
-
実行すると、プロジェクトルート配下にbuildディレクトリができます。$ gradle build Starting a Gradle Daemon (subsequent builds will be faster) :compileJava Download https://jcenter.bintray.com/com/google/guava/guava/20.0/guava-20.0.pom Download https://jcenter.bintray.com/com/google/guava/guava-parent/20.0/guava-parent-20.0.pom Download https://jcenter.bintray.com/com/google/guava/guava/20.0/guava-20.0.jar :processResources UP-TO-DATE :classes :jar :assemble :compileTestJava :processTestResources UP-TO-DATE :testClasses :test <-- テストの実行 :check :build BUILD SUCCESSFUL Total time: 17.849 secs
再度、$ gradle build 実行しても、変更がないタスクはスキップされます。 - $ gradle clean
- buildディレクトリが削除されます
- テストの実行結果
-
build/reports/tests/test/index.html
にテスト結果が記載されます。 - テストコードの実行
- $ gradle test
- $ gradle tomcatRunWar
- Gradleでは型の宣言が必要
- 最低でもdefが必要(Object型)
- システムプロパティの使用
-
System.properties['xxx']
$ gradle -Dxxx=hoge [task]
もしくは、gradle.propertiesに記述する
systemProp.message=hoge
この場合、自動でプロパティファイルを参照するので、
引数は不要
$ gradle [task] - taskの定義
-
タスクの設定
<<あり:実行処理
<<なし:設定処理
0 件のコメント:
コメントを投稿