[Scala]Maven + Scala + LiftのプロジェクトをGlassFish上にデプロイしてeclipseでデバッグする
なんか長いタイトルですが
要はMavenで作ったScala + LiftのプロジェクトをGlassFishにデプロイしたい
で、eclipseでGlassFishにデプロイしつつデバッグもしたい
という欲張り企画なんですが
eclipseのプロジェクト作成とか、Mavenのプロジェクト作成では
これらの要件を満たす設定になってくれないので
手動で設定を変更します。
必要な物
- eclipseは「Eclipse IDE for Java EE Developers」
- scala 2.9.1
- maven 3.0.3
- java_ee_sdk(ここにGlassFishが入っている)
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が見えるように設定します。
すると、ビューの下に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を選択します。
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