Skip to main content

How to mavenify a Play 2 application

This article is for developers who want to develop web-apps with Play 2 Framework but are required to integrate these new web-apps in an existing build process based on Maven.

Lucky you, someone already started a project to do this: play2-maven-plugin.
Unfortunately, this Maven plugin does not support hot reloading yet, which makes the development process painful.

To make it short, you still need SBT to enjoy Play 2 hot reloading feature... but you do not want to have to maintain both Maven and SBT configurations.
The trick is to configure SBT from Maven pom files with sbt-pom-reader.

This is how you need to configure your play2-maven project:
<my-maven-project>/
  pom.xml                  <- Your maven build
  build.sbt                <- the sbt Play 2 configuration
  project/
     build.properties      <- the sbt version specification
     build.scala           <- the sbt build definition
     plugins.sbt           <- the sbt plugin configuration

  ..                       <- Whatever files are normally in your maven project.

Each of the files should have the following contents.
pom.xml: @see play2-maven-plugin usage

build.sbt:
play.Project.playJavaSettings //or play.Project.playScalaSettings

project/build.properties:
sbt.version=0.13.0

project/build.scala:
object BuildFromMavenPomSettings extends com.typesafe.sbt.pom.PomBuild

project/plugins.sbt:
addSbtPlugin("com.typesafe.play" % "sbt-plugin" % "2.2.1")

addSbtPlugin("com.typesafe.sbt" % "sbt-pom-reader" % "1.0.1")


Now you can use Maven to build your Play 2 application and SBT to develop it with hot reloading. 

Happy coding!

Source: https://github.com/sbt/sbt/issues/1123

Comments

Popular posts from this blog

IntelliJ IDEA not starting: Initial heap size set to a larger value than the maximum heap size

IntelliJ IDEA didn't want to start this morning. Got the following error when trying to start it from a shell: Error occurred during initialization of VM Initial heap size set to a larger value than the maximum heap size What happened is that IntelliJ IDEA loaded the JVM Options from the new custom vmoptions file in the config directory. On Windows: %APPDATA%\Roaming\JetBrains\IntelliJIdea2020.1\idea64.exe.vmoptions On macOs: ~/Library/Application Support/JetBrains/IntelliJIdea2020.1/idea.vmoptions This file was not updated properly when I updated IntellIJ IDEA. It contained: -Xms4g -Xmx2048m Fixed the issue by editing this file: -Xms4g -Xmx4g Source: https://intellij-support.jetbrains.com/hc/en-us/community/posts/360004701620-idea-vmoptions-not-used-by-default  

VSCode in the Browser: Coder vs Gitpod vs Codespaces

Coder SaaS doesn't seem to be for individuals → "Request Demo". But they have a Setup Guide if you want to give it a try. I didn't as I just want SaaS. N.B.: Differences compared to VSCode? TL;DR: Some extensions might be missing. Gitpod Go to https://gitpod.io/#/https://github.com/<your_repository> and login with your GitHub account. Done! Also works with GitLab. Based on Eclipse Theia which is based on Visual Studio Code . Same as Coder. Some extensions might be missing. Free tier gives you enough to give it a try: 50 hours / months Public Repos Private Repos (30-Day Trial) Codespaces (Preview) Slower setup compared with Gitpod: Register to Microsoft Azure Create a Billing Plan. Timed out the first time Create Codespace Done! Full-fledged Visual Studio Code in the Browser! Freebies : 12 months of popular free services £150 credit to explore Azure for 30 days Azure free account FAQ Pricing. Conclusion I'll try both Gitpod and Codespaces in the upcoming w

Seneca - On the Shortness of Life

It is not that we have a short time to live, but that we waste a lot of it. Life is long if you know how to use it. It is a small part of life we really live [...] all the rest is not life but merely time. People are frugal in guarding their personal property; but as soon as it comes to squandering time they are most wasteful of the one thing in which it is right to be stingy. For suppose you should think that a man had had a long voyage who had been caught in a raging storm as he left harbour, and carried hither and thither and driven round and round in a circle by the rage of opposing winds? He did not have a long voyage, just a long tossing about. Putting things off is the biggest waste of life: it snatches away each day as it comes, and denies us the present by promising the future. [...] You are arranging what lies in Fortune's control, and abandoning what lies in yours. [...] The whole future lies in uncertainty: live immediately. Life&#