在公司的项目是用Play Framword2.2.6 框架进行开发的 ,然后当项目需要部署到生产环境时,碰到一个问题,就是公司服务器都是统一用Tomcat作为容器的,这就需要将项目打包成war包进行部署。Play2及以后的版本并不支持war包,因为其有自己的容器,不需要tomcat。

于是Google了一遍,发现github上面有个Play的插件,可以将项目打包成war包。地址是https://github.com/play2war/play2-war-plugin。步骤很简单,按照上面说的方法进行配置即可。在project/plugins.sbt文件里添加下面代码


resolvers += Resolver.url("sbt-plugin-snapshots", url("http://scalasbt.artifactoryonline.com/scalasbt/sbt-plugin-snapshots"))(Resolver.ivyStylePatterns)


addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "1.2.1")


然后再/project目录下面建一个Build.sbt,添加如下内容

import sbt._
import Keys._
import play.Project._
import com.github.play2war.plugin._
object ApplicationBuild extends Build {
val appName = "playwebapp"
val appVersion = "1.0-SNAPSHOT"
val appDependencies = Seq(
// Add your project dependencies here,
javaCore,
javaJdbc,
javaEbean
 )
 
 val main = play.Project(appName, appVersion, appDependencies)
.settings(Play2WarPlugin.play2WarSettings: _*)
.settings(
Play2WarKeys.servletVersion := "3.0"
 )
}

其中Play2WarKeys.servletVersion := "3.0" 是表示你要的Servelt是3.0的,对应Tomcat7.0,2.5对应Tomcat6,这个根据实际情况来设定。


OK了,在项目里面 运行 Play war就可以打包成你想要的war了。




Logo

权威|前沿|技术|干货|国内首个API全生命周期开发者社区

更多推荐