(その1)
JavaEEからJakartaEEへ、大きな変化のために、開発環境も激変しました。これから、数回にわたり、今後のJakartaEE用の開発環境の構築について解説します。なお、前後しますが、NetBeansのインストール+日本語化は、次回です。
NetBeansのプロジェクト
まず、大きな問題の1つは、最新のApache NetBeansでは、従来のNetBeansのプロジェクトがそのままでは動かないことです。 「ファイル」⇒「新規プロジェクト」から、 「Java with ant」の中の「Java web」⇒「web Application with Existing Sources」と選択して、新しいプロジェクトに移すことができるのですが、面倒な手順を踏んで、ようやく完成しても、いざ実行してみると、見事にエラーになって止まります。なんてこったい!
結局、新しくプロジェクトを新規作成してソースコードを移せばよいと思い、「 web Application with Existing Sources」 の代わりに、「 web Application 」を選んで、ソースコードをコピーしたり、必要な設定ファイルを追加したりしました。し、しかし、ですね。これはやはり、面倒すぎます。
そもそも、Maven プロジェクトが主流ですよね。どうせ移すなら、そう、Gradleとまでいかなくても、せめて、 antじゃなく Mavenでやりたい。しかし、見ると 「Maven」⇒「Webアプリケーション」 という選択肢があるじゃないですか!
Mavenプロジェクト
結論から言いましょう。できたのは、REST開発用のプロジェクトでした。マイクロサービスのために、サーバーサイドを作るのなら、これでOKですが、残念ながらJSF用ではありません。index.xhtmlファイルを作り、不要なフォルダを消したりすると、JSF用になるのですが、毎回では、面倒すぎます。
そこで、もう少し探してみると、「Maven」⇒「原型からのプロジェクト」というのがありました。ネットで「JakartaEE用のarchetypeを作った」という記事を見かけますが、それを利用するプロジェクトです。あらかじめたくさんのarchetypeが登録されています。
"JakartaEE" で検索すると、16個も登録されているので、使えそうなものを全部試してみました。しかし、REST用のものは立派なのがたくさんあるのですが、JSF用は、これと言えるほどのものは・・・
プロジェクトビルダー
「ええい、こうなったら自分でarchetypeを作ってしまおう」とそう思ったのでした。で、いろいろ調べてみたのですが、仕組みは以外と簡単なもので、内部にひな形のプロジェクトを持っていて、使用時に必要な箇所だけ書き換えてプロジェクトを出力できるというものです。それでも、Mavenの文法がいろいろあり、わかりづらいことはありますが。
「うーん、これだったら、Javaでも作れるのでは?」
そう思ったので、あまり後先も考えす、JavaSEのMavenプロジェクトを作って、プログラムを書きました。半日ほど、作業して、70行程度の小さなクラス、"ProjectBuilder" ができました。使ってみたらかなり便利でした。
ProjectBuilderを実行して、プロジェクト名を入力するだけで、新規のJakartEEプロジェクト(JSF用)ができます。後はそれを開いて使うだけ。簡単です。
**ProjectBuilderは、《ここ》からダウンロードできます。**解凍するとbuilderというプロジェクトフォルダができるので、仕事用のプロジェクトを入れるフォルダの中にコピーしておきます。それをNetBeansで開いて、実行すると、次の図のように、"プロジェクト名>" というプロンプトがでるので、作成したいプロジェクトの名前(ここではsample)を入力します。
これだけで、sampleというプロジェクトがカレントディレクトリにできているので、後は「ファイル」⇒「プロジェクトを開く」で、それを開きます。次の図のようなプロジェクトが生成されていることがわかります。
必要と思われる設定ファイルはすべて、最初から入っています。persistence.xmlも、jdbc/mydb というデータソースを使う設定で作成済です。データソース名を変えたいときは、その部分だけ変更します。
後は、 beansパッケージにバッキングビーンを作成するだけです。 なお、configパッケージには、JSF2.3で必要になる「JSFのバージョンを指定するためのクラス」が入っています。これは設定ファイルのようなものなので、一切触る必要はありません。
次回のために
当面、もっといいJSF用のarchetypeが出てくるまでは、ProjectBuilderでいいと思います。やってることは同じですからね。
たくさんの古いプロジェクトを、新しいMavenに一括変換するConverterというクラスもつくりました。これは、そのうち、お話しますね。次回は、JDK、NetBeans、Payara serverのインストールと、データベースを利用するための、「データソース」の作り方などを解説します。