今回の目的は以下。
- Jerseyの簡単なサンプルを書く(HelloWorld返すだけ)
- Jettyを組み込んで実行可能なwarにしたい(winstoneとかあるみたいだけど、Jettyで。)
- Mavenは嫌なのでGradleでやりたい
Jerseyを触ろうと思ったけどライブラリどれが必要なのかわからなかったし、Gradleもwarningの原因わかんないしどのtaskで何が書けるかわからなかったし、Jettyもwarに組み込んで実行可能な状態にするにはどうすればよいかわからなかったし、で、結局1日使った。
成果物はGitHubにあげておきます
https://github.com/ryozi-tn/JerseyExample
(初めてgithub"らしい"使い方したかもしれない)
以下見どころとか。
実行可能なWar
Jettyを組み込んでいるので実行可能です。
・・・ただ、この辺りの情報があんまりない感じで、War内にあるクラスを使ってJettyサーバを立ち上げて、自身のWarをWebappsに配備するといったことはできる、というのはいくつか見たのだけど、そのJettyサーバを立ち上げるためにどうすればいいのか、というのが全くなかった。
Jar(やWar)の中にJarを入れて呼び出せる形にするには、ManifestにClass-Path書いたりしてもだめで、ひと手間加えないといけない。自分が知る限りだと、ClassLoaderを書いてJarを展開して内部にあるJarをさらに展開してClassを読み込めるようにする・・・ぐらいしかないと思ってる。
それを書いてもよかったんだけど、Jarはzipファイルなので、展開して1個のJarになるようにすればよい。ただ、ビルドの時間が増えるのが辛い。
jenkinsも実行可能なwarを配布してるけどどうやってるんだろう。
gradleで書いた
これが本編。実行可能なWarを作るために頑張りました。割とシンプルに書けたと思ってる。
gradle wrapperいいゾ〜これ
おわり
プロジェクト名からだと何やってるかわかんねえなこれ。Jerseyとかおまけみたいなもんだし・・・