Skip to content
This repository was archived by the owner on Apr 4, 2026. It is now read-only.

Configuration

Damien Lecan edited this page Feb 6, 2014 · 39 revisions

In the next descriptions, APP_HOME is the root of your Play2 application you want to package as a WAR file.

Add Play2War plugin

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")

Import Play2War SBT settings

In APP_HOME/project/Build.scala, add:

...
import ... // other imports
import com.github.play2war.plugin._
...

Add all Play2war settings in your project configuration

val appVersion      = "1.0-SNAPSHOT"
...
val main = PlayProject(appName, appVersion, appDependencies, mainLang = JAVA)
  .settings(Play2WarPlugin.play2WarSettings: _*)
  .settings(
    // ... Your own settings here
)

Play2War settings must be inserted before your own settings.

## Configure servlet container version

You 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.1"
)

Don't look for any web.xml file in the generated WAR, Play2War uses annotation-driven servlet to be loaded.

Servlet 3.0 container configuration

val appVersion      = "1.0-SNAPSHOT"
...
val main = play.Project(appName, appVersion, appDependencies)
  .settings(Play2WarPlugin.play2WarSettings: _*)
  .settings(
    // ... Your own settings here
    Play2WarKeys.servletVersion := "3.0"
)

Don't look for any web.xml file in the generated WAR, Play2War uses annotation-driven servlet to be loaded.

Servlet 2.5 container configuration

val appVersion      = "1.0-SNAPSHOT"
...
val main = play.Project(appName, appVersion, appDependencies)
  .settings(Play2WarPlugin.play2WarSettings: _*)
  .settings(
    // ... Your own settings here
    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.

Other build parameters

Several other build parameters can be customized to fit your needs.

Configure logging

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>

Embed custom WAR configuration files

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.txt will result in myapp.war!/myfile
  • APP_HOME/war/META-INF/MANIFEST.MF will result in myapp.war!/META-INF/MANIFEST.MF
  • APP_HOME/war/WEB-INF/web.xml will result in myapp.war!/WEB-INF/web.xml

Special configurations

Runtime parameters

Several runtime parameters can be customized to fit your needs.

Next step

Continue with Usage.

Clone this wiki locally