Windows環境でシェルを動かす最もポピュラーな方法は Cygwin だとおもいますが、 Cygwinはインストールも大げさで自力でセットアップする部分が多いと思います。
「GitHub for Windows」を使えばシェルが動くようになり、 gitもお手軽に利用できるので「GitHub for Windows」をつかって、 scaratra を セットアップしてみたいと思います。
事前準備
事前にインストールしておくもの
Windowsの環境変数を設定しておくもの
windowsの環境変数 PATH に設定するもの
c:\Users\<ユーザID>\bin
<Jdkインストールディレクトリ>\bin
windowsのシンボリックリンクを作成する
これをやっておかないと、あとの作業でつまづきます。
(Git Shellが提供するコマンドでは windowsのパスとUnixぽいパスをうまくだましてくれるのですが、
javaに渡す引数はそのまま渡されてしまうようなので、シンボリックリンクで何とかしようという対応策です)
- コマンドプロンプトを管理者として起動します
mklink /D c:\c c:\
を実行します。(cというディレクトが、cドライブ直下となるようにする)
Git Shell でLinuxぽく作業する
Conscript をインストール
以下のコマンドを実行します
cd ~;
curl https://raw.github.com/n8han/conscript/master/setup.sh | sh
動作確認
cs --version
コマンドを実行して、色々ダウンロードされたあと、ヴァージョンと、Usage が表示されれば成功
giter8 をインストール
以下のコマンドを実行します
cs n8han/giter8
- これでセットアップしてくれるのですが、
bin/g8.bat
が作られて、 そのままでは、Git Shell でg8コマンドが実行できないです。
仕方ないので、bin/g8.bat
を参考に bin/g8
ファイルを作成します。 (以下をテキストエディタで作成)
#!/bin/sh
java ${CONSCRIPT_OPTS} -Xmx1G -jar "${HOME}/.conscript/sbt-launch.jar" "@file:///C:/Users/yanagawa.h/.conscript/n8han/giter8/g8/launchconfig" "$@"
動作確認
g8
コマンドを実行して、色々ダウンロードされたあと、ヴァージョンと、Usage が表示されれば成功
新しい scaratra プロジェクトを作成する
- プロジェクトを作成するディレクトリを予め作成して、そのディレクトリに移動します。
(たとえば以下のような感じで)
cd ~;
mkdir newPrj
cd newPrj
g8 scalatra/scalatra-sbt
- 対話的に入力を求められるので、以下のような感じで入力していきます
organization [com.example]: jp.que.ti
package [com.example.app]: sample
name [My Scalatra Web App]: foo
scalatra_version [2.2.0]:
servlet_name [MyScalatraServlet]:
scala_version [2.10.0]: 2.10.1
version [0.1.0-SNAPSHOT]: 0.0.1-SNAPSHOT
Template applied in .\foo
scaratra プロジェクトをビルドする
sbt
Webアプリケーションを起動する
container:start
動作確認
- localhost:8080/ にアクセスして、 「Hello, world!」が表示されれば成功
- ソースの変更をソースに反映させたい場合は、以下も実行
~ ;copy-resources;aux-compile
container:stop
warファイルを作成する
- sbt コマンド待ちの状態で、以下を実行します。(
<プロジェクトディレクトリ>/target/scala-2.10
以下に作成されます )
package
Eclipse用の設定ファイルを作成する
- plugins.sbt に sbteclipse-plugin の依存ライブラリを追記します
cd <プロジェクト名>
としてから (今回の例では cd foo
) 以下を実行します。 ( 参考:本家のIDEサポートページ )
cat <<'EOF' >> project/plugins.sbt
addSbtPlugin("com.typesafe.sbteclipse" % "sbteclipse-plugin" % "2.2.0")
EOF
eclipse
IntelliJ IDEA用の設定ファイルを作成する
- plugins.sbt に sbt-idea プラグインの依存ライブラリを追記します
cd <プロジェクト名>
としてから (今回の例では cd foo
) 以下を実行します。 ( 参考:本家のIDEサポートページ )
cat <<'EOF' >> project/plugins.sbt
addSbtPlugin("com.github.mpeltonen" % "sbt-idea" % "1.4.0")
EOF
gen-idea
追記
最初はうまくいっていた、scalatra の新規プロジェクト作成ですが、
エラーが発生するようになったしまいました。
(原因解明できていません。いろいろ環境いじっていたので、何がきっかけかもよくわからず。。。)
Windowsでsbtを使っていると、なぜかハマることが多いような気がします。
$ g8 scalatra/scalatra-sbt
java.lang.IllegalArgumentException: Invalid wildcards +refs/pull/*/head:refs/remotes/origin/pr/*
at org.eclipse.jgit.transport.RefSpec.(RefSpec.java:142)
at org.eclipse.jgit.transport.RemoteConfig.(RemoteConfig.java:176)
at org.eclipse.jgit.api.CloneCommand.fetch(CloneCommand.java:151)
at org.eclipse.jgit.api.CloneCommand.call(CloneCommand.java:121)
at giter8.Apply$class.clone(apply.scala:38)
at giter8.Giter8.clone(giter8.scala:3)
at giter8.Apply$class.inspect(apply.scala:21)
at giter8.Giter8.inspect(giter8.scala:3)
at giter8.Giter8.ghInspect(giter8.scala:48)
at giter8.Giter8.run(giter8.scala:24)
at giter8.Giter8.run(giter8.scala:12)
at giter8.Giter8.run(giter8.scala:3)
at xsbt.boot.Launch$.run(Launch.scala:55)
at xsbt.boot.Launch$$anonfun$explicit$1.apply(Launch.scala:45)
at xsbt.boot.Launch$.launch(Launch.scala:69)
at xsbt.boot.Launch$.apply(Launch.scala:16)
at xsbt.boot.Boot$.runImpl(Boot.scala:31)
at xsbt.boot.Boot$.main(Boot.scala:20)
at xsbt.boot.Boot.main(Boot.scala)
Error during sbt execution: java.lang.IllegalArgumentException: Invalid wildcards +refs/pull/*/head:refs/remotes/origin/pr/*