-
Notifications
You must be signed in to change notification settings - Fork 70
Configuration
In the next descriptions, APP_HOME is the root of your Play2 application you want to package as a WAR file.
Play2War is compatible with all Play2 versions, but Play 2.1 APIs are incompatibles with thoses from Play 2.0. So you have to choose the right version of Play2War:
- Play 2.0.x => Play2War 0.8.1 and earlier
- Play 2.1.x => Play2War 1.0.x
- Play 2.1.4+ => Play2War 1.1.x
- Play 2.2.x => Play2War 1.2.x and later
Then, add in APP_HOME/project/plugins.sbt:
- For Play 2.1.x and more applications:
addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "<Play2War_version>")All artifacts are availables on Maven central.
- For Play 2.0.x applications:
resolvers += "Play2war plugins release" at "http://repository-play-war.forge.cloudbees.com/release/"
addSbtPlugin("com.github.play2war" % "play2-war-plugin" % "0.8.1")There are two possibilities to configure the war plugin:
...
import ... // other imports
import com.github.play2war.plugin._
......
import ... // other imports
import com.github.play2war.plugin._
...val appVersion = "1.0-SNAPSHOT"
...
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA)
.settings(Play2WarPlugin.play2WarSettings: _*)
.settings(
// ... Your own settings here
)...
version := "1.0-SNAPSHOT"
<blank line>
Play2WarPlugin.play2WarSettings
<blank line>
// ... Your own settings herePlay2War settings must be inserted before your own settings.
## Configure servlet container versionYou have to choose on which kind of servlet container your Play2 application will be deployed:
- Servlet 3.1: Tomcat 8, Wildfly 8, Glassfish 4, Jetty 9, ...
- Servlet 3.0: Tomcat 7, JBoss 7, JBoss EAP 6, Glassfish 3, Jetty 8, ...
- Servlet 2.5: Tomcat 6, JBoss AS 5/6, JBoss EAP 5, Glassfish 2, Jetty 7, ...
If you get some 404 errors, you have probably choosen the wrong servlet container version.
val appVersion = "1.0-SNAPSHOT"
...
val main = play.Project(appName, appVersion, appDependencies)
.settings(Play2WarPlugin.play2WarSettings: _*)
.settings(
// ... Your own settings here
Play2WarKeys.servletVersion := "3.0"
)version := "1.0-SNAPSHOT"
...
Play2WarPlugin.play2WarSettings
Play2WarKeys.servletVersion := "3.0"
Don't look for any web.xml file in the generated WAR, Play2War uses annotation-driven servlet to be loaded.
val appVersion = "1.0-SNAPSHOT"
...
val main = play.Project(appName, appVersion, appDependencies)
.settings(Play2WarPlugin.play2WarSettings: _*)
.settings(
// ... Your own settings here
Play2WarKeys.servletVersion := "2.5"
)version := "1.0-SNAPSHOT"
...
Play2WarPlugin.play2WarSettings
Play2WarKeys.servletVersion := "2.5"
Play2War will generate a default war/WEB-INF/web.xml file for you if necessary (= doesn't exist). You can commit it in your SCM or modify it if needed (new filters, encoding, ...).
This war/WEB-INF/web.xml will be then embedded in the generated WAR.
Several other build parameters can be customized to fit your needs.
If you plan to use JBoss7, please read JBoss7 logging configuration instead.
You probably need to override default Play2 logging configuration because:
-
An external file will be written in
$USER_HOME/logs/... -
STDOUT appender pattern can be improved
Create a file APP_HOME/conf/logger.xml with the following content :
<configuration>
<conversionRule conversionWord="coloredLevel" converterClass="play.api.Logger$ColoredLevel" />
<appender name="STDOUT" class="ch.qos.logback.core.ConsoleAppender">
<encoder>
<pattern>%date - [%level] - from %logger in %thread %n%message%n%xException%n</pattern>
</encoder>
</appender>
<logger name="play" level="INFO" />
<logger name="application" level="INFO" />
<!-- Off these ones as they are annoying, and anyway we manage configuration ourself -->
<logger name="com.avaje.ebean.config.PropertyMapLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.core.XmlConfigLoader" level="OFF" />
<logger name="com.avaje.ebeaninternal.server.lib.BackgroundThread" level="OFF" />
<root level="ERROR">
<appender-ref ref="STDOUT" />
</root>
</configuration>You can embed custom WAR configuration files, such as MANIFEST.MF, web.xml, ...
For this, copy them in your APP_HOME/war folder. Don't forget to add subfolders !
Samples:
-
APP_HOME/war/myfile.txtwill result inmyapp.war!/myfile -
APP_HOME/war/META-INF/MANIFEST.MFwill result inmyapp.war!/META-INF/MANIFEST.MF -
APP_HOME/war/WEB-INF/web.xmlwill result inmyapp.war!/WEB-INF/web.xml
Several runtime parameters can be customized to fit your needs.
Continue with Usage.