Gradleでビルドがしたい
作業メモ。
JavaのアプリケーションのビルドをMaven、Antで書いてJenkinsで実行みたいなことを今までやってきたのですが、
XMLの設定ファイルをいじったり、プロパティファイルを書いたりが、あまりにも精神力をすり減らす作業なので別のやり方無いかなぁ。
(XMLを人力で書くのが、人類には早すぎると思う)
jenkinsのパイプラインをGroovyで書いてて、ビルドもコードで書けたらいいのになぁと思ってたところ
Gradleがそれっぽい?とうわけでGradleやっていきます。
さっそく、ホームページへ。
ご丁寧にOSごとに環境構築方法が書いてありますね。
Windows愛用者の私もニッコリ。
環境構築編
調達
へぇ、SDKMAN!ってやつでインストールするのがナウいのね。
ですが、今回は手動ダウンロード、アンド解凍。
ドキュメント入りのほうがよさそう、ということでComplete, with docs and sources
って方にしました。
ファイルの配置
ドライブ直下にC:\Gradle
って感じで、Gradleフォルダを新規作成。
そのなかに解凍したgradle-4.2.1
フォルダを丸ごと入れる。
環境変数に追加
いつもの環境設定画面を開いて
ctrl+e
-> 左側のPCで右クリック
-> プロパティ
-> システムの詳細設定
-> 環境設定
PathにさっきのパスC:\Gradle\gradle-4.2.1\bin
を追加。
環境変数、いつの間にか、一覧で表示されて編集できるようになってて感動した。
動作確認
コマンドプロンプトでgradle -v
すげー、一度も躓かずに動作確認できた。
とりあえずHello world編
さっそく、Getting Startedをやっていく。
(なんだか動画の講座もあるっぽいぞ…。至れり尽くせり)
このなかでも、Creating New Gradle Builds
ってのが初心者チュートリアルなんかな。
https://guides.gradle.org/creating-new-gradle-builds/
このチュートリアルの各種手順はUnix、Linuxのコマンドで書いてあるみたいです。
前に紹介したcmderでやるか同じWindowsのコマンドに読み替えてやる必要がありそう。
build.gradleとは
build.gradleというファイルで、依存関係の解決やタスクと呼ばれる作業単位を定義するらしい。
タスクはjenkinsでもあったな。
つまりはスクリプトをこのファイルに書き込むことで、ビルド手順とするということだろうか。
build.xmlとかpom.xmlみたいなもんかね。
XMLを書かなくてよいのは良い。
Gradle wrapperとは
このビルド作業をほかの端末でやる場合に、同じ環境を作らねばならないのですが、このGradle wrapperを使うとコマンド一発で環境構築ができますよということらしい。
確かにgradle wrapper
でできたgradlew.bat
を実行するとgradleのインストールと環境変数の設定をやってくれた。
(ダウンロードに少し時間がかかった)
もうひとつ新しく生成されていたgradlew
はUnix、Linux用のシェルスクリプトファイルらしい。
properties
よくあるproperties形式のパラメータ指定もできるぜ。とのこと
設定値はgradlew properties
で確認できるとのこと。
リリースバージョンとか、各種ディレクトリパスの定義はここでやればよさそうね。
コアタスク
よく使うような機能はコアタスクとしてあらかじめ定義されていて、すぐ使えるようになっているらしい。
このへんなんかAntっぽい。
タスクの定義と実行
こんな感じのcopyタスクを定義する。
(build.gradleファイルに書き込んでおく)
task copy(type: Copy) { from 'src' into 'dest' }
んで、gradlew copy
で実行。
どんなタスクが実行可能かはgradlew tasks --all
で確認できる。
おー、見事にコピーされてる。
プラグイン
このコアタイプはプラグインという形で配布されている。
プラグイン構文で導入できるらしい。
ちなみにこのplugin構文はファイルの先頭に書かないと怒られるっぽい。
(taskの前なのかな)
ねんがんのHello World
task内でprintln 'Hello, World!'
と書くことで、ねんがんのHello, Worldができる。
このチュートリアル内で使っているdoLast
みたいな、Gradle内だけで使える文法(こういうのDSLっていうのね)は 別のチュートリアルに入っているので興味のある人は見てねってことらしい。