仕事で作っているWebアプリをビルドする必要があるため。ウチの会社だと、ともすれば、EclipseでビルドしたEarを人間様がどこかに配置するというスットコドッコイな運用が行われたりするが、私が管理するプロジェクトでそんなことはさせない・・・という思いだけはいつもある。
思いだけではどうにもならないワケだが、10年ぶりにその機会はやってきた。その昔はもちろんAntでスクリプトを書き、「Antでループを書くにはどうしたらいいのだ?」と途方に暮れつつ何かを作った覚えはある。しかし、2017年に新たにAntスクリプトを生み出すのは、社会道徳に反するだろう。
となれば、選択肢はMavenとGradleらしい。クリック力全開にしてその両者について調べてみたところ、Mavenが主流派のようだがMavenはプロジェクト情報を入れると様々なことをあんじょうよろしく管理してくれるツールで、ビルドはその一つに過ぎないらしい。こちとら古い人間なので、ビルドツールに求めることはカッチョいいmakeである。そんな押しつけがましいものは要らない。
一方、Gradleは要するにGroovyを内部DSLに採用したRakeである。シェルスクリプトが使えないWindowsサーバで運用するサーバサイドJavaにおいて、Groovyは最後の希望。当然、ファイルを作ったり消したりまとめたりFTPしたり不定形なことをやたらとやりたくなるにきまっているのだから、ここで選ぶべきはGradleで決まりである。
Gradleを使うことは決まった。さまざまなことをGroovyに任せて楽したい気持ちで一杯だが、何はともあれやらなくてはいけないのはビルドである。
今回のプロジェクトのディレクトリ構成はこんな感じになっている。
- project root
- subproject root
- module1 -> jarになる
- web -> module1とmodule2のjarを含んだwarになる
- ear -> web.warを含んだearになる
- common module root
- module2 -> jarになる
- subproject root
いきなり規約に則ってないけど、私が決めたわけじゃないのでしょうが無い。ビルド構成はearディレクトリに置きたい。
知りたいことは
- jarの作り方
- warの作り方
- earの作り方
- マルチプロジェクトのコントロールの仕方
である。