前のエントリで、「TomcatにWARファイルをデプロイ…」なんてことを書いてましたが、xsbt-web-pluginを使うのにこれまたてこずっていたという…。
う〜ん、久しぶりにこの辺りを触ると、だいたいハマりますね(笑)。
今回使用した、sbtとxsbt-web-pluginのバージョンは
名前 | バージョン |
sbt | 0.12.1 |
xsbt-web-plugin | 0.2.11.1 |
となります。
で、WARファイルの名前を設定しようと過去の自分のエントリや以下の書籍を見つつ、

- 作者: 竹添直樹,島本多可子
- 出版社/メーカー: 翔泳社
- 発売日: 2012/07/03
- メディア: 単行本(ソフトカバー)
- 購入: 6人 クリック: 54回
- この商品を含むブログ (14件) を見る
こんな感じに設定すると
artifactName in packageWar := { (config: String, module: ModuleID, artifact: Artifact) => artifact.name + "." + artifact.extension }
怒られます…。
/xxxxx/tomcat-stuck-thread/build.sbt:15: error: type mismatch; found : (String, sbt.ModuleID, sbt.Artifact) => java.lang.String required: (sbt.ScalaVersion, sbt.ModuleID, sbt.Artifact) => String (config: String, moduleID: ModuleID, artifact: Artifact) => ^ [error] Type error in expression
これはまた、バージョンアップで何か変わったな…ってことで軽く調べてみました。で、見つけたのがこちら。
http://eed3si9n.com/ja/sbt-0120-changes
そして、こんな記述が。
artifactName の型が (ScalaVersion, ModuleID, Artifact) => String となった。
まあ、エラーも同じこと言ってますからね…。sbt 0.12で、またいろいろ変わったんですねー。
というわけで、こういう感じに設定してみると
artifactName in packageWar := {
(scalaVersion: ScalaVersion, module: ModuleID, artifact: Artifact) =>
artifact.name + "." + artifact.extension
}
うまくWARファイルの名前を変更することができます。
> package-war [info] Updating {file:/xxxxx/tomcat-stuck-thread/}default-ebd9d4... [info] Resolving org.mortbay.jetty#servlet-api;2.5-20081211 ... [info] Done updating. [info] Compiling 1 Scala source to /xxxxx/tomcat-stuck-thread/target/scala-2.9.2/classes... [info] Packaging /xxxxx/tomcat-stuck-thread/target/scala-2.9.2/tomcat-stuck-thread.war ... [info] Done packaging.
この時のbuild.sbtはこちら。
name := "tomcat-stuck-thread" version := "0.0.1" scalaVersion := "2.9.2" seq(webSettings :_*) libraryDependencies ++= Seq( "javax.servlet" % "javax.servlet-api" % "3.0.1" % "provided", "org.mortbay.jetty" % "jetty" % "6.1.22" % "container" ) artifactName in packageWar := { (scalaVersion: ScalaVersion, module: ModuleID, artifact: Artifact) => artifact.name + "." + artifact.extension }
project/plugins.sbtはこちら。
libraryDependencies <+= sbtVersion(v => v match { case "0.11.0" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.0-0.2.8" case "0.11.1" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.1-0.2.10" case "0.11.2" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.2-0.2.11" case "0.11.3" => "com.github.siasia" %% "xsbt-web-plugin" % "0.11.3-0.2.11.1" case x if (x.startsWith("0.12")) => "com.github.siasia" %% "xsbt-web-plugin" % "0.12.0-0.2.11.1" })