[Scala]Maven + Scala + LiftのプロジェクトをGlassFish上にデプロイしてeclipseでデバッグする

2011年12月20日

なんか長いタイトルですが

要はMavenで作ったScala + LiftのプロジェクトをGlassFishにデプロイしたい

で、eclipseでGlassFishにデプロイしつつデバッグもしたい

という欲張り企画なんですが

eclipseのプロジェクト作成とか、Mavenのプロジェクト作成では

これらの要件を満たす設定になってくれないので

手動で設定を変更します。

必要な物

eclipseの環境構築は
やっぱりScala and Liftな環境をEclipseで開発したい!
を参照

GlassFishのインストール

まずはJava EE 6 SDKをインストールします。

このインストールで、GlassFishが同時にインストールされるはずです。

普通にインストールすると、c:\glassfish3にインストールされるはずです。

このとき、インストーラをダブルクリックで起動するとエラーになる場合

[shell]C:\> java_ee_sdk-6u3-windows-ml.exe -j "%JAVA_HOME%"[/shell]

とすればインストーラを起動できます。

eclipseからGlassFishを参照するように設定

インストールが完了したら、eclipseからGlassFishが見えるように設定します。

Open PerspectiveからJava EEを選択。

すると、ビューの下にServersタブが現れるので、その中で右クリック。
New – Serverを選択

右上のDownload additional server adaptersをクリック

出てきた画面で、Oracle GlassFish Server Adapterを選択
インストールが終わると、画面が閉じるので、またServersタブの中でNew – Serverを選択
すると、GlassFishの選択肢が増えているので、GlassFish 3.1.1を選択

この辺はそのままで、Finishをクリック。
インストール時に設定をいじっていたら、その情報を登録

これで、サーバの登録が出来たので、eclipse上からGlassFishを操作することが出来ます。

プロジェクトの作成

まずはeclipseでプロジェクトの新規作成をします。

Scala and LiftのプロジェクトをEclipse上に作成する

上記の記事を参考にすると、とりあえずScala + Liftのデバッグが出来るプロジェクトが出来上がっているはずです。

続いて、プロジェクトのRun Asで実行できるようにRun on Serverを使えるようにします。
Run on Serverというのは、先ほどServerタブで設定したGlassFish上でプロジェクトを実行できるようになるコマンドです。

一度プロジェクトをeclipse上から削除し、.projectファイルを開きます。

<buildSpec>

[xml]
<buildCommand>
<name>org.eclipse.wst.common.project.facet.core.builder</name>
<arguments>
</arguments>
</buildCommand>[/xml]

を追加

<natures>

[xml]<nature>org.eclipse.wst.common.project.facet.core.nature</nature>[/xml]

を追加

.settingsフォルダに

org.eclipse.wst.common.component ファイルを作成し
中身を以下のようにする
※deploy-nameはプロジェクト名を設定

[xml]<?xml version="1.0" encoding="UTF-8"?>
<project-modules id="moduleCoreId" project-version="1.5.0">
<wb-module deploy-name="プロジェクト名">
<wb-resource deploy-path="/" source-path="/EarContent" tag="defaultRootSource"/>
</wb-module>
</project-modules>[/xml]

もう一つ、org.eclipse.wst.common.project.facet.core.xml ファイルを作成し
中身を以下のようにする

[xml]<?xml version="1.0" encoding="UTF-8"?>
<faceted-project>
<runtime name="GlassFish 3.1.1"/>
<fixed facet="jst.ear"/>
<installed facet="jst.ear" version="6.0"/>
<installed facet="sun.facet" version="9"/>
</faceted-project>[/xml]

プロジェクトをインポート

これで、Run AsにRun on Server項目が追加されているはずです。

※これらの追加設定については、新規プロジェクト – Java EE – Enterprise Application Projectで作成したプロジェクトの設定を元にしています。
なので、バージョンが変わった場合、Enterprise Application Projectで作成したプロジェクトの設定をもとに設定を変更すれば良いはずです。

次に、GlassFishへデプロイする時のディレクトリ構成を設定します。

プロジェクトのプロパティを開いて、Deployment Assemblyを選択します。

Addボタンを押して、Folderを選択します。

src/main/resourcesとたどって、Finishを押します。

Deploy PathにはWEB-INF/classesを入力します。

同様にsrc/main/scalaも追加し、Deploy PathをWEB-INF/classesにします。

src/main/webappも同様に追加しますが、これのDeploy Pathは/のままにします。

libは、mavenから持ってくるのですが、めんどくさそうなので、ここはサボってしまいます。

プロジェクトディレクトリで

[shell]mvn package[/shell]

を実行

すると、targetディレクトリに

プロジェクト名-0.0.1-SNAPSHOT

という感じのディレクトリが出来るので、この中の

WEB-INF/libをフォルダでたどって追加します。

この項目のDeploy PathはWEB-INF/libを設定します。

一通り設定が完了したので、プロジェクトのRun Asから、Run on Serverを選んでみます。

出てきた画面で、そのままFinishを押すと、サーバが起動され、プロジェクトがデプロイされます。

あとは、ブラウザでlocalhost:8080に続いてプロジェクト名を入れる事で
画面にアクセス出来ます。
http://localhost:8080/ScalaLiftOnGlassFish

Eclipse,Lift,Scala

Posted by GENDOSU